Доброго времени суток. Выкладываю на критику свои труды.
Это моя первая «серьезная» работа на mql4.
Очередная двусторонняя сетка на мартингейле.
За идею взята сетка на отложенных ордерах + индикаторы + некоторые домыслы (которые, как оказалось позже, тоже появились в модах на этом форуме).
Написана мной полностью с нуля.
Суть: определить «удачный» вход, с «большим» (для сетки) профитом (30+- пп), а сама сетка играет роль перестраховки.
Тоесть если вошли относительно хорошо, но профит с первых x(настраивается) ордеров не взяли, то при достижении определенного плеча + развороте (выбранного) индикатора, происходят попытки сбросить «баласт» при первой же возможности.
- бай и селл торгуются независимо
- т.к. расчет идет не по закрытию свечи, то ТФ можно ставить любой. Ордера сами по себе, индикаторы сами по себе.
- первый ордер открывается по рынку(при совпадении условий входа), дальше расчитывается сетка из отложников, чтобы шаг был фиксированным. Количество одновременно выставленных отложников тоже задается.
- простенький планировщик
- пауза после закрытием сетки и открытием новой
- снижение профита у ордеров после Х, дабы закрыться просто в +-0. Чтобы не растягивать большие сетки. (отключается)
- использует Alligator и RSI, есть еще HMA, но она чото пока в паре с RSI, не очень дружат. Возможность комбинирования индикаторов и таймфреймов для определения входа
- входим если все индикаторы совпали, а выходим если хотябы 1 развернулся(если конечно же включена эта опция)
Таймфрейм: по большому счету, можно любой, т.к. для каждого индикатора он задается отдельно, а сама торговля идет НЕ по закрытию свечи
Инструменты: все, что и для обычной сетки: GBPUSD,EURUSD,...
Изменения:
20.12.13: Setka_v0.4.2
- Подправил выход по индикаторам, теперь выходит корректно
- Исправил таймер от переполнения, можно задавать больше 60 минут
- Сброс "баласта" при превышении количества ордеров >= ExitOrders, по индикаторам или без
24.12.13: Setka_v0.4.3
- Пофиксил баги мелкие
- HMA не тормозит систему
- Сброс происходит корректнее
26.12.13: Setka_v0.4.4
- Обработка пропущенных отложек (ГЭП, "быстрый рынок")
- Индикация просадки, абсолютная, если фикс лот, или в % если плавающий лот.
06.01.14: Setka_v0.4.5
- Несколько ТФ, для Аллигатора (через запятую), при совпадении - вход
Цитата
string st10 = "Пытаться выходить в 0, при развороте?";
bool ExitIfRevers = true; - Пытаться закрыть в 0, если развернуло тренд (если есть индикаторы на выход),
int ExitOrders = 4; - после 4 ордера, Если без индикаторов, то просто после этого ордера выходим в profit = 0.
Настройки советника:
double FirstLot = 0.1; - Начальный лот
double MultiLot = 1.5; - Множитель лота
double Step = 35; - Шаг сетки ордеров
double TakeProfit = 20; - Расчитывается Автоматически, чтобы перекрыть убытки + Эти пункты для профита
string st01 = "Умножать профит после X ордеров (0 - выкл) на Y раз";
int MultiProfitAfter = 3; - После это ордера начнет умножать профит у ордеров, чтобы лиш бы закрыть в
double MultiProfit = 0.5; - умножая на 0 - просто перекрываются убытки
string st0 = "Или MaxLot или MaxLotCount!(100)";
double MaxLot = 100; - Максимальный открываемый лот
int MaxLotCount = 0; - Число ордеров в сетке (если = 0, то расчитается из Максимального лота)
string st02 = "Использовать плавающий FirstLot ?(0.1 на 10000)";
bool UseFloatLot = true; - Если выключено, то берется FirstLot
double FirstFLot = 0.01;
double FirstFDepo = 2500;
string st03 = "------------------------------------------";
int AlwaysOpenP = 2; - Сколько всегда держать открытых отложек (чем меньше,тем быстрее работает, но лучше держать парочку, вдруг аля F4Y поднимут StopLevel).
int MagicBuy = 123; - Магик для Покупок
int MagicSell = 321; - Магик для продаж
int Slippage = 5; - Проскальзывание
string st10 = "Пытаться выходить в 0, при развороте?";
bool ExitIfRevers = true; - Пытаться закрыть в 0, если развернулся трэнд.
int ExitOrders = 4; - после 3 ордера
string st1 = "Параметры входа:";
string st11 = "Планировщик"; (0 - воскресенье)
int StartTradeDay = 1;
int StartHour = 6;
int StartMinute = 0;
int EndTradeDay = 5;
int StopHour = 20;
int StopMinute = 0;
string st2 = "Ждать мин после закрытия сетки:";
int WaitMinutes = 20; - Таймер (минут), после закрытия сетки
string st3 = "Параметры Alligator:";
string st4 = "0,M1,M5,M15,M30,H1,H4,D1,W1,MN1";
bool UseAlligatorIN = true; - Использовать аллигатор для входа
bool UseAlligatorOUT = true; - Использовать для выхода
string PeriodAlligStr = "M30"; - ТФ для аллигатора
int AlligatorShift = 0; - Сдвиг всего аллигатора
int JawsPeriod = 13; - Период Челюсти
int JawsShift = 8; - Сдвиг челюсти
int TeethPeriod = 8; - Период зубов
int TeethShift = 5; - Сдвиг зубов
int LipsPeriod = 5; - Период губы
int LipsShift = 3; - Сдвиг губы
string st5 = "Параметры HMA:"; - HMA (Оч долго работает, надо поработать над ним)
bool UseHmaIN = false; - Использовать HMA для входа
bool UseHmaOUT = false; - Использовать для выхода
string HMA_TimeFrameStr = "0"; - ТФ для HMA
int HMA_Period = 20; - период
int HMA_PriceType = 0;
int HMA_Method = 3;
bool NormalizeValues = TRUE;
int NormalizeDigitsPlus = 2;
int VerticalShift = 0;
string st6 = "Параметры RSI";
bool UseRsiIN = true; - Использовать RSI для входа
bool UseRsiOUT = true; - Использовать RSI для выхода
string RSI_TimeFrameStr= "M5"; - ТФ для RSI
int RSI_Period = 14; - период
int RSI_Shift = 1; - сдвиг
int RSI_overbought = 70; - зона перекупленности
int RSI_oversold = 30; - зона перепроданности
Советник еще дорабатывать и дорабатывать, если конечно же есть смысл. Нет обработки ошибок сервера, нет четкого ММ (просто расчет лота например как: 0.01 на 1000), нету тралинга (если он конечно же нужен), оч медленно работает с HMA, надо поработать над ним еще.
Несколько Бэктестов:






Планы:
-
Исправить ошибку:
на "быстром" рынке, может проскочить точку выставления отложки, так и остается висеть один ордер, пока по профиту не закроется.
Setka_v0.4.2_z3r4aa.zip
Setka_v0.4.3_z3r4aa.zip
01.10000.dd20.set
Setka_v0.4.5_z3r4aa.zip
