Едино кратное открытие и закрытие ордера по любой паре и ТФ в начале теста в тестере стратегий

 

Коллеги трейдеры и программисты, приветствую.

При попытке добавить написанного советника на маркет, автоматическая система проверки отклонила файлы с формулировкой "нет активности по таким-то парам". Советник написан под конкретную, йеновую, пару и её особенности торговли.

Знакомый трейдер подсказал, что нужно в коде прописать такие строчки, чтобы при запуске тестирования советника в тестере стратегий он едино кратно открыл сделку и тут же её закрыл. Тем самым система будет видеть что советник "работает" на всех парах.

Прошу помощи в этом вопросе.

Ещё раз что нужно: дополнить код такими строками, чтобы при старте тестирования в тестере стратегий советник открыл и тут же закрыл ордер. Только в тестере! Не при нанесении на график в лайв торговле.

В идеале - конкретный кусок кода с подсказкой в какую часть основного кода его вставить.

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


Всем спасибо кто откликнется. Профита и здоровья.

 
Nikolay Shorin:

Коллеги трейдеры и программисты, приветствую.

При попытке добавить написанного советника на маркет, автоматическая система проверки отклонила файлы с формулировкой "нет активности по таким-то парам". Советник написан под конкретную, йеновую, пару и её особенности торговли.

Знакомый трейдер подсказал, что нужно в коде прописать такие строчки, чтобы при запуске тестирования советника в тестере стратегий он едино кратно открыл сделку и тут же её закрыл. Тем самым система будет видеть что советник "работает" на всех парах.

Прошу помощи в этом вопросе.

Ещё раз что нужно: дополнить код такими строками, чтобы при старте тестирования в тестере стратегий советник открыл и тут же закрыл ордер. Только в тестере! Не при нанесении на график в лайв торговле.

В идеале - конкретный кусок кода с подсказкой в какую часть основного кода его вставить.

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


Всем спасибо кто откликнется. Профита и здоровья.

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

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

...

Nikolay Shorin, 2023.06.21 08:59

Всем доброго времени суток.


Написал советника. Пытаюсь добавить его на маркет. Во время автоматической валидации выдаёт сообщение в виде "Нет торговых операций по EURUSD H1" и ещё 3 таких сообщения по другим парам и ТФ.

Советник написан для EURJPY. И согласно его настроек, он по не йеновым парам и золоту торговать не будет вообще. Поэтому и не проходит валидацию.

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

Не при добавлении на график или где-то ещё, а именно когда запускается тестирование в тестере стратегий. Едино кратно открыл и закрыл тут же.


Если у кто-то имеет эти несколько строк кода, которые такое делают и помогут пройти валидацию, буду благодарен. Да и многим другим поможете одновременно.


 
Volodymyr Zubov #:

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

Какие обманки, вы вообще о чем?!

Советник написан на индикаторе StDev. Если бы вы хотя бы спросили - то поняли почему он не открывает. Но не поленюсь, и не буду вам грубостью на грубость отвечать.

У индикатора StDev свои особенности. Если оптимизировать его под JPY пары, то он физически не получит сигнал для не JPY пар, XAU, XAG, Brent и других пар. Т.е. для валют, которые вне диапазона JPY пар, сигнала физически не будет!

Оптимизация была конкретно под EURJPY, советник предназначен именно для EURJPY. Т.к. у этой пары свои особенности.

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

 
Sergey Golubev #:

Сергей, здравствуйте. Я выше описал ситуацию. Надеюсь хотя бы Вы сможете помочь решить вопрос.

Заранее спасибо.

 
Nikolay Shorin #:

Сергей, здравствуйте. Я выше описал ситуацию. Надеюсь хотя бы Вы сможете помочь решить вопрос.

Заранее спасибо.

А в чем проблема? Код советника Вы писали? В OnInit добавить проверку IsTesting и если тру, то OpenOrder(); CloseOrder().

 
Nikolay Shorin #:

Сергей, здравствуйте. Я выше описал ситуацию. Надеюсь хотя бы Вы сможете помочь решить вопрос.

Заранее спасибо.

Тут все индивидуально.

1. Можете почитать про это в блог посте тут:
Solving Automatic Validation Problems Arising During Product Submission in MQL5 Market
(там на английском, но писал пользователь отсюда из русскоязычного форума, и там несколько коротких абзацев об этом с примерами).


2. Есть одна обзорная англоязычная ветка, где собраны все возможные решения (которые найдены тут и на англ форуме) - с примерами как это профиксить: there are no trading operations
Сейчас почитаю эту ветку и перепощу несколько постов с предложениями как это решить (некоторые посты будут с машинным переводом).

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

Solving Automatic Validation Problems Arising During Product Submission in MQL5 Market
Solving Automatic Validation Problems Arising During Product Submission in MQL5 Market
  • 2017.08.07
  • www.mql5.com
If you're distributing some products for MetaTrader 4/5 via the Market, you probably know that a special "welcome" stage of automatic product validation has been added recently by MetaQuotes on the
 

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

нет торговых операций

Адан Тор Кальвет , 2018.06.18 13:11

Эй, это то, что вам нужно:

1- Проверьте правильность volume для работы:


 bool CheckVolumeValue( double volume, string & description )

  {

//--- minimal allowed volume for trade operations

   double min_volume= SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_MIN );

   if (volume<min_volume)

     {

       description = StringFormat ( "Volume is less than the minimal allowed SYMBOL_VOLUME_MIN=%.2f" ,min_volume);

       return ( false );

     }



//--- maximal allowed volume of trade operations

   double max_volume= SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_MAX );

   if (volume>max_volume)

     {

       description = StringFormat ( "Volume is greater than the maximal allowed SYMBOL_VOLUME_MAX=%.2f" ,max_volume);

       return ( false );

     }



//--- get minimal step of volume changing

   double volume_step= SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_STEP );



   int ratio=( int ) MathRound (volume/volume_step);

   if ( MathAbs (ratio*volume_step-volume)> 0.0000001 )

     {

       description = StringFormat ( "Volume is not a multiple of the minimal step SYMBOL_VOLUME_STEP=%.2f, the closest correct volume is %.2f" ,

                               volume_step,ratio*volume_step);

       return ( false );

     }

   description = "Correct volume value" ;

   return ( true );

  }

2- Проверить, достаточно ли денег для открытия позиции. Например, если баланс вашего счета уменьшится, это будет время, когда появится сообщение об ошибке «недостаточно денег для открытия позиции», поэтому вы получаете эту ошибку.


 bool CheckMoneyForTrade( string symb, double lots, int type)

  {

   double free_margin= AccountFreeMarginCheck (symb,type, lots);

   //-- if there is not enough money

   if (free_margin< 0 )

     {

       string oper=(type== OP_BUY )? "Buy" : "Sell" ;

       Print ( "Not enough money for " , oper, " " ,lots, " " , symb, " Error code=" , GetLastError ());

       return ( false );

     }

   //--- checking successful

   return ( true );

  }

В моем советнике я не использую отложенные ордера, поэтому, если вы используете отложенные ордера, у вас могут возникнуть другие проблемы из-за этого.

В любом случае, ответ здесь: https://www.mql5.com/ru/articles/2555


 
Sergey Golubev #:
Тут все индивидуально.

1. Можете почитать про это в блог посте тут:
Solving Automatic Validation Problems Arising During Product Submission in MQL5 Market
(там на английском, но писал пользователь отсюда из русскоязычного форума, и там несколько коротких абзацев об этом с примерами).


2. Есть одна обзорная англоязычная ветка, где собраны все возможные решения (которые найдены тут и на англ форуме) - с примерами как это профиксить: there are no trading operations
Сейчас почитаю эту ветку и перепощу несколько постов с предложениями как это решить (некоторые посты будут с машинным переводом).

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

Там в этой ветке (there are no trading operations) много примеров решений, поэтому лучше почитать ветку со встроенным в каждом посте онлайн переводчиком.

there are no trading operations - I'm getting this same problem when trying to validate my EA on the indicated charts.
there are no trading operations - I'm getting this same problem when trying to validate my EA on the indicated charts.
  • 2017.03.31
  • www.mql5.com
I'm getting this exact same problem when trying to validate my ea. I'm asking if anybody knows why the validation process throws these errors so i can modify my code to pass the validation. It's always better to talk to the moderator(s) of market service (on your product page)
 
Andrey Barinov #:

А в чем проблема? Код советника Вы писали? В OnInit добавить проверку IsTesting и если тру, то OpenOrder(); CloseOrder().

Нет, к сожалению. Связи с кодером нет сейчас.

Добавил в код

if (! TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ) && ! MQLInfoInteger ( MQL_TESTER ))
{
  return ERROR_CODE;
}

и обозначил ERROR_CODE как int сначала, потом как string. Всё равно валидатор пишет нет сделок.


Уточните пожалуйста что именно вы имеете ввиду по коду. В интернете искал - общая информация. В имеющихся исходниках других совов - тоже пусто.

 
Sergey Golubev #:

У меня только рыночные. Пробовал добавить этот код, но даже судя по коду было видно, что он про объемы, а не открытие как таковое.

Хоть и без проблем встал в основной код.

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