Маркет: no trading operations - страница 7

 
Vitaly Muzichenko:

Собери нормальную функцию с возвратом лота, а не проверкой true/false

А ему нравиться делать лишние проверки. Нужно ведь проверить не тестер стратегий ли это, потом дополнительно проверить что вернула функция по проверке лота (CheckVolumeValue)...

 
Evgeny Belyaev:

А ты читаешь по диагонали?

Еще ко мне вопросы есть?

Где там твой грааль когда сигнал увидим? 

ты советники же не скидывал в Маркет, судя по составу продуктов

так что...

адью

;)

 
Vladislav Andruschenko:


Ну так не должно быть проблем с этим тогда. 

такой же мультивалютник, проходит тест.

А no trading operation может быть от настроения тестера :-) - дада он бывает не в настроении (обновляется, спит, выходной) и он не совершает операций. 

Достаточно попробовать другой спред или подождать сутки и он снова в настроении все пропускает. 

Я проверку прохожу без проблем, функции работают отменно. Убрал проверку на минимальный лот, было так, что если минимально разрешённый более 0.01, то не торгуем.
В валидаторе видать лот больше 0.01, поэтому не торговал.

 
Renat Akhtyamov:

ты советники же не скидывал в Маркет, судя по составу продуктов

так что...

адью

;)

Как бы скидывал. так что опять облом. Тебе ссылку в личку кинуть или ты сам найдешь?

Где там твой грааль когда сигнал увидим? 

Даже работу для чела делал


 

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

Например пользователь допустил опечатку и написал 0.005 а хотел торговать лотом 0.05 - при вашей проверке сов начнет торговать лотом 0.01 (допустим что 0.01 это мин лот)

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

Я считаю что здесь уже дело личного решения, кто как хочет так и....

К стати, вот часть кода (я тоже раньше писал) при котором проверка тоже не проходилась:

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }
 ......

}
 
Evgeny Belyaev:

Как бы скидывал. так что опять облом. Тебе ссылку в личку кинуть или ты сам найдешь?

Где там твой грааль когда сигнал увидим? 

с охотниками за чужими идеями предпочитаю не разговаривать на подобные темы

 
Renat Akhtyamov:

с охотниками за чужими идеями предпочитаю не разговаривать на подобные темы

А почему тогда разговариваешь ? ) 

Ты меня утомил. Мы все ждем сигнала с просчитанными объемами с CME. А на CME клиринга нет?

 
Maksim Neimerik:

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

Например пользователь допустил опечатку и написал 0.005 а хотел торговать лотом 0.05 - при вашей проверке сов начнет торговать лотом 0.01 (допустим что 0.01 это мин лот)

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

Я считаю что здесь уже дело личного решения, кто как хочет так и....

К стати, вот часть кода (я тоже раньше писал) при котором проверка тоже не проходилась:

Сначала делать нужно всё, а уж потом проверять на мин/мах

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
 ...

   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }
}

ну и сразу при возврате делать нормализацию

return(NormalizeDouble(volume,LotDigit(symb)));
 
Vitaly Muzichenko:

Сначала делать нужно всё, а уж потом проверять на мин/мах

ну и сразу при возврате делать нормализацию

В общем ладно, пора заканчивать эту беседу.

Какие-то мнимые недочеты вы увидели сразу а суть (я писал о возврате лота) осталась без вашего внимания...

Всем спасибо за помощь!

 
Maksim Neimerik:

В общем ладно, пора заканчивать эту беседу.

Какие-то мнимые недочеты вы увидели сразу а суть (я писал о возврате лота) осталась без вашего внимания...

Всем спасибо за помощь!

Максим, вы меня слышите?

Перечитайте код, который Я дал и к нему сообщение

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Маркет: no trading operations

Vitaly Muzichenko, 2020.01.27 18:37

Сначала делать нужно всё, а уж потом проверять на мин/мах

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
 ...

   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }
}

ну и сразу при возврате делать нормализацию

return(NormalizeDouble(volume,LotDigit(symb)));

У вас идёт проверка сразу на мин/мах, а потом расчёты, так вот в расчёте уже может быть что угодно. Нужно после расчётов проверять на мин/мах, а не ДО

---------------------------

А вот моё)