Советник Buy stop Sell stop Grid в виде класса - страница 3

 
Vladimir Karputov:

Версия 1.003:

  • теперь при открытии позиции ВСЕ противоположные позиции закрываются.
  • получение текущих цен перенесено внутрь функций PlacesBuy и PlacesSell - это защита от гепа и проскальзываний.
  • в OnTradeTransaction отложенные ордера размещаются в цикле while - так сказать долбим сервер до победного конца :) - не самое лучшее решение, но пока останется.

Собственно теперь можно думать:

  1. Как лучше наращивать позиции (расчёт объёмов лота)
  2. Что делать с противоположными позициями...


  1. Как лучше наращивать позиции (расчёт объёмов лота) - никак, наращивание лота, это пирамида, это уже другое, лот надо оставить постоянным.
  2. Что делать с противоположными позициями... - закрывать как есть.
 

Рекомендую в шаблон "tester.tpl" добавить вот этот индикатор: LifeHack Balance Equity, тогда в тестере можно будет сразу видеть изменение баланса и средств. Примерно так:

LifeHack Balance Equity в тестере


 
Vladimir Karputov:

Feito. Conecte o Vault , atualize os arquivos do projeto do Vault.



Hi Vladimir, can you add me please? thank you so much.

 
Cid Ougaske:


Hi Vladimir, can you add me please? thank you so much.


Готово, добавил.

В планах провести такую статистику: сколько позиций одного направления открыто подряд перед переворотом.

Например: #1 Buy, #2 Buy, #3Buy и #1Sell -> закрываем все позиции Buy. Значит статистика будет такая: три позиции.

 
Vladimir Karputov:

... подключаем шаблон и передаём входные параметры в класс советника



Готово, подключил.

Иногда параметров бывает слишком много. В последнее время обленился, делаю так, при таком подходе не надо париться с передачей параметров в советник. Какие тут есть недостатки?

input double LotSize = 0.1;
input int    SL      = 500;
input int    TP      = 300;
//другие входные переменные

#include <AvLib\ClassEA.mqh> // тут лежит класс советника

CClassEA MyEA;
 

Владимир, меня тоже подключите пожалуйста

 

В процессе работы советника в OnTradeTransaction записываются данные в массив. Формат записи такой: если открыта позиция Buy - значит записываем "+1", если была открыта позиция Sell - значит записываем "-1". 

Например:

  • Buy - записываем "+1"
  • Buy - записываем "+1"
  • Buy - записываем "+1"
  • Sell - записываем "-1"

После окончания тестирования, в OnTester, данные массива обрабатываются и записываются в файл csv. Файл создаётся в общей папке всех клиентских терминалов \Terminal\Common\Files. Имя файла формируется по такому принципу: 

   string file_name="Direction_of_trades"+"_"+m_symbol.Name()+"_"+IntegerToString(StepGrid());

затем к имени файла добавляется расширение "csv":

   int filehandle=FileOpen(file_name+".csv",FILE_WRITE|FILE_CSV|FILE_COMMON);

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

Полученный csv файл удобно обработать в Excel:

шаг первый: левый клик на столбце с данными

left-click

шаг второй: вставка рекомендуемой диаграммы

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


Вот такая статистика получается (для шага "35" и шага "65"):

direction_of_trades_EURUSD_35_65

 
Alexey Volchanskiy:

Владимир, меня тоже подключите пожалуйста


Готово. Добавил (сразу пост не увидел, проглядел).

 

Текущий список подключённых пользователей к проекту: 

Пользователи подключённые к проекту

 

Для шага 35 расширенные итоги:

Direction_of_trades_EURUSD_35

Здесь видно, что

  • практически 50% всех случаев - это когда длина непрерывающихся трейдов равна "1". То есть имеем ситуации типа: открыли Buy и затем перевернули позицию (то есть закрыли Buy с убытком и открыли Sell) или такая ситуация: открыли Sell и затем перевернули позицию (то есть закрыли Sell с убытком и открыли Buy). Таким образом ситуации с длиной непрерывающихся трейдов равной "1" - это гарантированный убыток.
  • примерно 25% всех случаев с длиной непрерывающихся трейдов равной "2", на примере Buy: открыли Buy, потом открыли ещё Buy и затем перевернули позицию (то есть закрыли два Buy и открыли Sell - в итоге получили убыток равный нулю).

Думаю, что над этими самыми многочисленными категориями (длина непрерывающихся трейдов равная "1" и "2") нужно подробнее подумать для корректировки стратегии размещения Stop отложенных ордеров.

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