Информация

Все разделы форума доступны для просмотра всем желающим, без регистрации. Если вы хотите оставлять комментарии на форуме, вам необходимо создать учетную запись или авторизоваться.

Close
Авторизация
tvmaster offline
#111
30 май 2013, 14:55
Сообщений: 7
Поблагодарили: 0 раз(а) в 0 сообщениях
Зарегистрирован: 30 май 2013, 13:19
Добрый день уважаемые знатоки MQL!

Захотел переложить в код советника одну торговую систему, под названием Extreme TMA System, расположенную по адресу _http://www.forexfactory.com/showthread.php?t=343533. Столкнулся с проблемой, прошу помощи!

Что хочу:
цена ходит в коридоре, который рисует индикатор FastTMALine. При отбитии цены от нижней линии коридора открывается ордер на покупку, при достижении верхней границы – ордер на покупку закрывается и открывается на продажу.

В чем проблема:
Только начинаю программировать в MQL. Возможно, что то неправильно инициализирую.
Ордер закрывается, не доходя до верхней границы линии
Шаблон с настройками индикатора и сам индикатор прилагаю
Помогите разобраться.

Код:
void AnalyzeMarket()
{
// средняя линия TMA - 0
double tma_middle = iCustom(Symbol(), time_frame, "FastTMALine", 240, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);
// верхняя - 1
double tma_up = iCustom(Symbol(), time_frame, "FastTMALine", 240, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 1, 0);
// нижняя - 2
double tma_down = iCustom(Symbol(), time_frame, "FastTMALine", 240, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 2, 0);
Вложения
test2.rar
(3.73 KiB) Скачиваний: 4
4x_trader offline
#112
30 май 2013, 15:17
Аватар пользователя
Сообщений: 3759
Поблагодарили: 589 раз(а) в 421 сообщениях
Зарегистрирован: 12 окт 2010, 13:50
----------------------------------------------------------------------------------------------
Собаки лают, караван идёт. Основы Price Action Изображение
4x_trader offline
#113
30 май 2013, 15:50
Аватар пользователя
Сообщений: 3759
Поблагодарили: 589 раз(а) в 421 сообщениях
Зарегистрирован: 12 окт 2010, 13:50
Возможно также, что речь идёт о закрытии позиций Sell, тогда надо помнить, что они открываются по ценам Bid, но закрываются по Ask, которая всегда выше Bid, поэтому на графике, показывающем только Bid может сложиться ошибочное мнение, что позиция закрылась раньше, чем цена достигла верхней линии, хотя на самом деле алгоритм отработал правильно. В этом случае надо просто учесть в коде поправочку на спред.
----------------------------------------------------------------------------------------------
Собаки лают, караван идёт. Основы Price Action Изображение
tvmaster offline
#114
30 май 2013, 16:54
Сообщений: 7
Поблагодарили: 0 раз(а) в 0 сообщениях
Зарегистрирован: 30 май 2013, 13:19
Пробовал в тестере в режиме визуализации и в режиме реального времени на демо-счёте, результат один и тот же.
Вот здесь http://imageup.ru/s1348333 открылся ордер на покупку согласно фильтра, индикатор fisher.
А вот здесь http://imageup.ru/s1348384 индикатор еще в синем цвете, а ордер уже закрылся.

По поводу Bid и Ask все учтено, все правильно, цена довольно таки много пунктов не доходит.
4x_trader offline
#115
30 май 2013, 18:23
Аватар пользователя
Сообщений: 3759
Поблагодарили: 589 раз(а) в 421 сообщениях
Зарегистрирован: 12 окт 2010, 13:50
Давай, посмотрим повнимательнее... В индикаторе:
extern string TimeFrame = "Current";//1
extern int TMAPeriod = 56;//2
extern int Price = PRICE_CLOSE;//3
extern double ATRMultiplier = 2.0;//4
extern int ATRPeriod = 100;//5
extern double TrendThreshold = 0.5;//6
extern bool ShowCenterLine = false;//7
extern bool alertsOn = false;//8
extern bool alertsMessage = false;//9
extern bool alertsSound = false;//10
extern bool alertsEmail = false;//11
extern bool MoveEndpointEveryTick = false;//12
extern int MaxBarsBack = 5000;//13
В советнике:
double tma_middle = iCustom(Symbol(), time_frame, "FastTMALine", 240, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);
Ты задаёшь 13 внешних переменных, это кажется правильным, но делаешь одну ошибку - первая переменная TimeFrame должна быть string, а ты пишешь число 240...
Как быть? Не надо здесь задавать таймфрейм вообще - оставь по умолчанию "Current", а таймфрейм для расчётов будет определяться вторым параметром.
Получится так:
double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);
Далее... Нет необходимости перечислять при вызове все 13 внешних переменных, если ты не намерен их изменять. По идее, можно не передавать параметры, не подлежащие изменению - они будут теми, что прописаны в индикаторе. Исключить можно начиная с последнего и до первого изменяемого, например:
double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);
Получим:
double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, 0, 0);
Последнее - ты уверен, что нужно работать со значениями индикатора на текущем баре? Это значение будет изменяться много раз... Лучше уж взять значение первого бара (ИМХО)
double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, 0, 1);
Для tma_up и tma_dn - по аналогии.
Напиши о результате.
----------------------------------------------------------------------------------------------
Собаки лают, караван идёт. Основы Price Action Изображение
tvmaster offline
#116
30 май 2013, 18:46
Сообщений: 7
Поблагодарили: 0 раз(а) в 0 сообщениях
Зарегистрирован: 30 май 2013, 13:19
Спасибо, попробую, о результате отпишу обязательно!
4x_trader offline
#117
30 май 2013, 18:54
Аватар пользователя
Сообщений: 3759
Поблагодарили: 589 раз(а) в 421 сообщениях
Зарегистрирован: 12 окт 2010, 13:50
----------------------------------------------------------------------------------------------
Собаки лают, караван идёт. Основы Price Action Изображение
tvmaster offline
#118
30 май 2013, 22:15
Сообщений: 7
Поблагодарили: 0 раз(а) в 0 сообщениях
Зарегистрирован: 30 май 2013, 13:19
Попробовал разные варианты, все по прежнему, работает не правильно.

По настройке индикатора
extern string TimeFrame = "Current" - здесь задается параметр отображения индикатора, 240(H4).
Если оставить "Current", то на графике H1, на котором должен рисоваться канал, будут параметры для H1, а не H4. Так что нужно прописывать 240.

Может параметры закрытия ордера не верны?

// Цена ушла за верхнюю границу канала - закрываем все открытые баи
if (Ask >= tma_up)
{
buy_close = true;
}
// Цена ушла за нижнюю границу канала - закрываем все открытые селлы
else if (Bid <= tma_down)
{
sell_close = true;
}

Не могу найти, где собака зарыта!

Тема остается открытой, принимаю помощь в любом виде :)
4x_trader offline
#119
30 май 2013, 23:57
Аватар пользователя
Сообщений: 3759
Поблагодарили: 589 раз(а) в 421 сообщениях
Зарегистрирован: 12 окт 2010, 13:50
----------------------------------------------------------------------------------------------
Собаки лают, караван идёт. Основы Price Action Изображение
tvmaster offline
#120
31 май 2013, 01:00
Сообщений: 7
Поблагодарили: 0 раз(а) в 0 сообщениях
Зарегистрирован: 30 май 2013, 13:19
Установите шаблон, который я выложил.
Откроется график H1 с настройками индикатора для данного таймфрейма.

Советник должен работать на H1

Очень интересно узнать, что не так! Желаю Вам удачи, спасибо.

BBCode ВЫКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ

   

Если Вы не хотите добавлять вложения, оставьте поля пустыми.

Пред.След.

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Список форумов

Часовой пояс: UTC + 4 часа (Russia: MSK) по летнему времени Удалить cookies форума

В вашем браузере отключена поддержка cookie. При отключенной поддержке cookie в браузере у вас могут возникнуть проблемы с отображением Личного кабинета. Как включить (активировать) поддержку cookie.