Trend SR Signal EA
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «trend sr signal ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Trend SR Signal EA — советник для MetaTrader 4, который отслеживает множество валютных пар и отображает торговую информацию на информационной панели. Он рассчитывает и показывает статистику по открытым ордерам, историю сделок (прибыль, коэффициент выигрыша, profit factor), а также поддерживает функцию трейлинг-стопа для управления позициями.
Советник создаёт дашборд с данными о балансе, эквити, марже, открытых ордерах и их соотношении риск/прибыль. Пользователь может кликнуть по элементам интерфейса для открытия графика соответствующей пары с применением заданного шаблона. Поддерживается фильтрация по новостям через подключаемый модуль.
В состав входят собственные библиотеки для работы с парами, стратегией, GUI-компонентами и статистикой сделок. Советник корректно обрабатывает события тиков и взаимодействия с графиком, обновляя панель и данные ордеров в реальном времени.
Настройки программы
| Настройка | Описание |
|---|---|
| __chartTemplate | Разделитель группы шаблона графика — Текстовый разделитель-заголовок группы настроек шаблона графика. |
| ChartTemplate | Шаблон графика — Имя файла шаблона графика, применяемого при открытии графика валютной пары. |
Поиск по коду файла
#property version "2.10"
#property strict
string version = "2.10";
extern string __chartTemplate = " ------- Chart template ------------";
extern string ChartTemplate = "Trend SR Signal.tpl";
#include <CPair.mqh>
#include <CTrailingStop.mqh>
#include <CGui.mqh>
#include <CInfoPanel.mqh>
#include <CTradesStats.mqh>
#include <CMrdFxStrategy.mqh>
CNewsFilter* _newsFilter;
CTradeStats* _tradeStats;
CInfoPanel* _infoPanel = NULL;
CLabel* _labelTitle;
CLabelKeyValue* _labelBalance;
CLabelKeyValue* _labelEquity;
CLabelKeyValue* _labelFreeMargin;
CLabelKeyValue* _labelMargin;
CLabelKeyValue* _labelGlobalOrders;
CLabelKeyValue* _labelGlobalProfit;
CLine* _line1;
CLabelKeyValue* _labelOrders ;
CLabelKeyValue* _labelOrdersBuySell;
CLabelKeyValue* _labelProfitBuySell;
CLabelKeyValue* _labelProfit;
CLine* _line3;
CLabelKeyValue* _labelTotalTrades;
CLabelKeyValue* _labelOrdersWonLost;
CLine* _line4;
CLabelKeyValue* _labelProfitToday;
CLabelKeyValue* _labelProfitYesterday;
CLabelKeyValue* _labelProfitAllTime;
CLabelKeyValue* _labelProfitFactor;
CLabelKeyValue* _labelExpectedPayOff;
CLine* _line5;
CLabelKeyValue* _labelTotalLotsTraded;
CLabelKeyValue* _labelAverageLotsPerTrade;
CPair* _pairs[];
int _pairCount=0;
void Clear()
{
bool deleted = false;
do {
deleted = false;
for (int i = 0; i < ObjectsTotal(); ++i)
{
string name = ObjectName(0, i);
if (StringSubstr(name, 0, 1) == "_")
{
ObjectDelete(0, name);
deleted = true;
break;
}
}
} while (deleted);
}
void SetupPanel()
{
_infoPanel = new CInfoPanel(380, 300);
_labelTitle = new CLabel();
_labelBalance = new CLabelKeyValue("Balance",150);
_labelEquity = new CLabelKeyValue("Equity",150);
_labelFreeMargin = new CLabelKeyValue("Free margin",150);
_labelMargin = new CLabelKeyValue("Margin",150);
_labelGlobalOrders = new CLabelKeyValue("Global Open Orders",150);
_labelGlobalProfit = new CLabelKeyValue("Global Profit/Loss",150);
_line1 = new CLine();
_labelOrders = new CLabelKeyValue("Open Orders",150);
_labelOrdersBuySell = new CLabelKeyValue(" buy/sell",150);
_labelProfitBuySell = new CLabelKeyValue(" P/L buy/sell",150);
_labelProfit = new CLabelKeyValue("Profit/Loss",150);
_line3 = new CLine();
_labelTotalTrades = new CLabelKeyValue("Trades",150);
_labelOrdersWonLost = new CLabelKeyValue("Won/Lost",150);
_line4 = new CLine();
_labelProfitToday = new CLabelKeyValue("Profit today",150);
_labelProfitYesterday = new CLabelKeyValue("Profit yesterday",150);
_labelProfitAllTime = new CLabelKeyValue("All time profit",150);
_labelProfitFactor = new CLabelKeyValue("Profit factor",150);
_labelExpectedPayOff = new CLabelKeyValue("Expected payoff",150);
_line5 = new CLine();
_labelTotalLotsTraded = new CLabelKeyValue("Total lots traded",150);
_labelAverageLotsPerTrade= new CLabelKeyValue("Average lots/trade",150);
_labelTitle.Text="--- Trend SR Signal EA v"+version+" --- ";
_labelTitle.FontSize = 10;
_line1.X = 0;
_line1.Width = 380;
_line3.X = 0;
_line3.Width = 380;
_line4.X = 0;
_line4.Width = 380;
_line5.X = 0;
_line5.Width = 380;
_infoPanel.SetPosition(840,20);
_infoPanel.Add(_labelTitle, 70, 5);
_infoPanel.Add(_labelBalance, 20, 10);
_infoPanel.Add(_labelEquity, 20, 0);
_infoPanel.Add(_labelFreeMargin, 20, 0);
_infoPanel.Add(_labelMargin, 20, 0);
_infoPanel.Add(_labelGlobalOrders, 20, 0);
_infoPanel.Add(_labelGlobalProfit, 20, 0);
_infoPanel.Add(_line1, 0, 5);
_infoPanel.Add(_labelOrders, 20, -10);
_infoPanel.Add(_labelOrdersBuySell, 20, 0);
_infoPanel.Add(_labelProfitBuySell, 20, 0);
_infoPanel.Add(_labelProfit, 20, 0);
_infoPanel.Add(_line3, 0, 5);
_infoPanel.Add(_labelTotalTrades, 20, -10);
_infoPanel.Add(_labelOrdersWonLost, 20, 0);
_infoPanel.Add(_line4, 0, 5);
_infoPanel.Add(_labelProfitToday, 20, -10);
_infoPanel.Add(_labelProfitYesterday, 20, 0);
_infoPanel.Add(_labelProfitAllTime, 20, 0);
_infoPanel.Add(_labelProfitFactor, 20, 0);
_infoPanel.Add(_labelExpectedPayOff, 20, 0);
_infoPanel.Add(_line5, 0, 5);
_infoPanel.Add(_labelTotalLotsTraded, 20, -10);
_infoPanel.Add(_labelAverageLotsPerTrade,20, 0);
_infoPanel.Update();
}
static int _line=0;
void OpenChart(string pair)
{
ulong chartId = ChartOpen(pair, Period());
ChartApplyTemplate(chartId, ChartTemplate);
}
void Draw(int line, int column, string text, color clr, int xoff=0)
{
string id="_l"+IntegerToString(line)+"c"+IntegerToString(column);
double x= column==0 ? 20 : (column*70+35);
if (_line ==0 && column > 0) x=x-10;
ObjectCreate(0,id,OBJ_LABEL,0,0,0);
ObjectSetInteger(0,id,OBJPROP_XDISTANCE, ((int)x)+xoff);
ObjectSetInteger(0,id,OBJPROP_YDISTANCE,_line*17+20);
ObjectSetString(0,id,OBJPROP_TEXT,text);
ObjectSetString(0,id,OBJPROP_FONT,"Courier New");
ObjectSetInteger(0,id,OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER);
ObjectSetInteger(0,id,OBJPROP_FONTSIZE,10);
ObjectSetInteger(0,id,OBJPROP_COLOR,clr);
}
void DrawWingDings(int line, int column, string text, color clr, int xoff=0)
{
string id="_l"+IntegerToString(line)+"c"+IntegerToString(column);
double x= column==0 ? 20 : (column*70+30);
ObjectCreate(0,id,OBJ_LABEL,0,0,0);
ObjectSetInteger(0,id,OBJPROP_XDISTANCE, ((int)x)+xoff );
ObjectSetInteger(0,id,OBJPROP_YDISTANCE,_line*17+23);
ObjectSetString(0,id,OBJPROP_TEXT,text);
ObjectSetString(0,id,OBJPROP_FONT,"WingDings");
ObjectSetInteger(0,id,OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER);
ObjectSetInteger(0,id,OBJPROP_FONTSIZE,10);
ObjectSetInteger(0,id,OBJPROP_COLOR,clr);
}
void DrawRect(int line, int xPos,color clr, int width, int height=17)
{
string id="_l"+IntegerToString(line)+"c"+IntegerToString(xPos);
ObjectCreate(0,id,OBJ_RECTANGLE_LABEL,0,0,0);
ObjectSetInteger(0,id,OBJPROP_XDISTANCE, xPos);
ObjectSetInteger(0,id,OBJPROP_YDISTANCE,_line*17+22);
ObjectSetInteger(0,id,OBJPROP_BGCOLOR,clr);
ObjectSetInteger(0,id,OBJPROP_XSIZE, width);
ObjectSetInteger(0,id,OBJPROP_YSIZE, 17);
ObjectSetInteger(0,id, OBJPROP_BACK, true);
ObjectSetInteger(0,id, OBJPROP_WIDTH,0);
}
void DrawText(int line, int xPos, string text, color clr)
{
string id="_l"+IntegerToString(line)+"c"+IntegerToString(xPos);
ObjectCreate(0,id,OBJ_LABEL,0,0,0);
ObjectSetInteger(0,id,OBJPROP_XDISTANCE, xPos);
ObjectSetInteger(0,id,OBJPROP_YDISTANCE,_line*17+20);
ObjectSetString(0,id,OBJPROP_TEXT,text);
ObjectSetString(0,id,OBJPROP_FONT,"Courier New");
ObjectSetInteger(0,id,OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER);
ObjectSetInteger(0,id,OBJPROP_FONTSIZE,10);
ObjectSetInteger(0,id,OBJPROP_COLOR,clr);
}
void RefreshPairs()
{
for(int i = 0; i < _pairCount; ++i)
{
_pairs[i].Refresh();
}
}
void DrawPairs()
{
if (IsTesting() || IsOptimization()) return;
Clear();
_line=0;
Draw(_line, 0, "v"+version +" "+_utils.GetTimeFrame(Period())+ " Last update: " + TimeToStr(TimeCurrent()),Gold);
_line=2;
if (_pairCount > 0)
{
_pairs[0].DrawHeader();
int maxSignals = _pairs[0].GetMaxSignalCount();
for (int signals = maxSignals; signals >= 1; signals--)
{
for(int idx = 0; idx < _pairCount; ++idx)
{
if (_pairs[idx].SignalCount() == signals)
{
_pairs[idx].Draw(_line);
_line++;
}
}
}
}
}
void DrawOpenOrders()
{
if (IsTesting() || IsOptimization()) return;
_line++;
Draw(_line, 0, "Opened", Gold);
Draw(_line, 2, "Symbol", Gold);
Draw(_line, 3, "Type", Gold);
Draw(_line, 4, "Lots", Gold, 0);
Draw(_line, 5, "Entry", Gold, 0);
Draw(_line, 6, "S/L (pips)", Gold, 40);
Draw(_line, 7, "Profit", Gold, 60);
Draw(_line, 8, "Pips", Gold, 80);
Draw(_line, 9, "R:R", Gold, 80);
_line++;
for (int i = 0; i < OrdersTotal(); ++i)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMПоказано первые 50% кода (символов: 12987)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.