Kashtan
Игорь

 
Уровень 18

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


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

Рейтинг 2085



РЕКОМЕНДУЮ



Просьба сделать советник

Т.З.

При установке на график советник открывает ордер на бай, сел либо по очереди(задаётся в настройках — 0,1,2)
К ордеру нужны настройки Т.П. С.Л. Лот.
Если ордер закрылся по Т.П. снова открывается ордер на бай или сел исходя из настроек выше (0,1,2)
Если ордер закрылся по С.Л. открывается ордер в противоположном направлении. К этому ордеру нужны свои параметры Лот, Лось, Язь.
Когда противоположный ордер закрылся (по лосю или язю — НЕВАЖНО) открывается «основной» ордер. И в зависимости от того как он закроется,
дальше всё повторяется (либо открывается такой же в том или ином направлении, либо противоположный со своими настройками Лот, Лось, Язь)

Пример 1. Открылся ордер на покупку. Если в настройках задали, чтоб открывались ордера только на покупку, то при достижении Язя снова открывается на покупку. И так до первого лося, после которого должен открыться ордер на продажу со своими настройками. После отработки этого противоположного ордера снова открываются ордера на покупку до первого лося (когда снова должен будет открыт ордер на продажу)

Пример 2. Открылся ордер на покупку. Если в настройках задали, чтоб открывались ордера по очереди, то не зависимо от того закрылся первый ордер по тейку или стопу, дальше будет открыт ордер на продажу. Разница лишь в том, что если покупка была закрыта по тейку, продажа откроется теми же Лотом, Язем и Лосём. А вот если покупка закрылась по лосю, то продажа будет с настройками для противоположного ордера. Понятно, что если покупка закрылась по тейку, а последующая продажа по лосю — открывшаяся после этого покупка уже считается как противоположный ордер и открывается со своими параметрами

Спасибо за внимание:) 
  • +1
  • Просмотров: 4568
  • 26 июня 2016, 12:32
  • Kashtan
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
И так спред все сожрет:D 
avatar

  7  Vitalik5675 Сообщений: 282

  • 26 июня 2016, 12:45
+
0
У вас в этом месяце уже есть заказ.
avatar

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

  • 26 июня 2016, 13:31
+
0
Есть:)  Но!
Не берусь. Я сейчас уже не помню в чем там суть, что то простое с нуля напишу.
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 26 июня 2016, 14:18
+
0
Ой виноват, это предыдущий был. Значит до начала месяца подождём
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 26 июня 2016, 14:22
+
0
Добрался и до вашего заказа. Сейчас буду смотреть.
avatar

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

  • 4 июля 2016, 08:18
+
0
Готово: www.opentraders.ru/downloads/1234/




//+------------------------------------------------------------------+
//|                                                      BuySell.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 double Lots       = 0.1;      // лот
extern int StopLoss      = 500;      // лось
extern int TakeProfit    = 500;      // язь
extern int StopLoss2     = 1500;     // лось
extern int TakeProfit2   = 1500;     // язь
extern int BuySell       = 0;        // 1-buy 2-sell 0-off
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик
extern int Magic2        = 321;      // магик доп ордера
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double stop,double take,int mag)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

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

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

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",mag,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(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic2))
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Результат последней сделки                                       |
//+------------------------------------------------------------------+
int LastRes()
  {
   int result=0;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderProfit()>0)
           {
            result=1;//tp  
           }
         if(OrderProfit()<0)
           {
            result=2;//sl  
           }
        }
     }
   return(result);
  }
//+------------------------------------------------------------------+
//| Результат последней сделки                                       |
//+------------------------------------------------------------------+
int LastType()
  {
   int type=0;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         type=OrderType();
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      if(LastRes()==2 && LastType()==0) PutOrder(1,Bid,StopLoss2,TakeProfit2,Magic2);
      if(LastRes()==2 && LastType()==1) PutOrder(0,Ask,StopLoss2,TakeProfit2,Magic2);
     }
     
   if(CountTrades()<1)
     {
      if(BuySell==1) PutOrder(0,Ask,StopLoss,TakeProfit,Magic);
      if(BuySell==2) PutOrder(1,Bid,StopLoss,TakeProfit,Magic);
     }
  }
//+------------------------------------------------------------------+


Редактирован: 4 июля 2016, 14:32
avatar

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

  • 4 июля 2016, 09:15
+
0
Только сегодня вспомнил, что после выходных собирались заняться:D 
Попроверяем:) 
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 5 июля 2016, 15:22
+
0
Андрей для добавочного ордера свой объём нужен. И зачем два магика, если советник всего один?
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 5 июля 2016, 15:30
+
0
В Т.З. предполагается, что если ордер закрылся по лосю, противоположный открывается с другим объёмом на моё усмотрение
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 5 июля 2016, 15:34
+
0
Добавил свой лот.
И зачем два магика, если советник всего один?

Алгоритм непростой, я реализовал таким образом.




//+------------------------------------------------------------------+
//|                                                      BuySell.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 double Lots       = 0.1;      // лот
extern double Lot2       = 0.2;      // добавочный лот
extern int StopLoss      = 500;      // лось
extern int TakeProfit    = 500;      // язь
extern int StopLoss2     = 1500;     // лось
extern int TakeProfit2   = 1500;     // язь
extern int BuySell       = 0;        // 1-buy 2-sell 0-off
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик
extern int Magic2        = 321;      // магик доп ордера
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double lot,double stop,double take,int mag)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

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

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

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,sl,tp,"",mag,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(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic2))
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Результат последней сделки                                       |
//+------------------------------------------------------------------+
int LastRes()
  {
   int result=0;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderProfit()>0)
           {
            result=1;//tp  
           }
         if(OrderProfit()<0)
           {
            result=2;//sl  
           }
        }
     }
   return(result);
  }
//+------------------------------------------------------------------+
//| Результат последней сделки                                       |
//+------------------------------------------------------------------+
int LastType()
  {
   int type=0;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         type=OrderType();
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      if(LastRes()==2 && LastType()==0) PutOrder(1,Bid,Lot2,StopLoss2,TakeProfit2,Magic2);
      if(LastRes()==2 && LastType()==1) PutOrder(0,Ask,Lot2,StopLoss2,TakeProfit2,Magic2);
     }
     
   if(CountTrades()<1)
     {
      if(BuySell==1) PutOrder(0,Ask,Lots,StopLoss,TakeProfit,Magic);
      if(BuySell==2) PutOrder(1,Bid,Lots,StopLoss,TakeProfit,Magic);
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 5 июля 2016, 22:09
+
0
Опа! Даже и в мыслях не было что по такому Т.З. советник не простой. Спасибо, будем тестить
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 5 июля 2016, 22:34
+
0
Только ща прочитал «Советник для мистера Игоря»:D 
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 5 июля 2016, 22:36
+
+1
Даже и в мыслях не было что по такому Т.З. советник не простой.

А вы начните делать и сразу все узнаете <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/003.gif' alt=' :D '>&nbsp; 
Редактирован: 6 июля 2016, 06:23
avatar

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

  • 6 июля 2016, 06:22

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