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

Рейтинг 2093



РЕКОМЕНДУЮ



советник для MT 4 . попытка для выхода в плюс из сделки переворотом .OVERTURN 1.mq4

popitka dlya vihoda v plyus iz sdelki perevorotom .OVERTURN 1.mq4 (15 Kb)

здоровья и удачи! спасибо за то что вы делаете — помогаете — в написании помощников для торгов!

если коротко то пока ждал 3 уровня сидел и пересматривал то что уже на сайте

и собрал советник для мт 4

примерно что хотел НО СОБРАЛ НЕ ПОНИМАЯ И НЕ УМЕЯ ПРОГРАМИРОВАТЬ

просьба проверить и добавить нужное или убрать лишнее.

и так суть: вход в ручную или в селл или в бай не важно. нет не тейков ни стопов — ставлю в ручную.

советник выставляет противоположный ордер увеличенный на коэффициент на определенное количество пунктов. если ордера зашли в + и закрыл то удаляет отложенник.

сделал ограничение ордеров в серии но не работает как надо выставляет до бесконечности. если закрываю несколько ордеров в одну сторону то не выставляет отложеники

очень хотелось бы чтобы советник видел разницу в ордерах на бай и селл ВСЕГДА и выставлял отложенный ордер на разницу. заранее спасибо за помощь.

//+------------------------------------------------------------------+
//|  попытка для выхода в плюс из сделки переворотом .OVERTURN 1.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                              пробуем попытка номер 555555555.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//--- Inputs
extern double Lots       = 0.2;      //       коофециент увеличения противоположного ордера
extern int Delta         = 150;     //       расстояние от цены
extern int BuySell       =   0;      //       1-buy 2-sell 0-off
extern int Slip          =  30;      //           реквот
extern int Magic         =   0;      //           магик



extern int     SellMaxTrades= 1;    // Максимальное количество открытых ордеров Sell  в серии 



extern int     buyMaxTrades= 1;    // Максимальное количество открытых ордеров buy  в серии




//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Установка ордера                                                 |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()<2)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double MarketOOP()
  {
   double oop=0;

   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderType()<2)
         oop=OrderOpenPrice();
     }

   return(oop);
  }
  
  
  //+------------------------------------------------------------------+
int CountSellOrder() // сколько в рынке ордеров на SELL
{
   int count = 0;
   for (int i=OrdersTotal()-1; i >= 0; i--)
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         if (OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
         {
            if (OrderType() == OP_SELL) count++;
         }
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
int CountBuyOrder() // сколько в рынке ордеров на BUY
{
   int count = 0;
   for (int i=OrdersTotal()-1; i >= 0; i--)
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         if (OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
         {
            if (OrderType() == OP_BUY) count++;
         }
      }
   }
   return(count);
}
//+------------------------------------------------------------------+


 //+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==type) count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Подсчет лота ордеров по типу                                     |
//+------------------------------------------------------------------+
double CountLots(int type)
  {
   double count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==type) count+=OrderLots();
        }
     }
   return(count);
  }

//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder(int type=-1)
  {
   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 || type==-1)
               del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double MarketLot()
  {
   double lot=0;

   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderType()<2)
         lot=OrderLots();
     }

   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(Lots==0)
      lot=MarketLot();

   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastType()
  {
   int type=8;

   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderType()<2)
         type=OrderType();
     }

   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double StopOOP()
  {
   double oop=0;

   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderType()>1)
         oop=OrderOpenPrice();
     }

   return(oop);
  }
  
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      DelOrder();
      if(BuySell==1)
         PutOrder(0,Ask);
      if(BuySell==2)
         PutOrder(1,Bid);
     }

   if(MarketOOP()>0 && StopOOP()!=NormalizeDouble(MarketOOP()-Delta*_Point,_Digits) && LastType()==0)
      PutOrder(5,MarketOOP()-Delta*_Point);
   if(MarketOOP()>0 && StopOOP()!=NormalizeDouble(MarketOOP()+Delta*_Point,_Digits) && LastType()==1)
      PutOrder(4,MarketOOP()+Delta*_Point);
  }
//+---------------------------------------------------------------





  • 0
  • Просмотров: 2071
  • 15 августа 2021, 05:12
  • eduard9898
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Индикатор уровней
13 августа 2021
16 августа 2021

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

+
0
ПРОСТЬБА ОТРЕДАКТИРОВАТЬ эти пункты

сделал ограничение ордеров в серии но не работает как надо выставляет до бесконечности. если закрываю несколько ордеров в одну сторону то не выставляет отложеники

очень хотелось бы чтобы советник видел разницу в ордерах на бай и селл ВСЕГДА и выставлял отложенный ордер на разницу. заранее спасибо за помощь.

и очень хочется с объяснением как это должно работать.
Редактирован: 15 августа 2021, 06:06
avatar

  6  eduard9898 Автор Сообщений: 80

  • 15 августа 2021, 06:03
+
0
все подробно на скринах покажите
avatar

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

  • 15 августа 2021, 14:29
+
0
ок. пару дней возьмет т.к в наличии нет.
avatar

  6  eduard9898 Автор Сообщений: 80

  • 15 августа 2021, 19:51
+
0
avatar

  6  eduard9898 Автор Сообщений: 80

  • 16 августа 2021, 00:44
+
0


когда по одному ставлю в начале все ок. т.е ордер в ручную отложенный срабатывает и все как положенно а вот когда больше начинается проблеммы
Редактирован: 16 августа 2021, 00:51
avatar

  6  eduard9898 Автор Сообщений: 80

  • 16 августа 2021, 00:47
+
0




советник работает как сам хочет.т.е если можно добавить чтобы он считывал разницу всегда на любое количество ордеров.Андрей можно так обращаться? я собирал свое чудо из вами написанных советников но я в програмировании ноль — может что лишнее сделал.
Редактирован: 16 августа 2021, 01:17
avatar

  6  eduard9898 Автор Сообщений: 80

  • 16 августа 2021, 00:52
+
0
вы не те скрины выкладываете. нужны сделки и ордера на графике. последовательность установки, удаления и др.
avatar

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

  • 18 августа 2021, 20:54
+
0


на селл все ок на бай нет
Редактирован: 16 августа 2021, 01:35
avatar

  6  eduard9898 Автор Сообщений: 80

  • 16 августа 2021, 01:28
+
0


сейчас по одному буду делать.
avatar

  6  eduard9898 Автор Сообщений: 80

  • 16 августа 2021, 08:29
+
0


первый ордер в бай — отложенный в 3 раза на 15 пунктов — все как надо.
avatar

  6  eduard9898 Автор Сообщений: 80

  • 16 августа 2021, 08:35
+
0


иили на селл тоже все ок
avatar

  6  eduard9898 Автор Сообщений: 80

  • 16 августа 2021, 11:00
+
0


не выставляет отложенный на разницу
avatar

  6  eduard9898 Автор Сообщений: 80

  • 16 августа 2021, 13:13
+
0
Думаю вас об этом просили на скринах показать:
и так суть: вход в ручную или в селл или в бай не важно. нет не тейков ни стопов — ставлю в ручную.

советник выставляет противоположный ордер увеличенный на коэффициент на определенное количество пунктов. если ордера зашли в + и закрыл то удаляет отложенник.
Просто составьте ТЗ и лучше с рисунками
Редактирован: 16 августа 2021, 16:30
avatar

  12  Slava78 Сообщений: 598

  • 16 августа 2021, 16:29
+
0
так основная проблема что он не всегда выставляет отложенники то да то нет



avatar

  6  eduard9898 Автор Сообщений: 80

  • 16 августа 2021, 17:29
+
0
если что то не хватает для объяснения с удовольствием добавлю.
avatar

  6  eduard9898 Автор Сообщений: 80

  • 17 августа 2021, 05:13
+
0
не хватает подробных скринов с пояснениями к каждому пункту тз
avatar

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

  • 18 августа 2021, 18:06
комментарий был удален 2021-08-19 04:43:57 eduard9898

+
0


ок. попробую по порядку.

1. вход в рынок в ручную в любую сторону.(первый ордер)
2. при входе советник должен выставлять противоположный ордер увеличенный на коэффициент.(второй ордер)
3. при срабатывании второго ордера выставлять противоположный (третий ордер )
4.и так далее при срабатывании 3 ордера открывается 4 и 5 и т.д советник должен контролировать разницу в баях и селлах и выстовлять отложеник.
5.это буду называть серия и она должна быть ограничена допустим 5 баев и 5 селлов


6.но если серия закончилась и я открываю любую часть замка то должен выставляется отложеник на разницу.
7.нет не стопов не тейков


Редактирован: 19 августа 2021, 05:23
avatar

  6  eduard9898 Автор Сообщений: 80

  • 19 августа 2021, 04:50

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