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

Рейтинг 2088



РЕКОМЕНДУЮ



помогите написать примитивный советник )

Суть в вот в чем, советник выставляет 2 отолженных ордера бай и селл стоп на определенном расстоянии ( выводится в настройках) при открытии нового бара, если один из ордеров срабатывает, то второй удаляется. стоп и профит одинаковый, равен рассотянию на котором устанавливаются ордера.
  • +2
  • Просмотров: 3520
  • 30 ноября 2014, 20:33
  • Walerii
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
+2
готово. файл в базе: www.opentraders.ru/downloads/521/
avatar

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

  • 30 ноября 2014, 21:03
+
0
+++ оперативность уникальная!
avatar

  24  iMAG Сообщений: 1295 - Генадич

  • 30 ноября 2014, 22:03
+
0
все работает отлично, скажите а могли бы вы добавить функцию удвоения лота, при срабатывании стопа
avatar

  16  Walerii Автор Сообщений: 456 - Валерий

  • 1 декабря 2014, 17:40
+
0
добавил:


//+------------------------------------------------------------------+
//|                                                        Delta.mq4 |
//|                                            Copyright © 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Forex expert advisor"

//--- Inputs
extern int    Delta  = 200;  // расстояние до ордера и стопы
extern int    Slip   = 30;   // проскальзывание ордера
extern int    Try    = 5;    // количество попыток выставить ордер
extern double Lots   = 0.1;  // объем позиции
extern double MaxLot = 5;    // максимальный объем позиции
extern int    MAGIC  = 333;  // магик
double lot;
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void PutOrder()
  {
   int    res,b,s,err;
   double price;   
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUYSTOP)b++;
         if(OrderType()==OP_SELLSTOP)s++; 
        }
      }
    }
    
   //--- buy
   if(b<1)
    {
     price=Ask+Delta*Point;
     res=OrderSend(Symbol(),OP_BUYSTOP,Lot(),fND(price),Slip,fND(price-Delta*Point),fND(price+Delta*Point),"",MAGIC,0,Blue);
      if(res<0)
        {
         Print("Ошибка: ",GetLastError());
         err++;
         Sleep(500);
         RefreshRates();
        }
      else
         Print("OK Order BUYSTOP");     
    }             
                    
   //--- sell 
   if(s<1)
    {
     price=Bid-Delta*Point;
     res=OrderSend(Symbol(),OP_SELLSTOP,Lot(),fND(price),Slip,fND(price+Delta*Point),fND(price-Delta*Point),"",MAGIC,0,Red);
      if(res<0)
        {
         Print("Ошибка: ",GetLastError());
         err++;
         Sleep(500);
         RefreshRates();
        }
      else
         Print("OK Order SELLSTOP");     
    }
   if (err>Try) return;  
  }
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del; 
   for (int i=OrdersTotal()-1; i>=0; i--) 
    {
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
     if (OrderType()==OP_BUYSTOP)  del=OrderDelete(OrderTicket()); 
     if (OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());       
    }    
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
  }
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
double fND(double d,int n=-1)
  {
   if(n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double Lot()
  {  
   if(OrdersHistoryTotal()==0)
    {
     lot=Lots;
    }             
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))      
     {                                       
      if(OrderProfit()>0)                     
       {
        lot=Lots;  
       }
      if(OrderProfit()<=0)
        {
         lot=OrderLots()*2;  
        }
     }
    if(lot>MaxLot)lot=MaxLot;            
   return(lot);
  }  
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
   if(NewBar()==true)
    {    
     if(CountTrades()<1)PutOrder();
     if(CountTrades()>0)DelOrder();
    }    
//---
  }
//+------------------------------------------------------------------+

avatar

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

  • 1 декабря 2014, 22:48
+
0
отлично, скажите последнюю идею можно добавить, если отложенные ордера в течении трех баров не открываются, то их удаляют и с нового бара выставляютя заново
avatar

  16  Walerii Автор Сообщений: 456 - Валерий

  • 2 декабря 2014, 17:12
+
0
благодарю за оперативность счас гляну
avatar

  16  Walerii Автор Сообщений: 456 - Валерий

  • 30 ноября 2014, 21:59
+
0
сегодня в 4 00 проверю на новостях по китаю, на 5 ти знаке
avatar

  16  Walerii Автор Сообщений: 456 - Валерий

  • 30 ноября 2014, 23:41

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