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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Pavel Gotkevitch
46062
Pavel Gotkevitch  

Отправил на проверку бесплатный советник. Автоматическая проверка выдала результат "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
21126
Ihor Herasko  

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

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

Pavel Gotkevitch
46062
Pavel Gotkevitch  
Ihor Herasko:

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

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

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

Alexey Viktorov
25876
Alexey Viktorov  
Pavel Gotkevitch:

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

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

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

Dmitry Fedoseev
56777
Dmitry Fedoseev  
Pavel Gotkevitch:

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


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

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

Pavel Gotkevitch
46062
Pavel Gotkevitch  
Alexey Viktorov:

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

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


Alexey Viktorov
25876
Alexey Viktorov  
Pavel Gotkevitch:

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

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

Pavel Gotkevitch
46062
Pavel Gotkevitch  
Dmitry Fedoseev:

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

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

Dmitry Fedoseev
56777
Dmitry Fedoseev  
Pavel Gotkevitch:

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

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

Pavel Gotkevitch
46062
Pavel Gotkevitch  
Alexey Viktorov:

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

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

Pavel Gotkevitch
46062
Pavel Gotkevitch  

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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий