0
Последовательность сделок сначала на первой валютной паре, потом на второй.
Вторая пара включается когда на первое сработал хеджирующий лот.


сделал:


//+------------------------------------------------------------------+
//|                                                        Petro.mq5 |
//|                                             Copyright 2024, AM2. |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, AM2."
#property link      "http://www.forexsystems.biz"
#property version   "1.00"

#include <Trade\Trade.mqh>            // Подключаем торговый класс CTrade

//--- входные параметры группы 1
input double   Lot1      = 1;         // лот 1
input double   Lot2      = 0.5;       // лот 2
input double   Profit    = 11;        // Профит в валюте

input string   Symb1     = "EURUSD";  // 1-й символ
input string   Symb2     = "GBPUSD";  // 2-й символ

input int      Step      = 333;       // шаг
input int      Slip      = 30;        // Проскальзывание

CTrade trade;                         // Используем торговый класс CTrade
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(string symb="")
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb || PositionGetString(POSITION_SYMBOL)==NULL)
           {
            trade.PositionClose(PositionGetTicket(i),Slip);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  Position Profit                                                 |
//+------------------------------------------------------------------+
double AllProfit(string symb="")
  {
   double p=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb || PositionGetString(POSITION_SYMBOL)==NULL)
           {
            p+=PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_SWAP);
           }
        }
     }

   return(p);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(string symb)
  {
   int count=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb || PositionGetString(POSITION_SYMBOL)==NULL)
           {
            if(OrderGetInteger(ORDER_TYPE)<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FindLastBuyPrice(string symb)
  {
   double pr=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)) && PositionGetInteger(POSITION_TYPE)==0)
        {
         if(PositionGetString(POSITION_SYMBOL)==symb)
           {
            pr=PositionGetDouble(POSITION_PRICE_OPEN);
            break;
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|  Position Profit                                                 |
//+------------------------------------------------------------------+
int PositionType(string symb)
  {
   int type=8;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb)
           {
            type=(int)PositionGetInteger(POSITION_TYPE);
            break;
           }
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trade(string symb)
  {
   double pr=0;
   double ask=SymbolInfoDouble(symb,SYMBOL_ASK);
   double bid=SymbolInfoDouble(symb,SYMBOL_BID);
   int dg=(int)SymbolInfoInteger(symb,SYMBOL_DIGITS);
   double pp=SymbolInfoDouble(symb,SYMBOL_POINT);

   if(CountTrades(Symb1)<1)
     {
      pr=NormalizeDouble(ask,dg);
      trade.Buy(Lot1,Symb1,pr,0,0,"");
     }

   if(CountTrades(Symb2)<1 && CountTrades(Symb1)>1)
     {
      pr=NormalizeDouble(ask,dg);
      trade.Buy(Lot1,Symb2,pr,0,0,"");
     }

   if(CountTrades(symb)>0 && CountTrades(symb)<2)
     {
      if(PositionType(symb)==0 && (FindLastBuyPrice(symb)-ask)/pp>=Step)
        {
         trade.Buy(Lot2,symb,ask,0,0);
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Symb1!="")
      Trade(Symb1);

   if(Symb2!="")
      Trade(Symb2);

   if(AllProfit(NULL)>Profit)
      CloseAll(NULL);

   if(AllProfit(Symb1)>Profit)
      CloseAll(Symb1);

   if(AllProfit(Symb2)>Profit)
      CloseAll(Symb2);
  }
//+------------------------------------------------------------------+



но так хуже идет:

avatar

AM2

  • 30 августа 2024, 10:02
0
Если будет Хеджировать ордерами селл будет очень.

в тз про селл нет ни слова
avatar

AM2

  • 30 августа 2024, 09:57
+1
добавил 2 ордера и трал. тейк на одном фиксированный на другом 0: www.opentraders.ru/downloads/3889/

avatar

AM2

  • 29 августа 2024, 10:43
0
определяйтесь дальше )
avatar

AM2

  • 29 августа 2024, 10:16
+2
добавил выставление стопа на границу канала для сработавшего ордера:

avatar

AM2

  • 29 августа 2024, 10:11
0
закрытие по профиту идет когда?

1. общий профит по обеим парам
2. профит по одной из пар

так?

какие условия для открытия позиции по паре?
avatar

AM2

  • 29 августа 2024, 09:51
0
стоп-лось — что это?
avatar

AM2

  • 29 августа 2024, 09:47
+2
пока сделал набросок, по ренко чтобы вы определились со всем остальным: www.opentraders.ru/downloads/3889/



и помните, чем проще будет задание тем выше у вас шансы получить советник в готовом виде
avatar

AM2

  • 28 августа 2024, 19:28
0
вроде бы начал делать, но при тестировании такое месиво:



удалил и с рабочего все
avatar

AM2

  • 27 августа 2024, 09:55
+1
на работе вчера ставил. касперский какую то бяку начал находить!

avatar

AM2

  • 27 августа 2024, 09:09
0
перестал работать принт скрин. сразу все удалил
avatar

AM2

  • 26 августа 2024, 19:26
0
там у вас целый букет библиотек. что там зашито?
avatar

AM2

  • 26 августа 2024, 19:20
0
индикатор не отображается. на графике пусто
avatar

AM2

  • 26 августа 2024, 19:19
0
тогда по скрину что выше


при появлении стрелки зигзаг может выть где угодно а не как у вас
avatar

AM2

  • 26 августа 2024, 15:30
0
может и если не подойдет
avatar

AM2

  • 26 августа 2024, 15:19
0
По названиям линий нельзя разве сделать?
скрыты
avatar

AM2

  • 26 августа 2024, 15:17
0
стоп примерно 1.3*(hi-lo)
тейк в 5 раз больше
avatar

AM2

  • 26 августа 2024, 10:27
0
пож-та можно ли сделать советник по индикатору, чтобы при открытии ордера TP и SL выставлялся по линиям


можно, если вам известна формула для расчета линий :) 
avatar

AM2

  • 26 августа 2024, 10:18
0
просто конвертировать можно, если нужно :) 
avatar

AM2

  • 26 августа 2024, 10:03