Обсуждение статьи "Какие проверки должен пройти торговый робот перед публикацией в Маркете" - страница 21

 

В коде файла check_freezelevel.mq5 (строка 140) отсутствовало утверждение `if(!TP_check)`.

bool CheckPositionForFREEZE_LEVEL(ulong ticket)
  {
//--- получить уровень SYMBOL_TRADE_FREEZE_LEVEL
   int freeze_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL);
   if(freeze_level!=0)
     {
      PrintFormat("SYMBOL_TRADE_FREEZE_LEVEL=%d: Cannot modify order"+
                  "  nearer than %d points from the activation price",freeze_level,freeze_level);
     }
//--- выберите позицию для работы
   if(!PositionSelectByTicket(ticket))
     {
      //--- не удалось выбрать позицию
      return(false);
     }
//--- получите данные о заказе 
   ENUM_POSITION_TYPE pos_type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
   double sl=PositionGetDouble(POSITION_SL);
   double tp=PositionGetDouble(POSITION_TP);
//--- результат проверки StopLoss и TakeProfit
   bool SL_check=false,TP_check=false;
//--- тип позиции
   switch(pos_type)
     {
      //--- купить
      case POSITION_TYPE_BUY:
        {
         SL_check=(Bid-sl>freeze_level*_Point);
         if(!SL_check)
            PrintFormat("Position %s #%d cannot be modified: Bid-StopLoss=%d points"+
                        " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                        EnumToString(pos_type),ticket,(int)((Bid-sl)/_Point),freeze_level);
         TP_check=(tp-Bid>freeze_level*_Point);
         if(!TP_check)
            PrintFormat("Position %s #%d cannot be modified: TakeProfit-Bid=%d points"+
                        " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                        EnumToString(pos_type),ticket,(int)((tp-Bid)/_Point),freeze_level);
         //--- верните результат проверки
         return(SL_check&&TP_check);
        }
      break;
      //--- продать
      case POSITION_TYPE_SELL:
        {
         SL_check=(sl-Ask>freeze_level*_Point);
         if(!SL_check)
            PrintFormat("Position %s cannot be modified: StopLoss-Ask=%d points"+
                        " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                        EnumToString(pos_type),(int)((sl-Ask)/_Point),freeze_level);
         TP_check=(Ask-tp>freeze_level*_Point);
         PrintFormat(" Position %s cannot be modified: Ask-TakeProfit=%d points"+
                     " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                     EnumToString(pos_type),(int)((Ask-tp)/_Point),freeze_level);
         //--- верните результат проверки
         return(SL_check&&TP_check);
        }
      break;
     }
//--- позиция не прошла проверку
   return (false);
  }
 
Здравствуйте, мой советник торгует на основе новостных событий и не работает в тестере стратегий, но он прибыльный на реальном счете. Будет ли неработающий в тестере советник проваливать проверку на рынке?
 

В общем случае проверка уровней TakeProfit и StopLoss с учетом минимального расстояния SYMBOL_TRADE_STOPS_LEVEL выглядит следующим образом:

  • Покупка осуществляется по цене Ask - уровни TakeProfit и StopLoss должны находитьсяна расстоянии не менее SYMBOL_TRADE_STOPS_LEVEL пунктов от цены Bid.
  • Продажа осуществляется по цене Bid - уровни TakeProfit и StopLoss должны находитьсяна расстоянии не менее SYMBOL_TRADE_STOPS_LEVEL пунктов от цены Ask.
Покупка осуществляется по цене Ask
Продажа осуществляется по цене Bid
TakeProfit - Bid >= SYMBOL_TRADE_STOPS_LEVEL
Bid - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL
Ask - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL



Может кто-нибудь объяснить, в чем я сомневаюсь?

Я понимаю, что покупка осуществляется по цене ask, а продажа - по цене bid. Я также понимаю, почему мы используем цену спроса для сравнения при покупке для стоп-лосса и тейк-профита (потому что мы будем совершать противоположную сделку, продавать, следовательно, по цене спроса).

Однако я не понимаю, почему тейк-профит не сравнивается с ценой спроса при покупке, потому что если мы будем сравнивать его только с ценой спроса, пользователь потенциально может установить значение выше цены спроса, но ниже цены предложения, что совершенно бессмысленно?

Спасибо за ваше время.

 

Здравствуйте,

Мой советник отклонен из-за того, что при проверке сообщается об "отсутствии торговой деятельности". Поскольку мой советник предназначен для торговли на определенной дате новостей, мне нужно знать, какие исторические данные используются при проверке советника. Тогда я мог бы указать дату по умолчанию для целей проверки.

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

Тим

[Удален]  
@Tim Arthur Herbert Kasprzyk #: мой советник отклонен, поскольку при проверке сообщается, что "торговая деятельность не ведется". Поскольку мой советник предназначен для торговли на определенной дате новостей, мне нужно знать, какие исторические данные используются при проверке советника. Тогда я мог бы указать дату по умолчанию для целей проверки.

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

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

Обсуждение статьи "Проверки, которые должен пройти торговый робот перед публикацией на рынке"

Фернандо Каррейро, 2022.12.24 18:46

Согласно правилам продукта Маркет, вы не имеете права ограничивать или ограничивать ваш советник только одним символом. Ваш советник должен работать на всех символах, даже если он предназначен для одного символа.

Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий

Обсуждение статьи "Проверки, которые должен пройти торговый робот перед публикацией на рынке"

Фернандо Каррейро, 2023.03.27 01:50

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

Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий

Обсуждение статьи "Проверки, которые должен пройти торговый робот перед публикацией на Маркете"

Фернандо Каррейро, 2023.06.01 13:15

Ваш советник должен уметь торговать на всех инструментах и на всех таймфреймах. Не должно быть никаких ограничений.

Чтобы уменьшить размер журнала, рассмотрите ...

  • Сокращение количества операторов "prints" в логе
  • Использование трейлинг-шага или тайм-шага вместо непрерывных трейлинг-стопов.
  • Не создавайте и не удаляйте отложенные ордера постоянно. Рассмотрите возможность использования "виртуальных" отложенных ордеров.
 
Fernando Carreiro #:

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

Привет, Фернандо, спасибо за ваш отзыв. На самом деле мой советник не ограничен ни символом, ни таймфреймом. Ему требуется только определенная дата новостей, например, дата новостей по процентной ставке ФРС. Я также предоставляю дату новостей по умолчанию в советнике. Так что теоретически он должен пройти проверку. Но может случиться так, что процесс проверки использует исторические данные, которые не покрывают мою дату по умолчанию. Поэтому было бы полезно понять, какие исторические данные используются (не какой символ или таймфрейм, это я вижу в отчете).
[Удален]  
@Tim Arthur Herbert Kasprzyk #: Привет, Фернандо, спасибо за вашу информацию. На самом деле мой советник не ограничен ни символом, ни таймфреймом. Ему требуется только определенная дата новостей, например, дата новостей по процентной ставке ФРС. Я также предоставляю дату новостей по умолчанию в советнике. Так что теоретически он должен пройти проверку. Но может случиться так, что процесс проверки использует исторические данные, которые не покрывают мою дату по умолчанию. Поэтому было бы полезно понять, какие исторические данные используются (не какой символ или таймфрейм, это я вижу в отчете).

Это все еще ограничение. Устраните все ограничения, установив значения параметров по умолчанию, чтобы разрешить торговлю независимо от даты, символа или таймфрейма.

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

 
Я получаю сообщение "Strategy Tester Report not found" EURUSD 1H. Как я могу решить эту проблему?

Я много раз проверял в тестере стратегий, и мой советник работает без ошибок.

Я создал советник "Validation Test", который просто открывает позицию с минимально допустимым объемом и закрывает ее через несколько секунд, но при этом возникает та же ошибка.

 

Только что прочитал комментарий к отчету о проверке, в котором говорится "нет торговой деятельности". Должны ли все советники торговать? Мой советник просто рисует всякие штуки на графике, или это должен был быть индикатор?

 

Кто-нибудь сталкивался с подобной проблемой? На счете Metaquotes DEMO работает нормально, а в тесте не прошел валидацию.


тест на EURUSD,H1 (неттинг) 2021.06.30 23:59:59 Вызванная функция ExpertRemove() удалила себя внутри OnDeinit удалила себя на 99% интервала тестирования отчет тестера стратегии 1 всего сделок