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

Рейтинг 2085



РЕКОМЕНДУЮ



помогите доделать советник

здравствуйте, помогите исправить в советнике следующее, добавить настройку стоп и тейк профита в пунктах и вывести ее в меню настроек. Допустим, выставляется при открытии нового бара 2 стоп ордера, на заданном расстоянии в 50 пунктов, профит 80, стоп, тоже можно настраивать .www.opentraders.ru/downloads/521/
  • 0
  • Просмотров: 1863
  • 28 декабря 2014, 23:00
  • Walerii
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Готово:


//+------------------------------------------------------------------+
//|                                                     DeltaPro.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    SL     = 200;  // cтоплосс ордера
extern int    TP     = 200;  // тейкпрофит ордера
extern int    Delta  = 200;  // расстояние от цены до ордера 
extern int    Slip   = 30;   // проскальзывание ордера
extern int    Try    = 5;    // количество попыток выставить ордер
extern double Lots   = 0.1;  // объем позиции
extern int    MAGIC  = 333;  // магик
//+------------------------------------------------------------------+
//| 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,Lots,fND(price),Slip,fND(price-SL*Point),fND(price+TP*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,Lots,fND(price),Slip,fND(price+SL*Point),fND(price-TP*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));
  }
//+------------------------------------------------------------------+
//| 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 Сообщений: 15875 - Андрей

  • 28 декабря 2014, 23:28
+
0
Здравствуйте могли бы подправить условия,
1 ордера выставляются при достижении определенного тикового обьема
2 возможность выбора устанавливаемого ордера ,( бай стоп или сел стоп)
вывести эти параметры в окно настроек
к примеру заранее выставляю в советнике бай или сел стоп с определенным значением обьема тп и стопом — при появлении нового бара появился обьем равный указанному в настройках и ордер выставлен.
avatar

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

  • 18 марта 2016, 11:05
+
0
Здравствуйте могли бы подправить условия,
1 ордера выставляются при достижении определенного тикового обьема
2 возможность выбора устанавливаемого ордера ,( бай стоп или сел стоп)
вывести эти параметры в окно настроек
к примеру заранее выставляю в советнике бай или сел стоп с определенным значением обьема тп и стопом — при появлении нового бара появился обьем равный указанному в настройках и ордер выставлен.


Создайте новый топик и буду смотреть что можно сделать.
avatar

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

  • 18 марта 2016, 11:56

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