cardon

 
Уровень 10

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


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

Рейтинг 2092



РЕКОМЕНДУЮ




Лучшее от cardon



дороботка сова Комментариев 68
2016-11-24 13:25:33Рейтинг 0

советник на 1 МА Комментариев 13
2016-07-29 13:57:46Рейтинг 0

просто индюк Комментариев 22
2016-09-17 11:18:53Рейтинг 0

доработка сова Комментариев 2
2017-01-09 19:57:28Рейтинг 0

сова просто сова Комментариев 19
2016-10-06 16:43:18Рейтинг 0

советник помощник

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

закрытие 50% лота при определенном количестве пп. перенос стопа 1/2 лота на указанное расстояние, перевод в БУ при достижении количества пп. размер БУ, стоп и тейк.

ниже картинка с закрытого сова, добавил нужные функции в нее.

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

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

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

+
0
Я сегодня сделал 2 заказа, завтра уже буду смотреть.
avatar

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

  • 1 июня 2016, 15:20
+
0
Это опять слепой советник, мне нужно что то изобретать чтобы проверить и смоделировать ситуацию в рынке. такие делать в разы сложнее.
avatar

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

  • 2 июня 2016, 08:03
+
0
ну а если по чу-чуть делать, например сперва — закрытие 1/2 ордера, потом величина стопа 1/2 ордера...<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp;  скинул бы закрытый, но он не поможет.
Редактирован: 2 июня 2016, 08:38
avatar

  10  cardon Автор Сообщений: 376

  • 2 июня 2016, 08:37
+
0
Завтра посмотрю на сегодня норма :) 
avatar

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

  • 2 июня 2016, 08:50
+
0
в силе еще?:) 
avatar

  10  cardon Автор Сообщений: 376

  • 5 июня 2016, 20:14
+
0
Только что доделал:




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

//--- Inputs
extern int BULevel     = 100;     // уровень БУ
extern int BUPoint     = 30;      // пункты БУ
extern int Count       = 3;       // 
extern int ProfitPoint = 100;     //
extern double Lot      = 1;       //

bool one=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,1,NormalizeDouble(price,Digits),0,0,0,"",0,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==type) count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseLot()
  {
   bool c;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==0)
           {
            if(Bid-OrderOpenPrice()>=ProfitPoint*Point)
               if(OrderLots()==Lot)
                  c=OrderClose(OrderTicket(),OrderLots()/2,Bid,100,White);
           }

         if(OrderType()==1)
           {
            if(OrderOpenPrice()-Ask>=ProfitPoint*Point)
               if(OrderLots()==Lot)
                  c=OrderClose(OrderTicket(),OrderLots()/2,Ask,100,White);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  Безубыток ордеров   if(BULevel>0) BU();                         |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=Bid-BULevel*Point && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=Ask+BULevel*Point && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
        }
     }
  }  
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()>1) del=OrderDelete(OrderTicket());
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsTesting() && (CountOrders(0)<1 || CountOrders(1)<1) && one)
     {
      if(CountOrders(4)<1) for(int i=1;i<=5;i++) PutOrder(4,Bid+200*Point*i);
      if(CountOrders(5)<1) for(int k=1;k<=5;k++) PutOrder(5,Bid-200*Point*k);
      one=false;
     }

   CloseLot();
   if(BULevel>0) BU(); 
   if(CountOrders(0)+CountOrders(1)>=Count) DelOrder();

   Comment("\n ");
  }
//+------------------------------------------------------------------+

avatar

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

  • 5 июня 2016, 20:18
+
0
как я понял, это не все еще?) нет закрытие 1/2 лота и установка стопа для остатка 1/2 лота, как на скрине. А так проверить сделанное не могу, рынок закрыт).
avatar

  10  cardon Автор Сообщений: 376

  • 5 июня 2016, 21:38
+
0
нет закрытие 1/2 лота и установка стопа для остатка 1/2 лота, как на скрине.

Есть смотрите в логе пишет что закрыл и модифицировал:



А так проверить сделанное не могу, рынок закрыт)


Можете я сделал вариант для тестера.
avatar

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

  • 5 июня 2016, 21:47
+
0
протестировал, все что есть или все что я увидел, догнал работает как надо, но я не пойму есть ли стоп и тейк? в настройках нет, не видать. Нужно стоп и тейк для полного ордера и стоп для 1/2 ордера и потом только БУ.
допустим тейк 500 стоп 200 лот 1, прошли 250 закрыли 1/2 ордера и модифицировали стоп, как в настройках, допустим 100, а потом при достижении допустим 400, перешли в БУ.

то-есть у нас есть все, кроме стопа и тейка полного ордера и стоп 1/2 ордера.


avatar

  10  cardon Автор Сообщений: 376

  • 5 июня 2016, 23:22
+
0
то-есть у нас есть все, кроме стопа и тейка полного ордера и стоп 1/2 ордера.

Для бесплатного норма :) 
avatar

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

  • 6 июня 2016, 08:02
+
0
блин ведь это не туда и не сюда, вся соль была в переводе стопа 1/2 ордера, сделайте хотя бы просто модификацию стопа для 1/2 ордера, а для полного в ручную ставить буду тогда…
avatar

  10  cardon Автор Сообщений: 376

  • 6 июня 2016, 08:09
+
0
если будет свободное время доделаю или к платному.
avatar

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

  • 6 июня 2016, 08:36
+
0
Вот последний вариант но там конфликт между модами. Обратитесь лучше к платному.


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

//--- Inputs
extern int StopLoss    = 200;     // лось
extern int StopLoss2   = 100;     // лось 2
extern int TakeProfit  = 500;     // язь
extern int BULevel     = 100;     // уровень БУ
extern int BUPoint     = 30;      // пункты БУ
extern int Count       = 3;       // 
extern int ProfitPoint = 100;     //
extern double Lot      = 1;       //

bool one=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,1,NormalizeDouble(price,Digits),0,0,0,"",0,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==type) count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseLot()
  {
   bool c;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==0)
           {
            if(Bid-OrderOpenPrice()>=ProfitPoint*Point)
               if(OrderLots()==Lot)
                  c=OrderClose(OrderTicket(),OrderLots()/2,Bid,100,White);
           }

         if(OrderType()==1)
           {
            if(OrderOpenPrice()-Ask>=ProfitPoint*Point)
               if(OrderLots()==Lot)
                  c=OrderClose(OrderTicket(),OrderLots()/2,Ask,100,White);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  Модификация стопов                                              |
//+------------------------------------------------------------------+
void StopMode()
  {
   bool m;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==OP_BUY)
           {
            if(OrderStopLoss()==0 || OrderTakeProfit()==0)
              {
               if(OrderLots()==Lot)
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point,OrderOpenPrice()+TakeProfit*Point,0,Yellow);
               return;
              }

            if(OrderLots()==Lot/2)
              {
               if(OrderStopLoss()>OrderOpenPrice())
                  if(OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-StopLoss2*Point,Digits))
                     m=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-StopLoss2*Point,Digits),OrderTakeProfit(),0,Yellow);
               return;
              }
           }

         if(OrderType()==OP_SELL)
           {
            if(OrderStopLoss()==0 || OrderTakeProfit()==0)
              {
               if(OrderLots()==Lot)
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderOpenPrice()-TakeProfit*Point,0,Yellow);
               return;
              }

            if(OrderLots()==Lot/2)
              {
               if(OrderStopLoss()>OrderOpenPrice())
                  if(OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+StopLoss2*Point,Digits))
                     m=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+StopLoss2*Point,Digits),OrderTakeProfit(),0,Yellow);
               return;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  Безубыток ордеров   if(BULevel>0) BU();                         |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==OP_BUY)
           {
            if(OrderOpenPrice()<=Bid-BULevel*Point && OrderOpenPrice()>OrderStopLoss())
              {
               m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
               return;
              }
           }

         if(OrderType()==OP_SELL)
           {
            if(OrderOpenPrice()>=Ask+BULevel*Point && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
              {
               m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
               return;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()>1) del=OrderDelete(OrderTicket());
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsTesting() && (CountOrders(0)<1 || CountOrders(1)<1) && one)
     {
      if(CountOrders(4)<1) for(int i=1;i<=5;i++) PutOrder(4,Bid+200*Point*i);
      if(CountOrders(5)<1) for(int k=1;k<=5;k++) PutOrder(5,Bid-200*Point*k);
      one=false;
     }

   StopMode();
   CloseLot();
   if(BULevel>0) BU();
   if(CountOrders(0)+CountOrders(1)>=Count) DelOrder();

   Comment("\n ");
  }
//+------------------------------------------------------------------+

avatar

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

  • 6 июня 2016, 10:08
+
0
советник 1 вариант, второй не пробывал даже, выставляешь лот 0,02 и от сразу закрывает половину, а в селл нет. на разных парах по разному,
avatar

  10  cardon Автор Сообщений: 376

  • 6 июня 2016, 15:36

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