← К каталогу
Исходный код · ID 2421

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 и перейдите к оплате.

Стоимость полного кода
1 298,70₽ ≈ $15.87