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

Рейтинг 2073



РЕКОМЕНДУЮ



Советник

Доброе утро!
Кто может реализовать советник?
Суть советника такова:
Входящие настройки:
— множитель для ордера бай
— множитель для ордера селл
— через сколько пунктов происходит открытие ордеров умноженных на множитель

Советник сразу открывает два ордера на бай и селл, после того как цена достигнет уровень пунктов указанных во входящих настройках сразу открываются два ордера ордер бай умноженный на множитель для бай и ордер селл умноженный на множитель селл и т.д. до бесконечности.

спасибо!
  • 0
  • Просмотров: 2889
  • 28 января 2016, 07:08
  • PetrovMaxim
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Просто открываем позы без стопов без всего?
avatar

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

  • 28 января 2016, 07:39
+
0
Открывает, умножает:




//+------------------------------------------------------------------+
//|                                                     Mnogitel.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

//--- Inputs
extern int    StopLoss     = 0;
extern int    TakeProfit   = 0;
extern int    Step         = 300;
extern int    Slip         = 30;
extern int    Magic        = 123;
extern double Lots         = 0.1;
extern double KLot         = 2;

double Price=0, lot=Lots;
//+------------------------------------------------------------------+
//| 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=clrNONE;
   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,0,clr);
   return;
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- sell conditions
   if(Bid>Price+Step*Point || Bid<Price-Step*Point)
     {
      PutOrder(0,Ask);
      PutOrder(1,Bid);
      Price=Bid;
      lot*=KLot;
     }
     
     Comment("\n Price: ",Price,"\n Lot: ",lot);
  }
//+------------------------------------------------------------------+

avatar

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

  • 28 января 2016, 08:14
+
0
Андрей, спасибо то что надо, а возможно добавить ограничение размера лота, скажем до 5 дошел, а потом все сначала?
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 28 января 2016, 08:30
+
0
avatar

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

  • 28 января 2016, 08:53
+
0
Андрей, а подскажите, в советникего при закрытии одного ордера сразу откроется следующая пара или будет ждать когда цена опустится на step
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 28 января 2016, 10:43
+
0
Возможно, сделать чтобы при закрытии одного из ордера сразу открывалась следующая пара ордеров
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 28 января 2016, 10:50
+
0
Андрей, протестировал советник, спасибо Вам, возможно добавить чтобы при закрытии одного ордера открывалась следующая пара.
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 28 января 2016, 21:21
+
0
Сделал:




//+------------------------------------------------------------------+
//|                                                     Mnogitel.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

//--- Inputs
extern int    StopLoss     = 0;
extern int    TakeProfit   = 200;
extern int    Step         = 300;
extern int    Slip         = 30;
extern int    Magic        = 123;
extern double Lots         = 0.1;
extern double KLot         = 2;
extern double MaxLot       = 5;

double Price=0,lot=Lots;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int    r=0;
   color clr=clrNONE;
   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);
     }

   if(AccountFreeMarginCheck(Symbol(),type,lot)<=0 || GetLastError()==134)
     {
      Print("Недостаточно средств!!!");
     }

   if(GetLastError()==131)
     {
      Print("Неправильный объем!!!");
     }

   if(lot>MaxLot) lot=Lots;
   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   if(Bid>Price+Step*Point || Bid<Price-Step*Point)
     {
      PutOrder(0,Ask);
      PutOrder(1,Bid);
      Price=Bid;
      lot*=KLot;
     }

   if(CountTrades()<2)
     {
      PutOrder(0,Ask);
      PutOrder(1,Bid);
      Price=Bid;
      lot*=KLot;
     }
     
   Comment("\n Price: ",Price,"\n Lot: ",lot);
  }
//+------------------------------------------------------------------+

avatar

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

  • 29 января 2016, 07:38
+
0
Андрей, спасибо!
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 29 января 2016, 15:15

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