Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 256

 
atztek #:
На старом ноуте с процессором i3 до сих пор был установлен WinXP 32 бит, не поддерживаемый МТ5. Недавно увеличил память до 6 Гб, хочу установить 64 бит ОС, в которой бы работали МТ4 и МТ5. Что предпочтительней - Win7 или Win8.1 

мне 7ка ближе. В конторе и 8ка и 10ка и 7ка. Терминалы на 7ке стабильней. По непонятным причинам тестеры в 7ке быстрее на слабых компах. 8ка вообще переходная, как то не очень. Жрет ресурсов больше всех. 10ка сама по себе требует для себя ресурсов больше.

 
atztek #:
На старом ноуте с процессором i3 до сих пор был установлен WinXP 32 бит, не поддерживаемый МТ5. Недавно увеличил память до 6 Гб, хочу установить 64 бит ОС, в которой бы работали МТ4 и МТ5. Что предпочтительней - Win7 или Win8.1 ?

Заходите на сайт производителя вашего ноута и смотрите под какую максимальную ОС есть официальные драйвера, та ОС и будет предпочтительная. Если драйвера есть под Win 8.1 то можно попробовать Win 10. Если драйвера заканчиваются на Win 7 то выбор ОС небольшой.

 

добрый день, помогите пожалуйста.

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

есть два предупреждения return value of 'OrderClose' should be checked также прошу исправить


extern double Lots               = 0.1;

extern double MaximumRisk        = 0.3;

extern double DecreaseFactor     = 100;

double  st1,st2;

//+------------------------------------------------------------------+

//| Calculate open positions                                         |

//+------------------------------------------------------------------+

int CalculateCurrentOrders(string symbol)

  {

   int buys=0,sells=0;

//----

   for(int i=0;i<OrdersTotal();i++)

     {

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

      if(OrderSymbol()==Symbol())

        {

         if(OrderType()==OP_BUY)  buys++;

         if(OrderType()==OP_SELL) sells++;

        }

     }

//---- return orders volume

   if(buys>0) return(buys);

   else       return(-sells);

  }

//+------------------------------------------------------------------+

//| Calculate optimal lot size                                       |

//+------------------------------------------------------------------+

double LotsOptimized()

  {

   double lot=Lots;

   int    orders=HistoryTotal();     // history orders total

   int    losses=0;                  // number of losses orders without a break

//---- select lot size

   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,3);

//---- calcuulate number of losses orders without a break

   if(DecreaseFactor>0)

     {

      for(int i=orders-1;i>=0;i--)

        {

         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }

         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;

         //----

         if(OrderProfit()>0) break;

         if(OrderProfit()<0) losses++;

        }

      if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);

     }

//---- return lot size

   if(lot<0.1) lot=0.1;

   return(lot);

  }

//+------------------------------------------------------------------+

//| Check for open order conditions                                  |

//+------------------------------------------------------------------+

void CheckForOpen()

  {

  int res;

 if(Volume[0]>1) return;


//---- покупаем -----------------------

  

  if ( (iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))) 

     if  ((Open[0]<Open[1])&&(Close[0]<Close[1])) 

    

  //  

     {

      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,15,0,"",0,0,Blue);

      return;

     }

//---- продаем ------------------------

if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0)))  

    if((Open[0]>Open[1])&&(Close[0]>Close[1]))

     {

      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,15,0,"",0,0,Red);

      return;

     }

     

  }

//------------Закрытие позиций----------------------------------------

void CheckForClose2()

{

 if(OrderType()==OP_BUY)  OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

 if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);

//CheckForOpen();

}  


//

//+------------------------------------------------------------------+

//| Check for close order conditions                                 |

//+------------------------------------------------------------------+

void CheckForClose1()

  {

   if(Volume[0]>1) return;

//проверка на проигрыш   

if ((AccountProfit()<0)&&(MathAbs(AccountProfit())>=(AccountMargin()*MaximumRisk))) 

   { 

   CheckForClose2();

   Print(" убыток", AccountProfit());

   }/**/

      //---- check order type 

      if(OrderType()==OP_BUY)

        {

         if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0)))

         if ((Open[0]>Open[1])&&(Close[0]>Close[1]))

         CheckForClose2();  

        }

      if(OrderType()==OP_SELL)

        {

         if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0)))

             if ((Open[0]<Open[1])&&(Close[0]<Close[1]))

          CheckForClose2();

        }


  }

  

//+------------------------------------------------------------------+

//| Start function                                                   |

//+------------------------------------------------------------------+


void start()

 {


//---- calculate open orders by current symbol

   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();

   else                                    CheckForClose1();

//---

  }

//+-----------------------------------------------+

MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
  • www.metaquotes.net
Торговая платформа MetaTrader 5 - это бесплатный инструмент трейдера, позволяющий торговать на форексе и фондовых биржах
 
bob88 #:



extern double Lots               = 0.1;

extern double MaximumRisk        = 0.3;

extern double DecreaseFactor     = 100;

extern int stopLoss = 15;
extern int takeProfit = 30;


//+------------------------------------------------------------------+

//| Check for open order conditions                                  |

//+------------------------------------------------------------------+

void CheckForOpen()

  {

  int res;
  double openPrice, sl, tp;

 if(Volume[0]>1) return;



//---- покупаем -----------------------

  

  if ( (iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))) 

     if  ((Open[0]<Open[1])&&(Close[0]<Close[1])) 

    

  //  

     {
      openPrice = NormalizeDouble(Ask, Digits);
      sl = NormalizeDouble(openPrice - stopLoss * Point, Digits);
      tp = NormalizeDouble(openPrice + takeProfit * Point, Digits);
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),openPrice,3,sl,tp,"",0,0,Blue);

      return;

     }

//---- продаем ------------------------

if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0)))  

    if((Open[0]>Open[1])&&(Close[0]>Close[1]))

     {
      openPrice = NormalizeDouble(Bid, Digits);
      sl = NormalizeDouble(openPrice + stopLoss * Point, Digits);
      tp = NormalizeDouble(openPrice - takeProfit * Point, Digits);
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),openPrice,3,sl,tp,"",0,0,Red);

      return;

     }

     

  }

Добавил вычисление СЛ и ТП, но не мешало бы добавить их проверку. Как это сделать можно прочитать в статье https://www.mql5.com/ru/articles/2555#invalid_SL_TP_for_position.

Предупреждение ваше не критично. Просто результат OrderClose игнорируется, поэтому и предупреждение. Можете сделать, например, чтобы функция  CheckForClose2 возвращала результат выполнения  OrderClose. А можете оставить как есть.

Еще, что я заметил, это странные названия функций  CheckForClose2, CheckForOpen и т.п.  Слово "Check" значит проверять. А у вас они выполняют торговые операции.

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку для обеспечения единого стандарта качества. В этой статье мы расскажем о наиболее частых ошибках, которые допускают разработчики в своих технических индикаторах и торговых роботах. А также покажем как самостоятельно проверить свой продукт перед отправкой в Маркет.
 
Всем здравствуйте. Может кто-нибудь помочь подредактировать советника. Нужно убрать функцию открытия ордеров, чтобы советник сам не открывал ордера, а работал только с открытыми вручную ордерами. Заранее спасибо.  
Файлы:
 
Иван Макаров #:
Всем здравствуйте. Может кто-нибудь помочь подредактировать советника. Нужно убрать функцию открытия ордеров, чтобы советник сам не открывал ордера, а работал только с открытыми вручную ордерами. Заранее спасибо.  

Убираем функцию открытия ордеров и устанавливаем magic в 0. Робот будет подхватывать открытые вручную ордера и сопровождать их. Если нужно, чтобы робот сопровождал только отдельные ордера, а не все подряд, то делаем вход в Buy и Sell, например, по нажатию соответствующей кнопки которые робот должен создать и обрабатывать в OnChartEvent событие CHARTEVENT_OBJECT_CLICK каждой из них. Magic в этом случае должен быть больше 0, чтобы работать только со своими ордерами.

 
Приветствую. Может кто подсказать, как добавить функцию торговли по времени в советник mt4. Чтобы советник работал допустим с 00.00 до 23.00, а оставшийся час ничего не делал. Может есть у кого кусок кода и как его реализовать. Спасибо.
 
Иван Макаров #:
Приветствую. Может кто подсказать, как добавить функцию торговли по времени в советник mt4. Чтобы советник работал допустим с 00.00 до 23.00, а оставшийся час ничего не делал. Может есть у кого кусок кода и как его реализовать. Спасибо.

https://www.mql5.com/ru/forum/131859/page9#434297

isTradeTimeString()

isTradeTimeInt()

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 

Здравствуйте.

Такой глюк... Тестирую одного! Эксперта на 3-х компьютерах. На 2-х работают по коду четко, а на одном постоянно какие то косяки с расчетами - в основном неправильно рассчитывает стоп лосы, или ложные срабатывания.

Железо не новое, но и не древнее.

Кто то сталкивался с таким?

 
Zalevsky1234 #:

Здравствуйте.

Такой глюк... Тестирую одного! Эксперта на 3-х компьютерах. На 2-х работают по коду четко, а на одном постоянно какие то косяки с расчетами - в основном неправильно рассчитывает стоп лосы, или ложные срабатывания.

Железо не новое, но и не древнее.

Кто то сталкивался с таким?

Все три подключены к одному серверу брокера/дилера? (Т.е., история одна и та же?) Если нет - первым делом в эту сторону копать.