Lavoro terminato
![](https://c.mql5.com/i/avatar/avatar_na2.png)
![](https://c.mql5.com/i/avatar/avatar_na2.png)
Specifiche
Идея:
Алгоритм советника предполагает непрерывное открытие позиций. Первая позиция открывается на заданном уровне; если происходит определенное движение графика, то уровень открытия следующей позиции меняется.
Наглядно алгоритм советника описан на Рис.1 (по цифрам):
Мы задали начальный уровень (1) (например, на инструменте USDJPY), от которого отсчитывается «координата» открытия позиции (2) – если график прошел вверх относительно начального уровня (как на изображении), то открывается лонг (тип А), если бы он прошел вниз относительно начального уровня, то открылась бы позиция шорт (тип А); определили шаг уровня (3) при прохождении которого меняется уровень отсчета координаты; задали TP (4) и SL (5) для позиции типа А; задали объем убытка по позиции типа А (6), при достижении которого открывается позиция типа В (открывается лонг, если открыт шорт типа А; открывается шорт, если открыт лонг типа А); задали TP (7) и SL (8) для позиции типа В; задали объем убытка по позиции типа В (9), при достижении которого открывается также позиция типа В (лонг, если открыт шорт; шорт, если открыт лонг); задали максимальное количество открытых по данному инструменту сделок (10)
Важно:
• Сигналы на открытие позиции «отсчет координаты от уровня (2)» и «достижение объема убытка (6,9)» в некоторых случаях будут друг друга дублировать, в таких случаях приоритет отдавать сигналу «достижение объема убытка (6,9)».
• Предусмотреть, чтобы советник рисовал линии начального и последующих уровней (более толстые), а между ними 4 тонких линии с шагом 1/5 от заданного шага уровня (как показано на рисунке).
• Предусмотреть способ конвертации или расчета BID и ASK так, чтобы все уровни сделок и нарисованных линий совпадали. (Возможно решение с делением разницы между BID и ASK на 2, если оно подойдет в данном случае, можно использовать его. Может есть способ подстроить уровни более точно – в идеале все линии рисовать по BID; TP и SL для шорта, который открывается по BID, ставить по «BID + (ASK-BID)»; а для лонга, который открывается по ASK, ставить открытие по «ASK - (ASK-BID)», а TP и SL так и будут по BID. ).
• Предусмотреть возможность переключения на инверсивную логику торговли, т.е. при прохождении графика вверх от начального уровня до координаты открывается не лонг, а шорт (и наоборот); а при сигнале «достижение объема убытка» открывать не противоположную предыдущей позицию, а в той же направленности.
• Предусмотреть поведение советника в случае с гэпом: если был гэп с открытыми позициями, то закрыть если TP или SL больше заданных значений (меньше – позиции остаются открытыми); сменить уровень отсчета, если был достигнут новый посредством гэпа (если гэп проскочил несколько уровней, то начать отсчет от последнего достигнутого). В случае с гэпами могут еще какие-то непредвиденные ситуации возникнуть, но пока я больше не вижу вариантов.
Итого задаваемые параметры:
1. Начальный уровень отсчета = (в пунктах)
2. Координата – расстояние, которое проходит график от начального уровня до открытия первой позиции (и позиций после TP) = (в пунктах)
3. Шаг уровня – расстояние, которое проходит график до достижения следующего уровня отсчета = (в пунктах)
4. TP для позиции типа А = (в пунктах) - здесь и для других TP и SL, возможно, как раз, потребуется пересчет или конвертация всего по BID, т.к. если я пишу 400 п., то с учетом спреда в 18 п., TP будет 382 п., а SL – 418 п.
5. SL для позиции типа А = (в пунктах)
6. Объем убытка по позиции типа А при котором открывается следующая позиция типа В = (в пунктах)
7. TP для позиции типа В = (в пунктах)
8. SL для позиции типа В = (в пунктах)
9. Объем убытка по позиции типа B, при котором открывается следующая позиция (также типа В) = (в пунктах)
10. Максимальное количество открытых сделок по данному инструменту = (в штуках)
11. Объем сделки типа А = (возможность выбора: в пунктах, либо в % от баланса)
12. Объем сделки типа В = (возможность выбора: в пунктах, либо в % от баланса)
13. Использование инверсии = да/нет
Доп. условия:
Покупка советника с исходным кодом