Обсуждение статьи "Защита от ложных срабатываний торгового робота"

 

Опубликована статья Защита от ложных срабатываний торгового робота:

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

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

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

В данной статье я не буду рассматривать вопросы анализа финансовых инструментов (технического и фундаментального характера), которые могут влиять на стабильность работы торгового эксперта и помогают избежать дребезга (это отдельная тема — я являюсь автором теории импульсного равновесия и систем на ее основе). Здесь речь пойдет о мерах программного характера, не зависящих напрямую от методов аналитики финансовых рынков.

Итак, приступаем к решению проблемы. В качестве шаблона для примера я буду использовать эксперт из стандартного комплекта, имеющегося в клиентском терминале МetaТrader 4, под названием "MACD Sample".

Вот как визуально выглядит сама проблема дребезга на примере резкого скачка цены EURUSD 2-го октября этого года (таймфрейм М15, эксперт "MACD Sample" с настройками по умолчанию):

Автор: Alexander Masterskikh

 

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

               Bid > OrderOpenPrice() &&  //вводим новую строку (цена в положительной области относительно уровня входа)
               TimeCurrent() == Time[0] ) //вводим новую строку (выход строго в момент открытия текущей свечи)

Автор, вы хоть когда-нибудь торговали?

Как можно программировать выход "строго в момент открытия текущей свечи"?

      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ",AccountFreeMargin());
         return;
        }

-- Смысл этой проверки? Что с чем Вы сравниваете?

   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return;
     }

-- Вы считаете, что пользователь советника дебил? Зачем проверять заданное значение тейкпрофита на каждом тике? И почему тейкпрофит должен быть больше 10?

   if(Bars<100)
     {
      Print("bars less than 100");
      return;
     }

-- А число баров на графике зачем проверять? Пользователь "кидает" советник на пустой график? И почему баров должно быть минимум 100?

И дальше по тексту огрехов вагон. 

 
Andrey F. Zelinsky:

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

Автор, вы хоть когда-нибудь торговали?

Как можно программировать выход "строго в момент открытия текущей свечи"?

-- Смысл этой проверки? Что с чем Вы сравниваете?

-- Вы считаете, что пользователь советника дебил? Зачем проверять заданное значение тейкпрофита на каждом тике? И почему тейкпрофит должен быть больше 10?

-- А число баров на графике зачем проверять? Пользователь "кидает" советник на пустой график? И почему баров должно быть минимум 100?

И дальше по тексту огрехов вагон. 

Вы читайте внимательно: это советник взят в качестве примера из комплекта МТ4 (терминала) только для того, чтобы показать принцип (смотри новые строки,выделены жёлтым фоном).

А внизу пометка, что это советник не для реальной торговли (А ИЗ КОМПЛЕКТА ТЕРМИНАЛА МТ4). А насчёт пользователя советника - так его нет - это демонстрационный советник компании Metaquotes. 

 

Я тоже не понимаю, зачем допускают публикацию таких статей.

Наверное, чтоб темы типа "ошибки, баги, вопросы" никогда не затихали.

 

Alexander Masterskikh:

Вы читайте внимательно: это советник взят в качестве примера из комплекта МТ4 (терминала) только для того, чтобы показать принцип (смотри новые строки,выделены жёлтым фоном).

А внизу пометка, что это советник не для реальной торговли (А ИЗ КОМПЛЕКТА ТЕРМИНАЛА МТ4). А насчёт пользователя советника - так его нет - это демонстрационный советник компании Metaquotes. 

Ваша желтая строчка не совместима с жизнью:

 TimeCurrent() == Time[0] ) // вводим новую строку (простая доработка алгоритма выхода: выход строго в момент открытия текущей свечи)

И не важно, что это "стандартный советник и он не для реала", такой код писать нельзя.

А тем более нельзя его выкладывать в статьях, их иногда читают новички.

 
Alexander Masterskikh:

Вы читайте внимательно: это советник взят в качестве примера из комплекта МТ4 (терминала) только для того, чтобы показать принцип (смотри новые строки,выделены жёлтым фоном).

Ваш "принцип" откровенная неработоспособная ахинея.

Вот что вы предлагаете:

datetime Time_open=900; 
void OnTick(void)
  {
   total=OrdersTotal();
   if(total<1)
     {
      if((TimeCurrent()-Time[0])<Time_open))
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
         if(ticket>0)
            Time_open=TimeCurrent()-Time[0];
        }
     }
  }

-- вы вводите некую переменную Time_open (секунды)

-- которая даёт возможность отработать сигнал только в пределах: от начала бара +  Time_open

-- если ордер открывается, то диапазон переменной  Time_open сужается 

-- всё это зациклено и в конечном итоге приводит к тому, что любой сигнал может отрабатывать всё ближе и ближе к открытию текущего бара

Ведь задача изначально стояла до боли простой: разрешить в рамках текущего бара входить только один раз.

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

Нельзя такими "статьями" девальвировать ценность раздела. 

 

Абсолютно работоспособная система, проверено.

А вот ваш странный комментарий - это действительно ахинея: например, ваша фраза "любой сигнал может отрабатывать всё ближе и ближе к открытию текущего бара" - это принципиально неверно.

Не будет обрабатываться никакой, как вы говорите "сигнал", ТАК КАК ВРЕМЯ НЕОБРАТИМО И УСЛОВИЕ ВХОДА ПОСЛЕ ОТКРЫТИЯ ПЕРВОЙ ПОЗИЦИИ СТАНОВИТСЯ НЕВЫПОЛНИМЫМ, ЧТО И ТРЕБОВАЛОСЬ.

 
Alexander Masterskikh:

Абсолютно работоспособная система, проверено.

А вот ваш странный комментарий - это действительно ахинея: например, ваша фраза "любой сигнал может отрабатывать всё ближе и ближе к открытию текущего бара" - это принципиально неверно.

Не будет обрабатываться никакой, как вы говорите "сигнал", ТАК КАК ВРЕМЯ НЕОБРАТИМО И УСЛОВИЕ ВХОДА ПОСЛЕ ОТКРЫТИЯ ПЕРВОЙ ПОЗИЦИИ СТАНОВИТСЯ НЕВЫПОЛНИМЫМ, ЧТО И ТРЕБОВАЛОСЬ.

Вам в статье, для начала, требовалось показать работу терминального МАКД и МАКД с вашими правками.

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

 

-- на картинке сравнение работы -- терминального МАКД (верхнее окно) -- и (нижнее окно) Вашего МАКД из статьи (plus1), в котором Вы сделали правки именно по части открытия ордеров БАЙ

-- чётко видно на картинке, что открытия ордеров БАЙ -- в Вашем советнике -- куда-то исчезает -- хотя, при старте эксперта, была сделана парочка БАЙ-открытий.

Эксперимент простой -- Вы сами сможете его повторить и посмотреть. 

 
Alexander Masterskikh:

Не будет обрабатываться никакой, как вы говорите "сигнал", ТАК КАК ВРЕМЯ НЕОБРАТИМО И УСЛОВИЕ ВХОДА ПОСЛЕ ОТКРЫТИЯ ПЕРВОЙ ПОЗИЦИИ СТАНОВИТСЯ НЕВЫПОЛНИМЫМ, ЧТО И ТРЕБОВАЛОСЬ.

Хотя, Вы и сами сделали вывод, что по Вашему "принципу" -- требовалось ликвидировать любые открытия.

 

Тема явно не тянет на статью. Так на заметку.

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

Автор явно в начале длинного пути на Форекс.

 

Ну что за горе - эксперты:

Во-первых, речь не о количестве открытых позиций (так как использован демонстрационный, а не торговый  советник терминала МТ4) , а о том, что простым способом (всего 2 строчки) устранён дребезг (надеюсь, вам известно, что это такое).

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

В-третьих, данное решение прекрасно работает на  наших торговых системах. И что касается форекса:  думаю, что не вам об этом судить - мой опыт более 8 лет и я являюсь руководителем финансово-аналитической и брокерской компании, а также теоретических и практических разработок в области финансовых рынков.

 
Alexander Masterskikh:

Во-первых, речь не о количестве открытых позиций (так как использован демонстрационный, а не торговый  советник терминала МТ4) , а о том, что простым способом (всего 2 строчки) устранён дребезг (надеюсь, вам известно, что это такое).

Можно было одной ограничиться - ExpertRemove() сразу после открытия позиции. О, гуру.

 

Alexander Masterskikh:

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

Каких работ? Статей?

Написать 10 страниц для демонстрации элементарной функции?

А про более сложные вещи статьи есть, поищите.

 

Alexander Masterskikh:

В-третьих, данное решение прекрасно работает на  наших торговых системах. И что касается форекса:  думаю, что не вам об этом судить - мой опыт более 8 лет и я являюсь руководителем финансово-аналитической и брокерской компании, а также теоретических и практических разработок в области финансовых рынков.

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

Не бойтесь, это не сочтут рекламой.