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

Рейтинг 1331



РЕКОМЕНДУЮ




Лучшее от waterfall



Советник скальпер. Комментариев 1
2018-04-04 14:39:04Рейтинг 0

Советник удаления ордеров.

Прошу написать советник для удаления открытых ордеров.
Советник использует один индикатор:super-signals-channel
yadi.sk/d/-NSPgF8HBKxyTw
Код индикатора вписать в код советника, настройки индикатора вывести в настройки советника.
Название советника:SSC_Killer
В настройках советника должны быть следующие функции:
Magic: с каким магиком ордеров будет работать советник (если 0 с ручными)
Отобразить или скрыть изображение индикатора на графике (falce/trye)
Ордера которые выйдут за границы канала (_буфер 0_буфер 1), советником удаляются.
Поправки приветствуются… Спасибо.
  • 0
  • Просмотров: 446
  • 1 ноября 2018, 01:24
  • waterfall
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
на 7-е
avatar

  27  AM2 Сообщений: 8243 - Андрей

  • 1 ноября 2018, 17:33
+
0
Ок! Спасибо.
Просьба вывести параметры индикатора в настройки советника, в одну строку.
На скриншоте выведены цифровые настройки индикатора:super-signals-channel
yadi.sk/d/TepObzTK8S3Pbw
Переменную:_O_iCustomParam
__Прописать:_O_SSR_Killer
P.S. просьба обоснована тем что возможно при модификации советника
таких переменных будет две строки с разными настройками.
avatar

  7  waterfall Автор Сообщений: 44

  • 2 ноября 2018, 19:08
+
0
покажите на скринах что и когда удаляется
avatar

  27  AM2 Сообщений: 8243 - Андрей

  • 7 ноября 2018, 19:58
+
0
готово:




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

extern int dist=24;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
  {

   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии 
   ObjectSetInteger(0,name,OBJPROP_STYLE,0);
//--- установим толщину линии 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   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,"",0,0,clr);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
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())
           {
            if(OrderType()==type || (OrderType()>=0 && type==-1)) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double hi = High[iHighest(NULL,0,MODE_HIGH,dist,0)];
   double lo = Low[iLowest(NULL,0,MODE_LOW,dist,0)];

   if(OrdersTotal()<1 && IsTesting())
     {
      if(CountOrders(2)<1) for(int i=1;i<5;i++) PutOrder(2,Bid-100*Point*i);//buylimit
      if(CountOrders(3)<1) for(int i=1;i<5;i++) PutOrder(3,Bid+100*Point*i);//selllimit
     }

   bool del;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()>1 && (OrderOpenPrice()>hi || OrderOpenPrice()<lo)) del=OrderDelete(OrderTicket());
           }
        }
     }

   PutTrendLine("up",Time[0],hi,Time[dist],hi,Red);
   PutTrendLine("dn",Time[0],lo,Time[dist],lo,Lime);
  }
//+------------------------------------------------------------------+

avatar

  27  AM2 Сообщений: 8243 - Андрей

  • 7 ноября 2018, 20:45
+
0
Спасибо, но как он работает не понятно.
На скрине не хочет закрывать открытый ордер который вышел за рамки канала.
avatar

  7  waterfall Автор Сообщений: 44

  • 7 ноября 2018, 23:00
+
0
Советник не должен открывать ордера, он только закрывает ордера.
На скрине показан алгоритм удаления открытого ордера сторонним советником.
Наш советник нужно привязать к чужим ордерам по магику.
На скрине показано как должен закрываться ордер открытый сторонним советником или открытым вручную.
Прошу ввести возможность менять цвет отображения канала.
Ну как то так.
avatar

  7  waterfall Автор Сообщений: 44

  • 8 ноября 2018, 11:37
+
0
Ордера которые выйдут за границы канала (_буфер 0_буфер 1), советником удаляются

так я и сделал :)  если удаляются значит открыт отложенный ордер.

а теперь вы пишете что, нужно закрывать открытые позиции *pardon* 

Советник не должен открывать ордера, он только закрывает ордера.

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

  27  AM2 Сообщений: 8243 - Андрей

  • 8 ноября 2018, 17:56
+
0
смотрите сейчас закрывает: www.opentraders.ru/downloads/2160/

avatar

  27  AM2 Сообщений: 8243 - Андрей

  • 8 ноября 2018, 20:23
+
0
Спасибо. Возможно я не правильно сформулировал ТЗ.
Я имел ввиду, что советник будет удалять уже открытые ордера за пределами канала.
Сейчас на демо счете советник удалил открытый ордер за пределами канала.
Начало хорошее, но нужно потестить.
Теперь нужно привязать удаленку к магику, а при значении НОЛЬ пусть удаляет все подряд.
avatar

  7  waterfall Автор Сообщений: 44

  • 8 ноября 2018, 22:17

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