Уважаемые программисты, помогите разрешить проблему.

 

Отправил на проверку бесплатный советник. Автоматическая проверка выдала результат "Invalid volume" (см. скриншот).


При проверке в тестере стратегий в разных режимах и с разными входными параметрами никаких ошибок нет. Прилагаю часть кода советника:

int LotsDigits=2;
double LotsMax,LotsMin;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
LotsMax=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
LotsMin=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
double Step=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
if(Step==0.1) LotsDigits=1;
if(Step==1.0) LotsDigits=0;

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()

//+------------------------------------------------------------------+
double CalcLots()
  {
   double Lots=0.0;
   if(Lot==Percent)
     {
      Lots=NormalizeDouble(AccountInfoDouble(ACCOUNT_BALANCE)*Lot_Percent/100000.0,LotsDigits);
     }
   else
     {
      Lots=NormalizeDouble(Fixed_Lot,LotsDigits);
     }
   if(Lots>LotsMax) Lots=LotsMax;
   if(Lots<LotsMin) Lots=LotsMin;
   return(Lots);
  }
//+------------------------------------------------------------------+
 

Читайте статью КАКИЕ ПРОВЕРКИ ДОЛЖЕН ПРОЙТИ ТОРГОВЫЙ РОБОТ ПЕРЕД ПУБЛИКАЦИЕЙ В МАРКЕТЕ. В частности раздел проверки объемов.

Кроме того, что сама проверка сделана неправильно, еще и сравнение вещественных чисел напрямую допускается.

 
Ihor Herasko:

Читайте статью КАКИЕ ПРОВЕРКИ ДОЛЖЕН ПРОЙТИ ТОРГОВЫЙ РОБОТ ПЕРЕД ПУБЛИКАЦИЕЙ В МАРКЕТЕ. В частности раздел проверки объемов.

Кроме того, что сама проверка сделана неправильно, еще и сравнение вещественных чисел напрямую допускается.

Я, конечно же, прочитал раздел проверки объемов. Но...
Я достаточно квалифицированный электронщик, но в программировании, увы, дилетант.
Код писал программист, но связь с ним сейчас, к сожалению, утеряна. Сам же я решить этот вопрос не могу.

 
Pavel Gotkevitch:

Я, конечно же, прочитал раздел проверки объемов. Но...
Я достаточно квалифицированный электронщик, но в программировании, увы, дилетант.
Код писал программист, но связь с ним сейчас, к сожалению, утеряна. Сам же я решить этот вопрос не могу.

Не сочтите за сарказм, советник показывает удивительные результаты? Или по каким-то другим причинам вы его хотите в маркет засунуть?

По сути вы предлагаете исправить чужой, никчёмный код. Если просто подсказать, то вряд-ли поможет. Хотя готовый код проверки можно найти в CodeBase.

 
Pavel Gotkevitch:

Отправил на проверку бесплатный советник. Автоматическая проверка выдала результат "Invalid volume" (см. скриншот).


При проверке в тестере стратегий в разных режимах и с разными входными параметрами никаких ошибок нет. Прилагаю часть кода советника:

Есть простой способ. В окне свойств наверняка есть переменная лот, поставьте по умолчанию 0. А в коде, если значение переменной 0, присвойте ей SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN). Если же лот прогрессивный, то немного сложнее задача... если надо.

 
Alexey Viktorov:

Не сочтите за сарказм, советник показывает удивительные результаты? Или по каким-то другим причинам вы его хотите в маркет засунуть?

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


 
Pavel Gotkevitch:

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

Ну если хотите кидайте его мне в личку я сделаю.

 
Dmitry Fedoseev:

Есть простой способ. В окне свойств наверняка есть переменная лот, поставьте по умолчанию 0. А в коде, если значение переменной 0, присвойте ей SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN). Если же лот прогрессивный, то немного сложнее задача... если надо.

Советник может использовать как постоянный (Fixed Lot) , так и прогрессивный (Lot Percent) лот.

 
Pavel Gotkevitch:

Советник может использовать как постоянный (Fixed Lot) , так и прогрессивный (Lot Percent) лот.

По умолчанию сделать постоянный лот.

 
Alexey Viktorov:

Ну если хотите кидайте его мне в личку я сделаю.

Благодарю. Бросил в личку.

 

Как оказалось, в коде советника действительно были проблемы, но Alexey Viktorov все исправил. И сделал он это очень качественно и бесплатно.
А из личного общения с Алексеем я понял, что он не только крутой программист, но и классный парень.
Леша, спасибо тебе за проделанную работу, доброжелательность и бескорыстие. 

Причина обращения: