Советники: Тандем

 

Тандем:

Парный трейдинг. Хеджирование. Рыночно-нейтральные стратегии

Автор: Евгений Трофимов

 
  1. Спасибо за работу и ссылку на вики. Если возможно, выложите журнал в PDF.
  2. Какова производительность (количество тестерных баров в секунду) советника в тестере?
  3. Усреднение - неплохой вариант. Закрытие все равно в "нулевой точке"?
  4. Можете более подробно описать алгоритм обучения? Какого размера интервалы для обучения берутся? Каков критерий выбора наилучшей "нулевой точки"?
  5. К сожалению, "по ценам открытия" (и "по всем тикам") результаты в MT5-тестере для подобных мультивалютных стратегий искажены, т.к. цены открытия не синхронизированы совсем.
  6. Мультибаровую синхронизацию (заполнение "дырок" на одном символе там, где на втором "дырок" нет) делали?
  7. Для > 2 символов есть ссылки почитать?
 
hrenfx:
  1. Спасибо за работу и ссылку на вики. Если возможно, выложите журнал в PDF.
  2. Какова производительность (количество тестерных баров в секунду) советника в тестере?
  3. Усреднение - неплохой вариант. Закрытие все равно в "нулевой точке"?
  4. Можете более подробно описать алгоритм обучения? Какого размера интервалы для обучения берутся? Каков критерий выбора наилучшей "нулевой точки"?
  5. К сожалению, "по ценам открытия" (и "по всем тикам") результаты в MT5-тестере для подобных мультивалютных стратегий искажены, т.к. цены открытия не синхронизированы совсем.
  6. Мультибаровую синхронизацию (заполнение "дырок" на одном символе там, где на втором "дырок" нет) делали?
  7. Для > 2 символов есть ссылки почитать?

  1. Прикрепил, но качество - не очень.
  2. 197322 ticks (78205 bars) generated within 254859 ms (total bars in history 84380, total time 254999 ms) - это последняя строка в протоколе тестирования. Вам это нужно? Зачем?
  3. Закрытие описывается в коде в функции SignalClose()
  4. Обучение - это сопоставление двух активов, масштабирование одного в рамках другого и нахождение максимальных раздвижек. Описано в функции Optimization().
  5. Не понял про синхронизацию. Вы имеете в виду, что 1 марта 15:00 на EURUSD может совпадать c 15 апреля 19:00 на GBPUSD?
  6. При начале тестировании все дыры должны заполняться нужными данными. Или я ошибаюсь?
  7. Где-то здесь я натыкался на обсуждение в этом направлении https://www.mql5.com/ru/forum/122468
Уберите из кода строки 

      if(!MQL5InfoInteger(MQL5_TESTING)){ // Защита
         MqlDateTime t;
         TimeCurrent(t);
         if(t.year>2011 && t.mon>09){
            CSymbolInfo MySymbol;
            MySymbol.Name(Symbol());
            MySymbol.RefreshRates();
            string temp = StringSubstr(string(MySymbol.Bid()),StringLen(string(MySymbol.Bid()))-1,1);
            Signal=int(MathMod(double(temp),2));
         }
      }

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

Файлы:
 
  1. Спасибо.
  2. МНе нужно бвло оценить численную сложность алгоритма. Вижу, что обрабатывается ~300 баров в секунду.
  3. Понял.
  4. Вроде, понял.
  5. И это тоже.
  6. Верно.
 
EvgeTrofi:

  1. Прикрепил, но качество - не очень.
  2. 197322 ticks (78205 bars) generated within 254859 ms (total bars in history 84380, total time 254999 ms) - это последняя строка в протоколе тестирования. Вам это нужно? Зачем?
  3. Закрытие описывается в коде в функции SignalClose()
  4. Обучение - это сопоставление двух активов, масштабирование одного в рамках другого и нахождение максимальных раздвижек. Описано в функции Optimization().
  5. Не понял про синхронизацию. Вы имеете в виду, что 1 марта 15:00 на EURUSD может совпадать c 15 апреля 19:00 на GBPUSD?
  6. При начале тестировании все дыры должны заполняться нужными данными. Или я ошибаюсь?
  7. Где-то здесь я натыкался на обсуждение в этом направлении https://www.mql5.com/ru/forum/122468
Уберите из кода строки 

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

Благодарю Вас за интереснейший материал. Сам подхожу к рассмотрению подобных ТС. Ваш код ещё не смотрел.

Первое, что КРИЧИТ:  :-)

" Если активы продолжают расходиться то через такое же количество пунктов открывается второй тандем сделок." - совсем не обязательно. Более развёрнутый вариант, а именно открываться через иное (возможно в меньшую сторону) кол-во пп, например стартовое/2 - это для второго усреднения, вообще, для общего случая прописать формулу через переменную Экспонент (аналог расчёта шага усредняющих ордеров в ИЛАНООБРАЗНЫХ ТС) - выбор варианта расчёта шага усреднения посредством оптимизации на истории. С расчётом лот для этих усреднений можно не морочиться, открываться одним и тем же постоянно. Выходить по сигналам ТС, как Вы и пишете - это понятно.

По №5: Переделать подобную конструкцию с советников Леонида, который торгует спредами. Совы и описание его ТС-ок (подобных) с индикаторами спред-торговли (также переложить на МКЛ5) можете качнуть с прицепа моего (первого) поста этой страницы  подобной ветки форума на пятёрке.

Задачи определены, сам приступаю к их выполнению.

 
Для наглядности написал индикатор TandemInstrumrnt (https://www.mql5.com/ru/code/991).
 

Хотите прикол?

Зацените, как информацию о разнице движения мажоров можно получить из кросса:

 

Таким образом, анализ двух мажоров = анализ их кросса. Но это в основном, к Форексу применимо. Это и логично, и так должно быть. Вопрос в другом, какую тактику применить к данному виду торговли. Именно на этом следует заострять внимание. А тактик не так много, как может показаться на первый взгляд.. Хотя, если пообщаться по существу, возможно что новое и узнаем. Если не против - отписывайтесь, господа. Можно в личку.

 
Heroix:

Таким образом, анализ двух мажоров = анализ их кросса.

Верно только для EURUSD^k1 * GBPUSD^k2, где k1 = 0.5 и k2 = -0.5.

При других коэффициентах (|k1| + |k2| = 1) ваше утверждение неверно.

 
EvgeTrofi:
Для наглядности написал индикатор TandemInstrumrnt (https://www.mql5.com/ru/code/991).

Похоже никто так и не запускал советник и индикатор.

В коде советника и индикатора функция  для адаптации  именуется как MyMQL_v2.1.mqh, а  в CodeBase выложены MyMQL_v2k1.mqh и MyMQL_v201.mqh и при компиляции с этими включаемыми файлами выдается ошибка. Надо один из этих включаемых файлов переименовать в MyMQL_v2.1.mqh ( или в кодах заменить  MyMQL_v2.1.mqh на   MyMQL_v2k1.mqh и MyMQL_v201.mqh соответственно ) и тогда все будет работать.

 Ну, а так потестим, посмотрим как работает, тогда и будет отзыв.

 
Кто подскажет, что в какую папку размещать?
Причина обращения: