Сетка-песочница для отработки локов/перекрытий.
Год выпуска: 2017
Валютные пары: любые
Таймфрейм: любой
Актуальная версия: 1.04
Описание: Сетка-мартингейл, основная идея (гибкая геометрия + осознанная модель) взята из ветки - [EA][Qj]-Setka /laboratoriya-profitfx/24/open-source-sovetnik-forex-setka-trader-mod-i-eaqj-setka/2738/
Основные возможности:
1. Открытие следующего колена производится по показанию индикатора SSRC (таймфрейм задается) + минимальное расстояние от предыдущего ордера ( задается геометрией сетки)
2. Виртуальный Тейкпроифит всей сетки можно перетаскивать мышкой как в ProTrader’е (дабл клик на TP и потом тянем)
3. Все кнопки и виртуальный Тейпрофит работают на визуале в тестере стратегий.
4. Кроме автоматического выставления ордеров, также возможно ручное выставление, либо любым другим советником. Можно переключать таймфреймы, удалять/частично закрывать ордера. Вся информация по ордерам на каждом тике восстанавливается из журнала открытых ордеров.
5. Интерфейс «для ленивых» - лот следующего ордера подсвечивается на соответствующей кнопке Buy/Sell, а дистанция, за которой можно открывать следующее колено, согласно модели сетки – белой пунктирной линией
6. Режим Overlap (Перекрытие) – частичное закрытие просевшей стороны (от частично одного, до полностью нескольких ордеров) прибыльными ордерами. Режим автоматически включается после достижения суммы открытых ордеров Buy и Sell сеток - maxLotsBeforeOverlap. Также возможно ручное перекрытие – более подробно будет описано ниже.
7. Режим Rescue – локирование/ частичное локирование просевшей стороны. Может включаться вместе с режимом Overlap, по умолчанию отключен. Подробней будет описано ниже.
8. В конце работы в тестере выдается статистика по количеству закрытых сеток:
- число колен
- meshs ( количество сеток )
- profit (сумма прибыли / средняя прибыль на 1-ну сетку)
- time (время жизни /среднее время)
- wide/rollback ( средний размах сетки / средний откат) – сетки открываются + и по SSRC, т.ч. всегда размах немного разный, при одинаковом количестве колен
- profit% - (прибыль в % / прибыль в % с нарастающим итогом)
9. В конце работы в тестере Rever27factor
Бот для 5-ти знака, на 4-х знаке будет работать не правильно.
“Настройки”
Везде где нужно указывать значение в пунктах – указывайте в 4-х значных.
minLot = 0.03; - Стартовый лот
maxOrders = 13; - Мак кол-во открытых колен в авто режиме, руками – сколько угодно
spamBuy = true; - Открывать первый ордер Buy в авто режиме. Если поставить false и первый ордер открыть руками/другим советником – робот начнет достаивать сетку
spamSell = true; - аналогично
Раздел «модель».
Нет разделения параметров для Buy и Sell в остальном раздел аналогичен таковому разделу в [EA][Qj]-Setka.
Раздел “SSRC”
extern ENUM_TF ssrcTfBase = eM5; - таймфрейм для открытия первого ордера
extern ENUM_SSRC ssrcTypeBase = 0; - пороговое значение SSRC.
0 -- SSRC = 1 - Sell, SSRC = 0 – Buy –> на залипании SSRC в нуле или единице
1 -- 0.9 после начала разворота
2 -- при любом значении SSRC --> как только прошли GridStep пипсов, а для первого как только закрылась прошлая сетка, сразу откроется новый ордер
extern int ssrcStep1 = 1; -- С какого колена применять данный таймфрейм SSRC
extern ENUM_TF ssrcTfLevel1 = eM1;
extern ENUM_SSRC ssrcTypeLevel1 = 0;
“Спасение”
CloseOnDrawDown – если сумма прибыли по всем ордерам Sell и Buy
“Overlap”
«Входные параметры”
extern double OverlapProfit = 0.9; - 90% суммы всех прибыльных ордеров пускаем на перекрытие, 10% на саму прибыль. На практике за счет проскальзываний/скорости закрытия ордеров процент оставшейся прибыли будет не такой.
extern enum_side Side = 2; - Лучше оставлять Auto (2). Ордер для перекрытия будет выбираться из более просевшей стороны.
extern double MinLotForOverlap = 0.05; - Минимальный «кусок», который будет перекрываться. В данном случае если есть открытый ордер меньше, чем 0,05 – он перекроется полностью.
extern enum_last_overlap LastOverlap = 0; MaxLoss (0) – по моим тестам лучший выбор. Подробней, чуть ниже в описании алгоритма перекрытия.
extern double maxLotsBeforeOverlap = 6; После этой суммы всех открытых Buy и Sell ордеров включится режим автоматического перекрытия. Чекбокс Overlap будет нажат и перекрашен в красный цвет.
По интерфейсу (зона оливкового цвета):
OverlapType – показывает значение переменной - LastOverlap
CanOverlapLots – пока не реализована
ProfitForOverlap – сумма прибыли всех открытых прибыльных ордеров и Buy и Sell
Loss – убыток 1-го ордера, отобранного согласно LastOverlap
Ticket - его тикет
Type - его тип
For Be - пока не реализовано
По нажатию на кнопку Overlap – если прибыли недостаточно для перекрытия MinLotForOverlap, то ничего не произойдет.
Алгоритм функции перекрытия.
1. Выбираем более просевшую сторону – например Buy более просевшая.
2. Заполняем 2 массива. В profitArr заносим все информацию о всех открытых прибыльных ордерах, а в lossArr – все просевшие Buy ордера. Для просевшей серии также считаем средневзвешенную цену = ( lot1*price1+lot2*price2+lot3*price3) / (lot1+lot2+lot3).
3. В массиве lossArr просевшей серии оставляем только те ордера, которые находятся за «средней» ценой – для Buy – выше средней, для Sell – ниже средней. Цель – оставить в массиве для перекрытия только те ордера, которые после разворота рынка окажутся за линией безубытка.
4. Сортируем оставшиеся просевшие ордера по:
- MaxLoss – максимальной просадке
- MaxLot – максимальному лоту
- FirstOpen – обычно самый дальний ордер
- LastOpen - обычно самый ближний ордер
5. Дальше проходимся по массиву просевших lossArr и по очереди закрываем ордера в соответствии с имеющейся прибылью для перекрытия. Хватает только на MinLotForOverlap - закрываем его, остается еще прибыль – пробуем откусить больший лот, либо следующий ордер.
Рекомендую в тестере на визуале начать на чекбокс Hand и наоткрывать ордеров Buy/Sell. Дождаться пока цена убежит подальше в какую-нибудь сторону и нажать на кнопку Overlap. Думаю тогда будет понятней.
“Rescue”
«Входные параметры”
extern bool useRescue = false; // on/off, по умолчанию - off
extern double RescueMinLot = 0.01;// Минимальный лот – вспомогательная переменная, менять не нужно
extern double RescueMarketLot = 0.1; // Процент от разницы сумм лотов Buy и Sell
Например, если maxLotsBeforeOverlap = 6 лотов, ордеров Buy открыто на 4.5 лота, Sell на 2 лота, то стартанет 2 режима: Rescue и Overlap Auto, т.к. 4.5+2=6,5 > 6. И функция Rescue откроет Sell ордер 4,5-2 = 2,5*0,1 = 0,25 лота. Если RescueMarketLot = 1,5 (150%) то будет открыт ордер Sell 4.5-2 = 2.5*1.5 = 3.75 Лота. И кактолько будет возможность перекрыть как минимум MinLotForOverlap = 0.05 лота – функция Overlap сделает это.
Так же в этот момент при включенном параметре useAgroAvrg = true будет выставлен BuyStop ордер размером AgroLot лота на дистанции AgroDistance 4-х значных пунктов. Иногда этот маленький лот ускоряет закрытие сетки на откатах, либо помогает перекрытию, а иногда поливает масла в огонь ( при продолжении безотката).
extern double RescueLimitLot = 0.1; // Процент от разницы сумм лотов Buy и Sell
Кроме рыночного ордера можно так же выставить лимитные отложки, часто рынок делает маленький откат и потом продолжает падение. В данном случае будет выставлено 5 лимитных отложек по 4,5-2 = 2,5*0,1/5 = 0,05 лота ( если это значение меньше RescueMinLot, отложки не выставляются)
extern int RescueLimitLots = 5; // Кол-во Limit ордеров
extern int RescueLimitStep = 20; // Шаг в пунктах(4-х знак) Limit ордеров
10% (0,1) – достаточно «мягкое» значение. В случае продолжения безотката – она может и не спасти.
150% (1,5) – может оказаться хорошей гирей на шее, в случае резкого разворота рынка. Хотя как только данная сторона окажется в большей просадке – Overlap начнет откусывать от нее кусочки. А если включить ручной режим перекрытия – можно откусывать значительными частями, а не MinLotForOverlap.
После перекрытия в ручном или автоматическом режиме - все отложки удаляются!!! И стоповые и лимитные.
Тестер с визуалом в помощь.
“AgroAveraging”
useAgroAvrg = false; // по умолчанию выключено
extern double AgroLot = 0.1; // лот
extern int AgroDistance = 20; // Дистанция выставления стоповой отложки
См. чуть выше.
При начеле работы из глобальных переменных восстанавливаем значения TP и чекбоксов (Overlap и Hand) и при завершении соотвественно сохраняются. Если глобальные переменные почистить, то TP сбросится на авторасчет, а чекбоксы будут в состоянии – «не нажато»
P.S.
Цель данного топика – посеять мои взгляды на сеткостроение и понаблюдать, что из этого произрастет. Поэтому ближайшие 3-4 недели планирую только наблюдать. Никаких доработок делать не буду, кроме исправления ошибок.
Ковыряние кода не возбраняется, а наоборот - приветствуется. Может кто-то соберет большего Франкенштейна чем я :) Многие функции, c какими то трансформациями, уже года 2 кочуют у меня из бота в бота, потому код далек от идеала и по логике и по скорости работы, но… он работает. На вопросы по коду/логике – готов отвечать.
Данным ботом я торгую на реале чуть меньше 2-х месяцев и явных глюков вроде уже нет, но кроме меня его никто не тестировал. Начните с теста на визуале.
Вот так выглядит мой шаблон:
P.P.S. У всех разные разрешение экрана. При изменении параметра HorizontalPosition – все панели съезжают. Данный баг будет устранен только после полной переделки интерфейса, т.е. не прям сейчас. Решение – вбиваем нужное значение, пересохраняем шаблон и переприменяем шаблон.
Добавлено: 19-04-2017 16:43:33
В прилагаемой модели ( в первом посте) закрываемость не очень, но есть следующие соображения:
При открытии 11 колен (256 пунктов без учета индикатора SSRC – реально сетка будет длиннее) имеем просадку всего 3% и при закрытии ее +1.31% к депозиту. Если взять 10 пар, то общая просадка будет плавать около 30% и если в день будет закрываться всего одна сетка, то в месяц будет 20*1,31% к депо. Достаточно ли 10 рабочих дней для цикла – сходили в просадку на 250-300пунктов, и потом отскок на 50% - покажет история. Плюс пока одна сторона идет в безоткате, вторая по копеечке в 30-40пунктов приращивает депо.
Ну и несколько картинок для затравки - закрытие вчерашней сетки по USDCAD - три вида с H1, H4, D1. Ну и 3 вида с картины сегоднгя – канал на H1 пробит и пробит с большим запасом, на H4 тоже пробит и цена долетела до канала на D1. Прибыли можно было брать на H4 – на 28 пунктов, а на D1 – на 101 пункт больше. И откат тут не 30-40%, а 100%+
Я пытаюсь уйти от большой лотности к большим тейк профитам. Это более безопасно.
v.1.06
Oceani4_Setka_Auto.zip
O4_v1.04_-_Depo_300_usd_DD_3%_profit_1%.xlsx
Oceani4_v1.05.zip

































