LeonidPetr

 
Уровень 2

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2087



РЕКОМЕНДУЮ



Доработка советника

Добрый день, нужна помощь… очень
Возникла потребность добавить ордер в связку двух ордеров — отрытый ордер и отложенный в отработку в противоположную сторону.
Хотелось бы, чтобы, при срабатывании отложенного выставлялся еще один ордер хеджирующий открывшийся отложенный.
OP_BUY лот 0.1
OP_SELLSTOP лот 0.6
после срабатывания OP_SELL на 30 пунктов выставить OP_BUYSTOP лот 0.6

Заранее большое спасибо, кто откликнется
  • 0
  • Просмотров: 1595
  • 25 декабря 2020, 21:47
  • LeonidPetr
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Вот он
Следующая запись в группе  
Trading robot MultiChart.mq5
25 декабря 2020
27 декабря 2020

Комментарии (18)

+
0
ищи поручителя
avatar

  22  igrun Сообщений: 1572 - igrun

  • 25 декабря 2020, 21:49
комментарий был удален 2020-12-26 00:12:01 LeonidPetr

+
0
в смысле?
avatar

  2  LeonidPetr Автор Сообщений: 22

  • 25 декабря 2020, 21:53
+
+1
Вы не читали правила данного ресурса.
Говоря простым языком, есть градация ЛВЛ-ов.
Пока у участника данного ресурса нет 3-го ЛВЛ-а, то его заявка на написание кода в столе заказов не будет рассмотрена.
На данный момент Вы можете подать заявку на написание кода (что Вы и сделали), но только при наличии поручителя, имеющего 3-ий ЛВЛ или выше, она будет рассмотрена.

Данные правила просто посылают на#ер таких говнюков типа Вас, которые ни разу не намерены участвовать в жизни ресурса, сами палец о палец не ударили, но хотят получить какой-то код на халяву.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 25 декабря 2020, 22:34
+
0
как говнюк говнюку отвечу тебе… я сюда не за халявным кодом пришел, как ты выразился… я задал вопрос в другой плоскости… удачи тебе… она тебе очень нужна, ибо, как я понимаю, тебя жизнь жестоко обделила
avatar

  2  LeonidPetr Автор Сообщений: 22

  • 26 декабря 2020, 00:12
+
+1
Я тебя ни разу в чате не увижу.
Ты реально за халявным написанием пришёл.
Я на таких уже насмотрелся.
Даже не десятки таких тут были.
Я всё сказал верно.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 26 декабря 2020, 01:32
+
0
делал недавно подобный: www.opentraders.ru/downloads/2879/
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 25 декабря 2020, 22:34
+
0
спасибо
У вас ручное выставление, я вижу.
Мне собственно, идея нужна… или логическая мысль.
Я через магический номер пытаюсь, но запутался и зашел в тупик…
Поэтому и обратился сюда.
Сам советник я написал, и он отлично работает на полном автомате на любой паре.
Но я хочу, уменьшить потери на стоп-лосе.
Надо воткнуть локирующий ордер после срабатывания отложенного.
avatar

  2  LeonidPetr Автор Сообщений: 22

  • 26 декабря 2020, 00:02
+
0
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 26 декабря 2020, 16:22
+
0
Ну в канун Нового года! Выступаю поручителем. ))))
avatar

  18  GAWroch Сообщений: 84 - Вячеслав

  • 26 декабря 2020, 00:31
+
0
спасибо))
avatar

  2  LeonidPetr Автор Сообщений: 22

  • 26 декабря 2020, 02:10
+
0
У вас ручное выставление, я вижу.
Мне собственно, идея нужна… или логическая мысль.
Я через магический номер пытаюсь, но запутался и зашел в тупик…
Поэтому и обратился сюда.


на скринах все покажите полный цикл. открыли закрыли поставили отложку и т.д.
или на примере готового что поправить напишите
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 27 декабря 2020, 09:57
+
0


<code>
  (На рис. это 1)       if(OPB1==1)
                    {
                     operation=1;if(operation==1 &&OrderSymbol()!=Symbol()||OrdersTotal()==0)
                      OrderSend(Symbol(),OP_BUY,lots,Ask,0,Bid-ss*Point,Ask+T*Point,"My order#",mn,sl,Green);
        
  (На рис. это 2)   if(operation==1 &&OrderSymbol()!=Symbol()||OrdersTotal()==1)
        OrderSend(Symbol(),OP_SELLSTOP,Lot,SstopOpen,0,SstopOpenLoss,SstopClose,"My order#",Mn,sl,Red);}
        
        int count=0;
   for(int ii=OrdersTotal()-1; ii>=0; ii--)
     {
      if(OrderSelect(ii,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Mn)
           {
            if(OrderType()<5)count++;OrderTicket();
           }
         }
      }
 
      
       double OPSS=OrderOpenPrice();
           
  (На рис. это 4) if(count==1)
                              {
                               if(operation==1 &&OrderSymbol()!=Symbol()||OrdersTotal()==2)      
                  OrderSend(Symbol(),OP_BUYSTOP,Lot,Ask+20*X*Point,0,Bid-30*X*Point,Ask+30*X*Point,"My order#",Mn,0,Green);
                               }</code>

5 и 6 -> соответственно STOP LOSS по OP_BUY и TAKE PROFIT по OP_SELLSTOP

Мне хотелось бы, чтобы ордер #4 выставлялся по цене отложенного ордера #2, а не по Ask
Как сделать, чтобы советник видел цену этого ордера и выставлял ордера по этой цене, даже после закрытия по профиту #4
Редактирован: 27 декабря 2020, 22:00
avatar

  2  LeonidPetr Автор Сообщений: 22

  • 27 декабря 2020, 21:27
комментарий был удален 2020-12-27 21:52:29 LeonidPetr

+
0
Мне хотелось бы, чтобы ордер #4 выставлялся по цене отложенного ордера #2, а не по Ask
Как сделать, чтобы советник видел цену этого ордера и выставлял ордера по этой цене, даже после закрытия по профиту #4


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

  34  AM2 Сообщений: 15880 - Андрей

  • 30 декабря 2020, 20:23
+
0
сделал набросок который выставляет отложки по краям канала и стоповые вместо лося:


//+------------------------------------------------------------------+
//|                                                     HighLow3.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lot1       = 0.1;      // лот 1
extern double Lot2       = 0.5;      // лот 2
extern double Profit     = 10;       //
extern int StopLoss      = 300;      // лось
extern int TakeProfit    = 100;      // язь
extern int Expiration    = 20;       // истечение
extern int Count         = 10;       // баров для расчета
extern int Slip          = 0;        // реквот
extern int Magic         = 123;      // магик

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type || type==-1)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder(int type)
  {
   bool del;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type)
               del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
  {
   double pr=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int r=0;
   double lo=Low[iLowest(NULL,0,MODE_LOW,Count,1)];
   double hi=High[iHighest(NULL,0,MODE_HIGH,Count,1)];

   if(CountTrades()>1 && AllProfit()>Profit)
      CloseAll();

   if(Bid<hi && Bid>lo && CountOrders()<1)
     {
      r=OrderSend(NULL,4,Lot1,hi,0,0,hi+TakeProfit*_Point,"",Magic,TimeCurrent()+Expiration*3600,Blue);
      r=OrderSend(NULL,5,Lot2,hi-StopLoss*_Point,0,0,0,"",Magic,TimeCurrent()+Expiration*3600,Red);

      r=OrderSend(NULL,5,Lot1,lo,0,0,lo-TakeProfit*_Point,"",Magic,TimeCurrent()+Expiration*3600,Red);
      r=OrderSend(NULL,4,Lot2,lo+StopLoss*_Point,0,0,0,"",Magic,TimeCurrent()+Expiration*3600,Blue);
     }
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 30 декабря 2020, 21:00
+
0
спасибо большое… буду пробовать… позже отвечу о результатах
avatar

  2  LeonidPetr Автор Сообщений: 22

  • 30 декабря 2020, 21:53
+
0
*relax* 
Я тебя ни разу в чате не увижу.
Ты реально за халявным написанием пришёл.
Я на таких уже насмотрелся.
Даже не десятки таких тут были.
Я всё сказал верно.

8-) Я всё сказал верно*spokuha* 
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 13 февраля 2021, 13:58

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари