
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день!
У меня вот какая проблема. Я пытаюсь сделать советника на основе стохастика. Когда сигнальная линия(%D) пересекает основную линию(%K) сверху вниз, то советник должен входить в рынок, а когда снизу вверх - то выходить из рынка. Вот моя попытка реализовать советника на языке MQL II:
/*[[
Name := Lebedev
Author := Copyright © 2003, aalexeymsl@mail.ru
Link := aalexeymsl@mail.ru
Lots := 1.00
Stop Loss := 0
Take Profit := 0
Trailing Stop := 10
]]*/
Variables: StohMain(0), StohSignal(0);
Variable: cnt(0);
// первичные проверки данных
// важно удостовериться что эксперт работает на нормальном графике и
// пользователь правильно выставил внешние переменные (Lots, StopLoss,
// TakeProfit, TrailingStop)
// в нашем случае проверяем только TakeProfit
If Bars<200 then Exit; // на графике менее 200 баров
// ради упрощения и ускорения кода, сохраним необходимые
// данные индикаторов во временных переменных
StohMain=iSTO(5, 3, 3, MODE_SMA, MODE_MAIN, 0);
StohSignal=iSTO(5, 3, 3, MODE_SMA,MODE_SIGNAL, 0);
// теперь надо определиться - в каком состоянии торговый терминал?
// проверим, есть ли ранее открытые позиции или ордеры?
If TotalTrades<1 then
{// нет ни одного открытого ордера
// на всякий случай проверим, если у нас свободные деньги на счету?
// значение 1000 взято для примера, обычно можно открыть 1 лот
If FreeMargin<1000 then Exit; // денег нет - выходим
// проверим, не слишком ли часто пытаемся открыться?
// проверяем на возможность встать в длинную позицию (BUY)
If StohMain-StohSignal>5
then
{
SetOrder(OP_BUY,Lots,Ask,3,0, Ask+15*Point, RED);// исполняем
Exit;// выходим, так как все равно после совершения торговой операции
// наступил 10-ти секундный таймаут на совершение торговых операций
};
Exit;
};
for cnt=1 to TotalTrades
{
// проверим, может уже пора закрываться?
// проверим - может можно/нужно уже трейлинг стоп ставить?
If StohMain<=StohSignal
then
{
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,5,Violet); // закрываем позицию
Exit; // выходим;
};
};
Этот советник при тестировании выдаёт совершенно не те результаты, которые я ожидал. То он входит неправильно, то выходит неправильно. К сожалению мне не к кому обратиться, поэтому я обращаюсь к Вам. Если Вам не сложно, укажите мне, пожалуйста, на мою ошибку.
С уважением, Антон