журнал 7

Page 4

НАЧИНАЮЩИЙ ТРЕЙДЕР

3 Выпуск №7 от 08 марта 2010 года

еженедельный журнал

Учимся торговать на Форекс Язык MQL — Урок 4 «Улучшенный расчет лота»( продолжение) На предыдущем уроке Язык MQL— Урок 3 «расчет лота» мы научили наш скрипт «test» рассчитывать лот в зависимости от свободных средств на торговом счете форекс. Но чего то ему не хватает, давайте взглянем еще раз на рисунок:

Вот оно!!!— Лот у нас получился с 4 знаками после запятой. А брокер форекс требует 2 знака после запятой. Конечно в ручную не составит труда откинуть лишние 2 знака, но мы стремимся автоматизировать нашу торговлю, т.е. всю работу свалить на компьютер. Кроме того— на рисунке не понятно по какой валютной парерассчитан автоматически лот. Да и цифру максимального риска не помешает видеть на экране монитора. Итак, давайте продолжим улучшать наш скрипт «test». Для начала заставим компьютер отбрасывать лишние цифры. Округлять нельзя. Ведь при округлении получится не то что нам надо (нам надо 0.06, а при округлении будет 0.07 -это больше указанного нами риска). Для того чтобы узнать сколько знаков после запятой разрешено вашим брокером форекс— воспользуемся известной нам функцией MarketInfo(string symbol, int type). Только вторым параметром будем передавать MODE_LOTSTEP — шаг изменения размера лота. Double Step =MarketInfo(Symbol(),MODE_LOTSTEP); переменная Step будет содержать шаг изменения лота.Если разделить наш лот на шаг (например 0.01) мы получим: 0.0684/0.01=6.84 Теперь возьмем целую часть от этого числа (функция MathFloor()) = 6 и умножим на шаг (0.01) получим 0.06 (то что и требовалось). Объединим это с нашим расчетом: double Lot

=MathFloor(Free*MaxRisk/100/One_Lot/Step)*Step; результат:

Получилось отлично. Осталось добавить информацию о валюте и риске в выводимое окно. Риск содержится в переменной MaxRisk, а текущая валюта выдается функцией Symbol().Все это мы знаем из предыдущих уроков. Изменим вызов функции "Alert()":Alert(Symbol(),"(«,MaxRisk,»%)=",Lot); Результат:

Все хорошо, но брокер форекс ограничил не только количество знаков после запятой для лота, но и максимальный и минимальный размер лота. А наш скрипт «test» это не учитывает. Срочно исправляем этот недочет, для этого добавим в наш скрипт следующий код: doubleMin_Lot=MarketInfo(Symbol(),MODE_MIN LOT); doubleMax_Lot=MarketInfo(Symbol(),MODE_MAX LOT); if(Lot<Min_Lot) Lot=Min_Lot; if(Lot>Max_Lot) Lot=Max_Lot;


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.