С прошедшими всех!
Подскажите... Написал советник, торгует, сигналы есть.. Но как известно рынок изменчив. На моем советнике это отражается "затуханием" сигналов и "усилением". Поэтому хочу торговать им на разных парах.
Как правильно можно(нужно) использовать НЕ мультисоветник (без привязки к валюте) на нескольких графиках?
У меня идет проверка на наличие одного ордера и одного сигнала.. Если ордер есть, значит есть сигнал и больше никаких движений советника до закрытия текущего ордера. После ждем сигнала и снова один ордер... и т.д.
Мне наверное нужно привязать открытый ордер к определенной паре, чтоб советник различал открытые ордера и закрывал только нужный... А сам советник развесить развесить на разные пары...
Если не использовать советник на разных таймфреймах одного инструмента, то достаточен контроль торгуемого инструмента. То есть работа советника разрешена по тем позициям, у которых OrderSymbol()==Symbol(). Если нужна работа по разным таймфреймам, то для каждого таймфрейма свое магическое число MagicNumber и соответсвенно контроль по магическому числу OrderMagicNumber()==MagicNumber, не забывая про контроль символа.
Почти понял, но не до конца...
Как связать проверку инструмента OrderSymbol()==Symbol() с проверкой открытого ордера именно по этому инструменту OrdersTotal()>0 ?
Чтобы проверка была открытого ордера по текущему инструменту...
Почти понял, но не до конца...
Как связать проверку инструмента OrderSymbol()==Symbol() с проверкой открытого ордера именно по этому инструменту OrdersTotal()>0 ?
Чтобы проверка была открытого ордера по текущему инструменту...
int start() { int i; for (i=OrdersTotal()-1;i>=0;i--) { if (CheckOrder(i, Symbol(), MagicNumber)) { // Ваши действия по обработке вашего ордера } } bool CheckOrder(int lnPos,string lsSymbol="", int lnMagicNumber=0) { if (!OrderSelect(lnPos,SELECT_BY_POS)) return(false); if (!(OrderSymbol()==lsSymbol || lsSymbol=="")) return(false); if (!(OrderMagicNumber()==lnMagicNumber || lnMagicNumber==0)) return(false); return(true); }Что-то примерно эдакое. Хотя могут быть и варианты
А такой вариант возможен?
Пример закрытия открытого ордера:
void ClosePos() //поступил новый сигнал, скорее закрываем всё..! { if (OrderSelect(0,SELECT_BY_POS)==true) && (OrderSymbol()==Symbol()) // Если есть открытый ордер и он относится к текущему инструменту { if (OrderType()==OP_BUY) { } else { } } }
Если количество открытых позиций больше одного, то такой вариант уже не пройдет. Нужная позиция может быть на любом месте, а не первой по списку стоять.
Хотя, если хранить тикеты открытых позиций в массиве и постоянно проверять их (позиций) наличие. То код может быть очень простым.
Каждый советник работает со своим массивом и другие позиции ему неизвестны. Но при загрузке советника все равно надо будет делать загрузку ранее открытых позиций, а тут нужен будет опять же контроль по символу и магику.
Примерно так?)...
for (int i=1; i<=OrdersTotal(); i++) //Цикл по всем ордерам,.. { //отражённым в терминале if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий { if(OrderSymbol()==Symbol()) { if (OrderType()==OP_BUY) { ... } else { ... } } } } //Конец тела цикла
Я обычно использую такие проверки:
int _OrdersTotal=OrdersTotal(); for (int i=_OrdersTotal-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS)) { if (OrderMagicNumber() == Magic) { if (OrderSymbol() == Symbol()) { if (OrderType() == OP_BUY) { } } } } }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
С прошедшими всех!
Подскажите... Написал советник, торгует, сигналы есть..
Евра 06.2008 - 01.2009
Но как известно рынок изменчив. На моем советнике это отражается "затуханием" сигналов и "усилением". Поэтому хочу торговать им на разных парах.
Как правильно можно(нужно) использовать НЕ мультисоветник (без привязки к валюте) на нескольких графиках?
У меня идет проверка на наличие одного ордера и одного сигнала.. Если ордер есть, значит есть сигнал и больше никаких движений советника до закрытия текущего ордера. После ждем сигнала и снова один ордер... и т.д.
Мне наверное нужно привязать открытый ордер к определенной паре, чтоб советник различал открытые ордера и закрывал только нужный... А сам советник развесить развесить на разные пары...