Перейти к содержанию

Доработка советников: общая тема


Рекомендуемые сообщения

Доработка советников: общая тема Опубликовано

@molot_1 если открыта сделка Бай больше не открываем? т.е. всегда открыто не более 1 ордера или можно открывать больше ?

Также возникнет следующая ситуация AO_D1 > 0 , AO_M15 > 0 , AO_M5 > 0 (=1) - открываем Бай, на следующем баре AO_M5 < 0 (=-1), потом опять AO_M5 > 0 (=1), ордера нет (по СЛ закрылся) опять открываем? не будем ужесточать условия для AO_M5 для исключения множественных сигналов? Можно например AO_M5 > 5 сделать и вынести в настройки.

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 2,5k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Версия с правками. Я немного свернул код, чтобы не перебирались ордера попусту и чтобы проверка красной/синей зоны делалась в одном месте. Прогнал в тесте с настройками по умолчанию. Ожидаемо лье

Перейти

Нате 1_2_3 _Fraktal.mq4

Перейти

Система маятника, или попрыгунчика, или фиг ее знает как ее еще назвать не намного младше сетки мартингейла. Мы в далеком 2017 писали по ней сов с индикатором на вход: https://tlap.com/forum/labo

Перейти
Доработка советников: общая тема Опубликовано

Уважаемые знатоки, помогите исправить этот експерт.
Он, в принципе, работает, но хотелось бы поправить. Я его уже выкладывал, но еще раз.
1. В инпутах устанавливаю dtriger = 2 - открывает 2 лота BUY.
2. Теперь хочу закрыть 1 лот, установив в инпутах dtriger = 1.
Прописывал разные варианты, но все не так.
В моем случае в коде при dtriger = 1 - закрываются все позиции.
Т.е вместо CloseAll() надо прописать закрытие 1 лота BUY, если dtriger = 1.
Спасибо.

Спойлер

 


#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>

CPositionInfo	o_position;
CTrade	      o_trade;
CSymbolInfo	   o_symbol;
COrderInfo	   o_order;

input int	   triger	     = 0;
input double	StartLot	     = 0.01;
input double	lpos_volume	  = 2.0;
input int	   Step	        = 10;
input int	   MagicNumber	  = 12345;	//	Magic	nuaber
input int	   Slippage	     = 30;	   //	slippage

int dtriger;
int dStep;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   dStep = Step ;
   dtriger = triger ;

   if (!o_symbol.Name(Symbol()))
     return(INIT_FAILED);
   
   RefreshRates();
   
   o_trade.SetExpertMagicNumber(MagicNumber) ;

   if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_FOK))
   { 
      o_trade.SetTypeFilling(ORDER_FILLING_FOK);
   }
   else if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_IOC))
   { 
      o_trade.SetTypeFilling(ORDER_FILLING_IOC);
   }
   else 
   {
      o_trade.SetTypeFilling(ORDER_FILLING_RETURN);
   }
      o_trade.SetDeviationInPoints(Slippage);
   
   if (o_symbol.Digits() == 3 || o_symbol.Digits() == 5 )
   {
      dStep = 10 ;
   }
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
      datetime	            lpos_time	       =	0;
      double	            lpos_price_open    =	0.0;
      ENUM_POSITION_TYPE   lpos_type	       =	-1;
      int	               pos_count	       =	0;
      double	            sum_profit	       = 0;
 
   for (int i = PositionsTotal() - 1; i>=0; i--)
   {
      if (o_position.SelectByIndex(i))
      {
         if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber)
         {
            if (o_position.Time() > lpos_time)
            {  
               lpos_time       = o_position.Time();            //OrderOpenTime();
               lpos_price_open = o_position.PriceOpen();       //OrderOpenPrice();
               lpos_type       = o_position.PositionType() ;   //OrderTipe();
             }  
            
            pos_count++;
            sum_profit = sum_profit + o_position.Commission() + o_position.Swap() + o_position.Profit() ;
          }     
       }     
    }          

   // Считаем кол-во отложенных ордеров
  int stop_count=0;

   for (int i=OrdersTotal()-1; i >=0; i--) 
   {
      if (o_order.SelectByIndex(i)) 
      {
         if (o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber) 
           stop_count++;
      }
   }

   if (!RefreshRates())
     return ;
     
   if(dtriger == 0 )
   {
      CloseAll();
      return;               
   } 
   
  // + -----    Откраваем Первый ордер   ++++++++++
 if (pos_count == 0  && stop_count == 0    )
   {
      if ( dtriger == -2 &&  lpos_type != POSITION_TYPE_SELL)
      {
         o_trade.Sell(StartLot * lpos_volume  , o_symbol.Name());  //   S E L L   11111
      }
      
      if ( dtriger == 2 &&  lpos_type != POSITION_TYPE_BUY )
      {
         o_trade.Buy(StartLot * lpos_volume , o_symbol.Name());   //   B U Y    11111
      }
   }
 //  -----------------------   Закрываем ордера   ---------------------------------------  
   if (pos_count > 0)
      {
          
          if(lpos_type == POSITION_TYPE_BUY  && dtriger == 1  )   
         {
               CloseAll();
               return; 
         }                   
                   
                   if(lpos_type == POSITION_TYPE_SELL  && dtriger == -1 )
         {
                  CloseAll();
                  return;    
         }
         
      }
 
   if(pos_count>0 && stop_count>0) 
     DeleteStopOrders() ;
  
} 
//-----------------------------------------------------------
bool RefreshRates()
{
   if (!o_symbol.RefreshRates())
     return(false) ;
     
    if (o_symbol.Ask() == 0 || o_symbol.Bid() == 0)
      return(false);
      
    return(true);
}  
//---  --------------------------------------------------------- 
 bool IsFillingTypeAllowed (string symbol, int fill_type)
{ 
   int filling = (int)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE); 
 
   return((filling && fill_type) == fill_type) ;
} 
 
 //  -------------------------------------------------- 
   void CloseAll()
{
   for (int index = PositionsTotal()-1; index >=0; index--)
   {
      if (o_position.SelectByIndex(index))
      {
         if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber)
         {
            o_trade.PositionClose(o_position.Ticket());
         }
      }  
    } 
 } 
  
 //----------------------------------------------------------- 
 // Delete all pending orders
 //-------------------------------------
 void DeleteStopOrders()
 {
    for (int i = OrdersTotal() - 1; i >= 0; i-- ) 
   {
      if (o_order.SelectByIndex(i))
         if(o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber)
            o_trade.OrderDelete(o_order.Ticket());
   }
 } 
 
//+------------------------------------------------------------------+

 

Stend_t2.mq5

Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Здравствуйте. У Вас по коду видно, что функция СloseAll() закрывает все ордера, которые открыл сов и это не зависит от количества открытых ордеров, просто закрывает всё. Вам надо переписывать функцию закрытия ордеров с выбором ордера, например по тикету, а в Close(тут тикет ордера) прописывать тикет. Или писать функцию закрытия ордеров, где Вы сможете выбирать с первого или с последнего ордера закрывать сделки, а в Close (тут указать количество ордеров) указывать количество ордеров.

В итоге))) по любому нужно переписывать функцию закрытия ордеров под Ваши условия

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Спасибо, хотелось бы увидеть пример кода. Теоретически я это примерно понимаю.

А с помощью функций из Trade класса это можно прописать ?

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Спасибо, хотелось бы увидеть пример кода. Теоретически я это примерно понимаю.

А с помощью функций из Trade класса это можно прописать ?

 

Так что, нет никого из опытных в этой ветке, кто бы мог дать ссылку или прописать  код закрытия части открытой позици ?

 

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Привет. Вот сам сподобился. Все отрабатывает как задумывал.
Хотелось бы, чтобы кто-то из опытных посмотрел, можно ли использовать
такую конструкцию для реальной торговли.
Можбыть чего-то не хватает или что-то лишнее.
Буду премного благодарен, я ж совсем не Копенгаген в mql5.

Спойлер

 


#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>

CPositionInfo	o_position;
CTrade	      o_trade;
CSymbolInfo	   o_symbol;
COrderInfo	   o_order;

input int	   triger	     = 0;
input double	StartLot	     = 0.01;
input double	lpos_volume	  = 2.0;
input int	   MagicNumber	  = 12345;	//	Magic	nuaber
input int	   Slippage	     = 30;	   //	slippage

int dtriger;
int dStep;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   dtriger = triger ;

   if (!o_symbol.Name(Symbol()))
     return(INIT_FAILED);
   
   RefreshRates();
   
   o_trade.SetExpertMagicNumber(MagicNumber) ;

   if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_FOK))
   { 
      o_trade.SetTypeFilling(ORDER_FILLING_FOK);
   }
   else if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_IOC))
   { 
      o_trade.SetTypeFilling(ORDER_FILLING_IOC);
   }
   else 
   {
      o_trade.SetTypeFilling(ORDER_FILLING_RETURN);
   }
      o_trade.SetDeviationInPoints(Slippage);
   
   if (o_symbol.Digits() == 3 || o_symbol.Digits() == 5 )
   {
      dStep = 10 ;
   }
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
      datetime	            lpos_time	       =	0;
      double	            lpos_price_open    =	0.0;
      ENUM_POSITION_TYPE   lpos_type	       =	-1;
      int	               pos_count	       =	0;
      double	            sum_profit	       = 0;
      double	            lpos_vol	          = 0;
      
   for (int i = PositionsTotal() - 1; i>=0; i--)
   {
      if (o_position.SelectByIndex(i))
      {
         if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber)
         {
            if (o_position.Time() > lpos_time)
            {  
               lpos_time       = o_position.Time();            //OrderOpenTime();
               lpos_price_open = o_position.PriceOpen();       //OrderOpenPrice();
               lpos_type       = o_position.PositionType() ;   //OrderTipe();
               lpos_vol        =  o_position.Volume() ;
             }  
            
            pos_count++;
            sum_profit = sum_profit + o_position.Commission() + o_position.Swap() + o_position.Profit() ;
          }     
       }     
    }          

   // --------------     Считаем кол-во отложенных ордеров   ---------------------------------
  int stop_count=0;

   for (int i=OrdersTotal()-1; i >=0; i--) 
   {
      if (o_order.SelectByIndex(i)) 
      {
         if (o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber) 
           stop_count++;
      }
   }

   if (!RefreshRates())
     return ;
     
   if(dtriger == 0 )
   {
      CloseAll();
      return;               
   } 
   
  // + -----------------    Откраваем Первый ордер -------  ++++++++++
 if (pos_count == 0  && stop_count == 0    )
   {
      if ( dtriger == -2 &&  lpos_type != POSITION_TYPE_SELL)
      {
         o_trade.Sell(StartLot * lpos_volume , o_symbol.Name());  //   S E L L   11111
      }
         if ( dtriger == 2 &&  lpos_type != POSITION_TYPE_BUY )
         {
         o_trade.Buy(StartLot * lpos_volume , o_symbol.Name());   //   B U Y    11111
         }
   }
 //  -----------------------   Закрываем ордера   ---------------------------------------  
   if (pos_count > 0)
      {
         if(dtriger == -2 || dtriger == 0)        // if(dtriger == -2 - закрываем все Sell
         {
            if(lpos_type == POSITION_TYPE_BUY )
            {
               CloseAll();
               return;    
            }
          }
          if(dtriger == -1)                        // if(dtriger == -1 если 2 лота Sell - закрываем половину
            {
            if(lpos_type == POSITION_TYPE_SELL && lpos_vol == StartLot * lpos_volume  )
               {
               o_trade.PositionClosePartial(_Symbol,StartLot * lpos_volume*0.5);
               return;    
               }
            }
     //  ------------------------------------------------------------- 
             if(dtriger == 2 || dtriger == 0)      // if(dtriger == 2 - закрываем все Buy
         {
            if(lpos_type == POSITION_TYPE_SELL )
            {
               CloseAll();
               return;    
            }
          }  
            if(dtriger == 1)                        // if(dtriger == 1 если 2 лота Buy - закрываем половину
            {
            if(lpos_type == POSITION_TYPE_BUY && lpos_vol == StartLot * lpos_volume )
            {
               o_trade.PositionClosePartial(_Symbol,StartLot * lpos_volume*0.5);
               return;    
            }
          }
      }         
       
                           
      if(pos_count>0 && stop_count>0) 
      DeleteStopOrders() ;
  
  } 
//-----------------------------------------------------------
bool RefreshRates()
{
   if (!o_symbol.RefreshRates())
     return(false) ;
         if (o_symbol.Ask() == 0 || o_symbol.Bid() == 0)
         return(false);
         return(true);
}  
//---  --------------------------------------------------------- 
 bool IsFillingTypeAllowed (string symbol, int fill_type)
{ 
   int filling = (int)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE); 
   return((filling && fill_type) == fill_type) ;
} 
 
 //  -------------------------------------------------- 
   void CloseAll()
{
   for (int index = PositionsTotal()-1; index >=0; index--)
   {
      if (o_position.SelectByIndex(index))
      {
         if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber)
         {
            o_trade.PositionClose(o_position.Ticket());
         }
      }  
    } 
 } 
  
 //----------------------------------------------------------- 
 // Delete all pending orders
 //-------------------------------------
 void DeleteStopOrders()
 {
    for (int i = OrdersTotal() - 1; i >= 0; i-- ) 
   {
      if (o_order.SelectByIndex(i))
         if(o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber)
            o_trade.OrderDelete(o_order.Ticket());
   }
 } 
 
//+------------------------------------------------------------------+

 

_Stend_t7.mq5

Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

  • 4 weeks later...
Доработка советников: общая тема Опубликовано

Здравствуйте!!! Посмотрите пожалуйста то что я написал. Не пойму почему открывается только один ордер и не срабатывает закрытие ордеров.

M15.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
15 минут назад, molot_1 сказал:

почему открывается только один ордер

Здравствуйте. Потому что Вы сравниваете количество открытых бай ордеров плюс количество открытых селл ордеров равно нулю, тогда открываем селл ордер, он у Вас все время и открывается. Дальше идет такая же проверка для открытия бай ордера, но у Вас уже открыт селл ордер и суммарное количество ордеров уже не равно нулю, что является не соблюдением условия и ордер на бай не открывается. Сравнивайте только для открытия бай количество бай ордеров, а для селл количество селл ордеров...типо CountSell() == 0 для селл и все

 

20 минут назад, molot_1 сказал:

не срабатывает закрытие ордеров

Во первых у Вас идет строгое сравнение с Bid == EMA_18, используйте больше или меньше. Например если цена бид >= ЕМА_18 

Во вторых у Вас не правильно написана функция закрытия. Вы пытаетесь закрыть при условии OrdersTotal() -1; и не выбрали ордер, не по тику, не по типу

Функция просто пытается закрыть последний ордер по аск, а если это ордер на бай был? Переписывайте функцию!

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
32 минуты назад, loveЦ сказал:

Здравствуйте. Потому что Вы сравниваете количество открытых бай ордеров плюс количество открытых селл ордеров равно нулю, тогда открываем селл ордер, он у Вас все время и открывается. Дальше идет такая же проверка для открытия бай ордера, но у Вас уже открыт селл ордер и суммарное количество ордеров уже не равно нулю, что является не соблюдением условия и ордер на бай не открывается. Сравнивайте только для открытия бай количество бай ордеров, а для селл количество селл ордеров...типо CountSell() == 0 для селл и все

 

Во первых у Вас идет строгое сравнение с Bid == EMA_18, используйте больше или меньше. Например если цена бид >= ЕМА_18 

Во вторых у Вас не правильно написана функция закрытия. Вы пытаетесь закрыть при условии OrdersTotal() -1; и не выбрали ордер, не по тику, не по типу

Функция просто пытается закрыть последний ордер по аск, а если это ордер на бай был? Переписывайте функцию!

Спасибо Вам!!! Я исправил так как Вы сказали, ордера закрываются, а открытие не исправилось. Может я что то не правильно понял? 

M15.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Вы сделали только правильно открытие, а закрытие Вы ничего не исправили. Посмотрите, там где у Вас закрытие не правильно идет выборка ордеров. Тут много вариантов. Можно закрывать по тикету ордер. Для этого надо запомнить тикет при открытие ордера, а потом, при закрытие, выбрать его и закрыть.

 

Если я сложно объяснил, извините. Проще поищите в инете "функция закрытия ордера" и изучите ее подробней, может она Вам и поможет)))

Ссылка на сообщение
Поделиться на другие сайты

  • 4 weeks later...
Доработка советников: общая тема Опубликовано

Просьба ко всем программистам кто может проверить советник. Проблема в том что он сам закрыл сетку ордеров. А теперь по порядку, Есть советник Friend-3(3), на его основе я выкинул все (для меня) не нужное и создал его более упрощенную копию Friend Setka Order-v2. В пятницу 11,10 была открыта сетка ордеров в buy по gbpusd, ордера открыты по следующим ценам:

1.26938

1.26838

1.26738

1.26638

1.26538

1.26438

Сегодня при включении терминала в 06:20 по Киеву, советник выставил отложенный ордера 1.25950, то есть все как положенно, а через две минуты закрыл полностью всю сетку ордеров (естественно с минусом). Просьба кто может проверьте логику его работы, сам никак не могу с этим разобраться.

Friend Setka Order-v2.mq4 Friend-3(3).mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
21 минуту назад, KotoffMatroskin сказал:

Просьба ко всем программистам

Здравствуйте. В вашем переделанном советнике нет автозакрытия позиций, т.е. закрытия каких либо позиций по каким либо условиям. В коде заметил только ручное закрытие ордеров, с помощью кнопок закрытия. Поэтому, делаю вывод, вы случайно нажали или кто-то))) на закрытие.Еще раз, у вас только одно условие для закрытия ордеров - это ручное, с помощью кнопки!

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
24 минуты назад, loveЦ сказал:

Еще раз, у вас только одно условие для закрытия ордеров - это ручное, с помощью кнопки!

Или дядя Коля закрыл - мы же не знаем какая нагрузка была в момент закрытия и условий счёта...

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

loveЦ, спасибо за помощь, интересовало именно чтобы где то не было автозакрытие

 

Oll, дядя Коля не приходил)))), на момент закрытия ордеров просадка была 3% от депо.

Изменено пользователем KotoffMatroskin
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
1 час назад, loveЦ сказал:

Так в итоге что было?:-s

Получается ручное закрытие?

Скорее всего, что так. Убрал из сова кнопку ручного закрытия :) совсем.

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Добрый день! 

 

Помогите, пожалуйста, исправить советник, торгующий по Heiken Ashi для MT5. В сети нашел только его реверсный аналог. Сам пробовал поменять фукции покупки и продажи, но что-то пошло не так :)

HAN.mq5

Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Доработка советников: общая тема Опубликовано

Добрый день уважаемые знатоки MQL!
Гоняю советник в тестере, не могу разобраться - применимо к Buy ордерам трал включается и работает как надо, а по отношению к Sell ордерам вообще не включается.

Кусок кода отвечающего за трал прилагаю. Помогите разобраться - все ли корректно написано?

 for(i=0;i<OrdersTotal();i++) // проходим по всем существующим ордерам-----------------------------------
   {
      OrderSelect(i, SELECT_BY_POS); // закрепляем очередной ордер, типа с ним работать бум
      if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) continue; // Если не наш - смотрим следующий
      
     if(OrderType()==OP_BUY) // если он открытый в покупку, то...
      {
         if(BezubLevel>0 && BID-OrderOpenPrice()>=BezubLevel && OrderStopLoss()<OrderOpenPrice())
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BezubSize*PNT,OrderTakeProfit(),0,CLR_NONE);
         if(TrailStop>=STP && OrderStopLoss()<=BID-(TrailStop+TrailStep)*PNT && OrderOpenPrice()<=BID-(TrailStop+TrailStep)*PNT)
            OrderModify(OrderTicket(),OrderOpenPrice(),BID-TrailStop*PNT,OrderTakeProfit(),0,CLR_NONE);
       
      } else // иначе, если это открытый ордер в продажу то всё как и с покупкой но наоборот
      if(OrderType()==OP_SELL)
      {
         if(BezubLevel>0 && OrderOpenPrice()-ASK>=BezubLevel && OrderStopLoss()>OrderOpenPrice())
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BezubSize*PNT,OrderTakeProfit(),0,CLR_NONE);
         if(TrailStop>=STP && OrderStopLoss()>=ASK+(TrailStop+TrailStep)*PNT && OrderOpenPrice()>=ASK+(TrailStop+TrailStep)*PNT)
            OrderModify(OrderTicket(),OrderOpenPrice(),ASK+TrailStop*PNT,OrderTakeProfit(),0,CLR_NONE);
      }
   } 

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
13 часов назад, Scaels сказал:

Помогите разобраться - все ли корректно написано?

запутанный кусок. Я вообще цену открытия ордера не учитываю. 
Могу предположить, что OrderStopLoss()==0 для продаж, поэтому не идет модификация. 
Попробуй тралл от Кима.

 

e-Trailing.mq4

Изменено пользователем Rever27
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
13 часов назад, Scaels сказал:

Помогите разобраться - все ли корректно написано?

И попробуйте всё же выбирать правильно ордера 

 

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

  • 5 weeks later...
Доработка советников: общая тема Опубликовано

Привет! нужно очень прикрутить к советнику закрытие ордера по появления сигнала от индикатора.
 

Super Arrow Indicator TT [MA+RSI+BB+BrBl]_ALL.png

Sovetchik.mq4 Super Arrow Indicator TT [MA+RSI+BB+BrBl].ex4 Super Arrow Indicator TT [MA+RSI+BB+BrBl].mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Здравствуйте! Помогите напишите начало кода... Советник должен открывать вход в сделку от моего уровня. От горизонтальной линии. 


это просто должно быть поле ввода типа decimal


и потом эту переменную проверяю в коде и относительно ее значения и торговать.

 

советник на mql4

Изменено пользователем Apro94
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
9 часов назад, Apro94 сказал:

Советник должен открывать вход в сделку от моего уровня. От горизонтальной линии. 

Есть готовые советники, посмотрите этот и от Кима прикрепил ниже (краткое описание здесь), думаю ещё есть

e-TFL.mq4 e-TFL_v2.mq4

Ссылка на сообщение
Поделиться на другие сайты

  • idinesh changed the title to Assae Elite Pro tlap version source code need i have plan convert this mt4 to mt5 and it possible mt4 dll file modified mt5 version
  • Pavel888 pinned this тема

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • ×
    ×
    • Создать...