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

Рейтинг 2085



РЕКОМЕНДУЮ




Лучшее от Vitalik5675



Заказ советника попытка №2
2017-01-27 02:23:06Рейтинг 0

Восстановления после BREXIT
2016-11-18 14:38:40Рейтинг 0

06.06.2017 EURUSD H4
2017-06-06 15:36:28Рейтинг 0

Welcome Bonus Forex $20 Комментариев 18
2016-12-02 22:01:36Рейтинг 0

Адская прибыль Комментариев 2
2016-05-21 15:55:32Рейтинг 0

Скрипт

Привет.
Нужен скрипт что будет открывать 2 отложки stop или limit по максимальной или минимальной цене за определенное количество свечей)
Работать будет на МТ4, 4-5 знак.
Дальше количество свечей на каких будет производится расчет самой максимальной и минимальной цены.
Отложки stop/limit.
Размер лота.
Отступ от максимальной или минимальной цены в пунктах.
Минимальное расстояние между отложками включая отступ в пунктах.
И минимальное расстояние текущей цены от минимальной и максимальной цены в пунктах.
  • +2
  • Просмотров: 1958
  • 29 сентября 2016, 15:01
  • Vitalik5675
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Прошу написать индикатор- grid для МТ4.
Следующая запись в группе  
Советник на индикаторе АО
28 сентября 2016
29 сентября 2016

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

+
+1
Завтра с утра буду смотреть.
avatar

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

  • 29 сентября 2016, 17:44
+
+1
Напишите какой тип ордера куда ставится?
avatar

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

  • 29 сентября 2016, 18:54
+
+1
Я сделал набросок, вот эти 2 пункта поясняйте для чего это и как должно работать?

Минимальное расстояние между отложками включая отступ в пунктах.
И минимальное расстояние текущей цены от минимальной и максимальной цены в пунктах.



//+------------------------------------------------------------------+
//|                                                    Unlimited.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2."
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property show_inputs
//--- Inputs
extern double Lot          = 0.1;      // Trade volume
extern int StopLoss        = 0;        // Order sroploss
extern int TakeProfit      = 0;        // Order takeprofit
extern int Expiration      = 60;       // The expiry of the order in minutes
extern int Delta           = 100;      // Distance from the price
extern int Count           = 5;        // Bars count
extern int Slip            = 3;        // Slippage
extern int Magic           = 123;      // Magic number
extern bool BuyLimit       = true;     // BuyLimit
extern bool SellLimit      = true;     // SellLimit
extern bool BuyStop        = true;     // BuyStop 
extern bool SellStop       = true;     // SellStop
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0,err=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)   sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)   sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lot,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*60,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double h=High[iHighest(NULL,0,MODE_HIGH,Count,0)];
   double l=High[iLowest(NULL,0,MODE_LOW,Count,0)];

   if(Bid<h)
     {
      if(BuyStop) PutOrder(4,h+Delta*Point);
      if(SellLimit) PutOrder(3,h+Delta*Point);
     }

   if(Bid>l)
     {
      if(BuyLimit) PutOrder(2,l-Delta*Point);
      if(SellStop) PutOrder(5,l-Delta*Point);
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 29 сентября 2016, 19:21
+
0
Проверил как работает отложки открываются, отступ от максимума и минимума работает.
А вот максимум и минимум определяются чуть не правильно не считает всех указанных свечей.
Минимальное расстояние между отложками включая отступ в пунктах.

Между buy stop/limit и sell stop/limit должно быть не меньше определенного количества пунктов с отступом чтобы они открылись.
И минимальное расстояние текущей цены от минимальной и максимальной цены в пунктах.

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

  7  Vitalik5675 Автор Сообщений: 282

  • 29 сентября 2016, 20:53
+
+1
Добавил нужные параметры, вывод на экран ширины канала с учетом дельты и границы канала линиями:




//+------------------------------------------------------------------+
//|                                                    Unlimited.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2."
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property show_inputs
//--- Inputs
extern double Lot          = 0.1;      // Trade volume
extern int StopLoss        = 0;        // Order sroploss
extern int TakeProfit      = 0;        // Order takeprofit
extern int Expiration      = 60;       // The expiry of the order in minutes
extern int Delta           = 100;      // Distance from the price
extern int DeltaPrice      = 50;       // Distance for the price 
extern int ChannelWidth    = 100;      // Channel Width
extern int Start           = 1;        // Start Bar
extern int Count           = 8;        // Bars count
extern int Slip            = 3;        // Slippage
extern int Magic           = 123;      // Magic number
extern bool BuyLimit       = false;    // BuyLimit
extern bool SellLimit      = false;    // SellLimit
extern bool BuyStop        = false;    // BuyStop 
extern bool SellStop       = false;    // SellStop
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutHLine(string name,double p,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0,err=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)   sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)   sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lot,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*60,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double h=NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,Count,Start)],Digits);
   double l=NormalizeDouble(Low[iLowest(NULL,0,MODE_LOW,Count,Start)],Digits);
   double channel=(h-l)/Point+Delta*2;

   if(channel>=ChannelWidth)
     {
      if(Bid<h-DeltaPrice*Point)
        {
         if(BuyStop) PutOrder(4,h+Delta*Point);
         if(SellLimit) PutOrder(3,h+Delta*Point);
        }

      if(Bid>l+DeltaPrice*Point)
        {
         if(BuyLimit) PutOrder(2,l-Delta*Point);
         if(SellStop) PutOrder(5,l-Delta*Point);
        }
     }
   PutHLine("Res Line: "+(string)l,l,Blue);
   PutHLine("Supp Line: "+(string)h,h,Red);
   
   Comment("\n Channel Width: ",NormalizeDouble(channel,0));
  }
//+------------------------------------------------------------------+

avatar

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

  • 30 сентября 2016, 04:54
+
0
Максимум и минимум определяет и на них ставит две линии, а вот отложки не ставит(
avatar

  7  Vitalik5675 Автор Сообщений: 282

  • 30 сентября 2016, 11:41
+
+1
настройки скрины логи все как обычно
avatar

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

  • 30 сентября 2016, 15:54
+
+1
скорее всего ордера не ставит потому что по умолчанию они все отключены. перед установкой скрипта включите то что нужно:


extern bool BuyLimit       = false;    // BuyLimit
extern bool SellLimit      = false;    // SellLimit
extern bool BuyStop        = false;    // BuyStop 
extern bool SellStop       = false;    // SellStop
avatar

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

  • 30 сентября 2016, 16:02
+
0
*wall*  разобрался уже нужные ордера включал но они не ставились просто забыл автоторговлю включить.:D 
Все работает *good* 
avatar

  7  Vitalik5675 Автор Сообщений: 282

  • 30 сентября 2016, 16:29

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