oyama
Александр

 
Уровень 17

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


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

Рейтинг 2081



РЕКОМЕНДУЮ




Лучшее от oyama



Путь самурая Комментариев 2
2015-10-10 12:41:01Рейтинг 0

Просто совпадения ? Комментариев 11
2016-10-31 18:38:17Рейтинг 0

Неделя Комментариев 4
2015-08-28 11:12:33Рейтинг 0

Три сына. Комментариев 1
2015-09-11 11:43:15Рейтинг 0

Кросс на кроссе. Комментариев 2
2015-10-30 09:08:13Рейтинг 0

Скрипт , удаления отложенных ордеров.

Добрый день. Анрей, назрела необходимость в следующем скрипте.( Нужен именно скрипт, что бы выполнял задачу единоразово.)
При срабатывании одного из отложенных ордеров, удалять другие отложенные. со следующими условиями:

* ClosePending *

Магик… ( если 0 то удаляются любые отлоги, с любым магиком и выставленные в ручную )
1-Удалить все отложенные ордера true/false
2-удалить все BuyStop true/false
3-удалить все BuyLimit true/false
4-удалить все SellStop true/false
5-удалить все SellLimit true/false

Соответственно, если будет задан магик и, к примеру, удалить все BuyLimit и SellStop, то удаляются только ордера с этим магиком, другие ордера той же категории но с другими магиками или выставленные в ручную остаются. Да и хотелось бы видеть на графике, например, в левом нижнем углу, сообщение, что скрипт находится в работе, и когда он закончит алгоритм, сообщение бы удалялось.
Спасибо.
  • 0
  • Просмотров: 3304
  • 9 апреля 2017, 13:34
  • oyama
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Другие открытые позы по символу или на других парах будут в это время?
avatar

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

  • 9 апреля 2017, 13:40
+
0
Да будут и по символу, и на других парах.Работать должен только на той паре, куда закидывается.
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 9 апреля 2017, 13:45
+
0
Завтра буду смотреть.
avatar

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

  • 9 апреля 2017, 15:58
+
0
Пока только набросок и не в виде скрипта а в виде советника т.к. сначала необходимо смоделировать ситуацию в рынке для тестера отладить все как следует.

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




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

input bool All=true;
input bool BS=true;
input bool BL=true;
input bool SS=true;
input bool SL=true;
input int  Magic=123;

//+------------------------------------------------------------------+
//| 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;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,0.1,NormalizeDouble(price,Digits),0,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder()
  {
   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()>1 && All) del=OrderDelete(OrderTicket());
            if(OrderType()==2 && BL) del=OrderDelete(OrderTicket());
            if(OrderType()==3 && SL) del=OrderDelete(OrderTicket());
            if(OrderType()==4 && BS) del=OrderDelete(OrderTicket());
            if(OrderType()==5 && SS) del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders()
  {
   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()>1) count++;
           }
        }
     }
   return(count);
  }
  //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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()
  {
   if(CountTrades()>0)
     {
      DelOrder();
     }

   if(OrdersTotal()<1 && IsTesting())
     {
      for(int i=1;i<6;i++)
        {
         PutOrder(2,Bid-300*Point*i);//buylimit
         PutOrder(3,Bid+300*Point*i);//selllimi
         PutOrder(4,Bid+600*Point*i);//buystop
         PutOrder(5,Bid-600*Point*i);//sellstop  
        }
     }

   Comment("\n Orders: ",CountOrders());
  }
//+------------------------------------------------------------------+



avatar

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

  • 10 апреля 2017, 21:04
+
0
как понять -" Вариант учетом с уменьшения количества отлог у меня не прошел.". как их уменьшаем?
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 10 апреля 2017, 21:09
+
0
Делал так: Считал отложки и как только их становится на 1 меньше значит сработал ордер и надо удалять. так не работает.


   if(lastorders!=CountOrders())
     {
      DelOrder();
      lastorders=CountOrders();
     }
avatar

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

  • 10 апреля 2017, 21:12
+
0
т.е. при срабатывании отложки, ничего не удаляется?
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 10 апреля 2017, 21:14
+
0
вы посмотрите набросок хотя бы для начала. если все устроит переделаю на скрипт.
avatar

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

  • 10 апреля 2017, 21:16
+
0
ну, если он всё удаляет как написано в ТЗ, то значит устроит.
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 10 апреля 2017, 21:18
+
0
Тогда вот скрипт: www.opentraders.ru/downloads/1544/


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

#property show_inputs

input bool All=true;
input bool BS=true;
input bool BL=true;
input bool SS=true;
input bool SL=true;
input int  Magic=123;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,0.1,NormalizeDouble(price,Digits),0,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder()
  {
   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()>1 && All) del=OrderDelete(OrderTicket());
            if(OrderType()==2 && BL) del=OrderDelete(OrderTicket());
            if(OrderType()==3 && SL) del=OrderDelete(OrderTicket());
            if(OrderType()==4 && BS) del=OrderDelete(OrderTicket());
            if(OrderType()==5 && SS) del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders()
  {
   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()>1) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   while(!IsStopped())
     {
      if(CountTrades()>0)
        {
         DelOrder();
        }

      if(OrdersTotal()<1 && IsTesting())
        {
         for(int i=1;i<6;i++)
           {
            PutOrder(2,Bid-300*Point*i);//buylimit
            PutOrder(3,Bid+300*Point*i);//selllimi
            PutOrder(4,Bid+600*Point*i);//buystop
            PutOrder(5,Bid-600*Point*i);//sellstop  
           }
        }

      Comment("\n Orders: ",CountOrders());
     }
  }
//+------------------------------------------------------------------+


Редактирован: 11 апреля 2017, 19:53
avatar

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

  • 10 апреля 2017, 21:25
+
0
Спасибо, буду пробовать.
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 10 апреля 2017, 21:25
+
0
выставляю отлогу, он тут же её удаляет, даже ничего не открывая, Без базара, если так можно выразится. Не пашет скрипт.
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 10 апреля 2017, 21:34
+
0
получился скрипт не удаления отложек, а запрещения выставления отложек:D 
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 10 апреля 2017, 21:45
+
0
Поставил магик в 0 и установил 3 отложки:



В настройках поставил удалять только байстопы, затем открыл позу бай и то что нужно удалилось:

avatar

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

  • 10 апреля 2017, 21:45
+
0
Кидаю его на график, удалЯет сразу все отложки без разбора
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 10 апреля 2017, 21:48
+
0
логи скрины настройки скидывайте тогда сюда. буду смотреть что там у вас.
avatar

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

  • 10 апреля 2017, 21:51
комментарий был удален 2017-04-11 09:15:32 oyama

+
0
но работает на чистом графике, а пытаюсь поставить на график с открытыми позициями, отложки удаляет сразу
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 10 апреля 2017, 21:58
+
0


Скрипт работает только когда на графике где нет открытых позиций. Т.е. не работает.
Редактирован: 11 апреля 2017, 09:15
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 11 апреля 2017, 08:53
+
0
Скрипт работает только когда на графике где нет открытых позиций.

Это да, я писал что другой вариант не получился у меня. Если у меня что то не получается быстро сделать, значит к платному.
Редактирован: 11 апреля 2017, 17:44
avatar

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

  • 11 апреля 2017, 17:19
+
0
Ну, если появится время и желание, то как нибудь на досуге, может быть покопаетесь и глядишь выйдет каменный цветок, мне не к спеху. Ну, а нет, что ж значит нет, запишем его, как скрипт с которым АМ2 не справился.):) 
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 11 апреля 2017, 18:59
+
0
Ну, а нет, что ж значит нет, запишем его, как скрипт с которым АМ2 не справился.)
На слабо пытаешься развести *haha* 
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 11 апреля 2017, 22:31
+
+2
Японских хитрец решил на гнилушку надавить Андрею)
avatar

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

  • 12 апреля 2017, 04:56
+
0
Ну, тут только два варианта, либо смог сделать, либо не смог. Всё остальное демагогия.
Мне кажется, это совсем не сложный скрипт, сам я его конечно сделать не смогу, потому что не занимаюсь программированием, но на той основе которую сделал Андрей, 100% найду того, кто доведёт мне его до ума, если конечно Андрей сам не сможет доделать.
avatar

  17  oyama Автор Сообщений: 350 - Александр

  • 12 апреля 2017, 06:27

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