Вопрос по iMA - страница 2

 

Я думаю тут не связано с NormalizeDouble.

Я когда указываю лот, например

request.volume=0.1;

все работает, но мне нужно, чтоб значение было volume = текущий баланс / Lots.

 
labvic:

Я думаю тут не связано с NormalizeDouble.

Я когда указываю лот, например

все работает, но мне нужно, чтоб значение было volume = текущий баланс / Lots.

Именно всё связанно с неправильным применением NormalizeDouble. 

Тип dooble относится к вещественным типом - в памяти компьютера он храниться с неким приближением. 

Размер лота нужно нормировать не просто с точностью какого-то знака, а соотносить с шагом лотности для данного инструмента. Цену (относится к цене отложенного ордера и к уровням Stop loss и Take profit) также нужно нормировать не просто с какой-то там точностью, а соотносить с шагом цены для данного инструмента.

Можно почитать статью: Какие проверки должен пройти торговый робот перед публикацией в Маркете

 

Добрый день, коллеги.

Столкнулся с проблемой - функции iMA,iSAR,iMACD не меняют значения, с каждым баром выдается одно и тоже число.

Ниже пример простого кода из этого поста, мне выдается: 2019.01.25 19:57:02.083    2019.01.23 23:49:35   Alert: MA5=9.881312916824931e-324  MA10=9.881312916824931e-324

Числа не меняются, меняется только дата и время.

Код:

//+------------------------------------------------------------------+
//|                                                    _Proverka.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

double handle_iMA_5;
double handle_iMA_10;
int         handle_iMA_Fast;
int         handle_iMA_Slow;
double MA5[];
double MA10[];

int OnInit()
  {
//--- create handle of the indicator iMA
   handle_iMA_Fast=iMA("RIH9",PERIOD_H1,10,0,MODE_EMA,PRICE_CLOSE);
//--- if the handle is not created 
   if(handle_iMA_Fast==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iMA (Fast) indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_SUCCEEDED);
     }
//--- create handle of the indicator iMA
   handle_iMA_Slow=iMA("RIH9",PERIOD_H1,20,0,MODE_EMA,PRICE_CLOSE);
//--- if the handle is not created 
   if(handle_iMA_Slow==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iMA (Slow) indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_SUCCEEDED);
     }


   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {



   CopyBuffer(handle_iMA_5,0, 0, 1, MA5);
   CopyBuffer(handle_iMA_10,0, 0, 1, MA10); 
   ArraySetAsSeries(MA5,true); 
   ArraySetAsSeries(MA10,true); 
   Alert("MA5=",MA5[0],"  MA10=",MA10[0]);
  }  



 

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Диверсификация рисков Если хранить капитал в равных...
 
Siost:

Добрый день, коллеги.

Столкнулся с проблемой - функции iMA,iSAR,iMACD не меняют значения, с каждым баром выдается одно и тоже число.

Ниже пример простого кода из этого поста, мне выдается: 2019.01.25 19:57:02.083    2019.01.23 23:49:35   Alert: MA5=9.881312916824931e-324  MA10=9.881312916824931e-324

Числа не меняются, меняется только дата и время.

Код:



 

1. Вы копируете в воздух, без обратной связи - нигде нет проверки результата копирования.

2. Не понятно на каком таймфрейме Вы запускаете советник

3. Когда что-то не понятно - используйте символ по которому гарантированно есть история - например "EURUSD".

4. Последний билд - 1978, если у Вас билд ниже - обновитесь.
 
Siost:

Добрый день, коллеги.

Столкнулся с проблемой - функции iMA,iSAR,iMACD не меняют значения, с каждым баром выдается одно и тоже число.

Ниже пример простого кода из этого поста, мне выдается: 2019.01.25 19:57:02.083    2019.01.23 23:49:35   Alert: MA5=9.881312916824931e-324  MA10=9.881312916824931e-324

Числа не меняются, меняется только дата и время.

Код:

...
Alert("MA5=",DoubleToString(MA5[0],Digits()),"  MA10=",DoubleToString(MA10[0],Digits())); 
...
Причина обращения: