ФОРЕКС 21 Пятница, 03.05.2024, 00:18
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта

Главная » 2009 » Декабрь » 27 » Обучение MQL II. Урок 12
Обучение MQL II. Урок 12
21:18
Обучение MQL II. Урок 12 Здраствуйте дорогие читатели! Сегодня мы напишем простейшую пробойную систему. 12.1. Алгоритм Наверное, многие из Вас знают, что такое пробойные системы. На рынке бывают моменты, когда можно с большой вероятностью предположить, что цена резко пойдет вверх или вниз. Например, когда ранок <зажимается> пред выходом серьезной новости. Все игроки ждут и после выхода открываются в нужную сторону. Но поскольку большинство читателей этих строк получают новости с задержкой, есть смысл расставлять отложенные ордера на пробитие текущих уровней консолидации. Эксперт анализирует максимальные и минимальные цены (тени свечей) за определенный период (период мы сможем настраивать) и выставляются отложенные ордера по обе стороны от текущей цены. Это будут ордера типа и < op_sellstop >. Для большей эффективности мы будем выставлять ордера только в случае если разница между максимальной и минимальной ценой за период не больше оговоренной нами величины, (эта величина определяет ширину канала, новость многие ждут, значит, канал узок). Подведем итог алгоритма. Если нет отрытых позиций и выставленных ордеров. Находим максимальную и минимальную цену за период, вычисляя разницу между ними. Если разница меньше порога, который мы установили, то выставляем 2 ордера на пробой. Ордера выставляем с маленьким запасом, например, +5 пунктов, хотя, сделаем эту величину тоже настраиваемой, т.к. на разных временных фреймах запас будет разным. После срабатывания одного из ордеров, второй ордер удаляется. 12.2. Эксперт /*[[ Name := Proboy Author := fxtest.ru Link := forextimes.ru Lots := 1.00 Stop Loss := 20 Take Profit := 40 Trailing Stop := 0 ]]*/ Defines: HL(85),N(9),Zapas(5); //HL- разница между экстремальными ценами, N- период, Zapas- запас в выставлении отложенного ордера var:s(0),b(0),ho(0),lo(0),i(0),fl(0); // s- количество отложенных OP_sellSTOP b- количество отложенных OP_BUYSTOP, i- переменная цикла // ho- мах цена периода, lo-минимальныя цена периода, fl-флаг для выставления второго ордера If((CurTime-LastTradeTime)<11) then Exit; // 10 сек таймаут, пока он не прошел будет осуществляться выход из эксперта if fl=1 then // т.к. одновременно два ордера поставить нельзя, OP_sellSTOP ставится после 10 сек, с помощью флага {fl=0; // обнуление флага и выставление 2го отложенного SetOrder(OP_sellSTOP, lots, lo-Zapas * point, 3,lo +StopLoss * Point, lo-TakeProfit*Point, red);}; b=0; // обнуление переменных для счета s=0; if TotalTrades=1 then exit; // если открыт только 1 ордер то, это ордер в рынке, выходим if totaltrades<>0 then for i=1 to TotalTrades Begin IF OrderValue(i,VAL_TYPE)=OP_BUYstop then b=b+1; // подсчет позиций в цикле if OrderValue(i,VAL_TYPE)=OP_SELLstop then s=s+1; if (s+b)=2 then exit; // если 2 отложенных выходим end; if TotalTrades<>0 and (s+b)=1 then // если 1 отложенный остался (он лишний, т.к. один уже стал сыграл, удаляем его { for i=1 to TotalTrades Begin if (OrderValue(i,VAL_TYPE)=OP_sellSTOP) or (OrderValue(i,VAL_TYPE)=OP_buySTOP) then DeleteOrder(OrderValue(i,VAL_TICKET),blue); //удаление end; exit;}; if TotalTrades=0 and (b+s)=0 then { // нахождение минимальной, максимальной цены ho=h[1]; lo=l[1]; for i=n DownTo 1 Begin if h[i]>ho then ho=h[i]; if l[i] var container = document.getElementById('nativeroll_video_cont'); if (container) { var parent = container.parentElement; if (parent) { const wrapper = document.createElement('div'); wrapper.classList.add('js-teasers-wrapper'); parent.insertBefore(wrapper, container.nextSibling); } }
Просмотров: 388 | Добавил: forex21 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Календарь новостей
«  Декабрь 2009  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Поиск

Друзья сайта


Статистика

Copyright MyCorp © 2024 Бесплатный конструктор сайтов - uCoz