А где идёт выбор позиции? Тут не показано. Попробуйте в каждом блоке сделать так
if (SL<Price) if ((Bid-Price)>=(TS*Point)) { SL=Price; if (OrderSelect(Ticket,SELECT_BY_TICKET)=true) OrderModify(Ticket,Price,SL,TP,0,0); }
по 1 вопросу-
Попробуйте код написать примерно так:
New_bar=false; if(Time_0!=Time[0]){New_bar=true; Time_0=Time[0];} if(New_bar){ if(st2<st4){ if(st1>st3){ if((st1-st3)>Diff){ Opn_B=true; }}} if(st2>st4){ if(st1<st3){ if((st3-st1)>Diff){ Opn_S=true; }}} }
по 2 вопросу -
Раз пишет - "invalid ticket for OrderModify function"
значит где то в процессе теряется тикет, попробуйте его явно контролировать или
перед использованием функции выбирать ордер при помощи
bool OrderSelect( int index, int select, int pool=MODE_TRADES)
Всем спасибо за участие, буду пробовать на основании ваших поправок. По результату отпишусь
Вы все оказались правы по поводу определения конкретного ордера.
Сделал так
if (SL<Price) if ((Bid-Price)>=(TS*Point)) { SL=Price; if (OrderSelect(Ticket,SELECT_BY_TICKET)=true) OrderModify(Ticket,Price,SL,TP,0,0); }
, как и советовали. Ошибка 4051 действительно пропала, но появилась безобидная ошибка 1 :) Как мне теперь от нее избавиться?
Кстати, после изчезновения ошибки 4051, которая перла без остановки, исчезла проблема с разницей между линиями индикатора!!! Код сразу стал работоспособный!!!
Но все таки, как теперь искоренить ошибку 1? Пишет следующее: 2009.06.25 23:20:41 2009.06.19 14:39 StohSig(4) GBPUSD,H1: OrderModify error 1 и так каждую секунду, но все выполняет как надо
Правка: хотя некоторые ордера не всегда модифицирует!
Но все таки, как теперь искоренить ошибку 1? Пишет следующее: 2009.06.25 23:20:41 2009.06.19 14:39 StohSig(4) GBPUSD,H1: OrderModify error 1 и так каждую секунду, но все выполняет как надо
1 "Нет ошибки, но результат неизвестен" те OrderModify почему то не возвращает результат операции.
Ни помню у кого рванул библиотеку ошибок на русском, автар отзовись(прилогаю).
1 "Нет ошибки, но результат неизвестен" те OrderModify почему то не возвращает результат операции.
Ни помню у кого рванул библиотеку ошибок на русском, автар отзовись(прилогаю).
Спасибо за обработчик ошибок, но я уже применяю подобный. Именно он и подсказал об ошибке 1, но он не указывает как от нее избавиться :)
ERR_NO_RESULT 1 OrderModify пытается изменить уже установленные значения такими же значениями. Необходимо изменить одно или несколько значений и повторить попытку.
Судя по всему при модификации изменяется только стоп, а профит остаётся неизменным. Попробуйте изменять профит хотябы на 1 пункт каждый раз.
if (OrderSelect(Ticket,SELECT_BY_TICKET)=true) OrderModify(Ticket,OrderOpenPrice(),SL,TP,0,0); ... if (OrderSelect(Ticket,SELECT_BY_TICKET)=true) OrderModify(Ticket,OrderOpenPrice(),SL,TP+10*Point,0,0); ... if (OrderSelect(Ticket,SELECT_BY_TICKET)=true) OrderModify(Ticket,OrderOpenPrice(),SL,TP+20*Point,0,0);
И т д.
Насчёт одного пункта не знаю - получится ли. Попробуйте сначала 10, а потом 1, если всё нормально будет.
Иставьте всегда OrderOpenPrice() вместо Price. Иначе получается так, что Вы пытаетесь изменить Цену открытия вроде как.
Вобщем поэксперементируйте сначала с ценой открытия, а потом с профитом. Я сам больно-то не грамотен до таких тонкостей. Удачи.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем доброго времени суток!
Уважаемые программеры, у меня возникли проблемы при реализации следующей идеи:
- имеется индикатор стохастик, при пересечении его линий должен поступать сигнал на продажу или покупку, но при этом должна учитываться разница между его линиями (Diff=1,5, то есть не быть меньше 1,5). Сигнал поступает при появлении первой свечи
все st - double; происходит следующее - позиции открываются по пересечению, а разницу как-будто не замечает;
- вторая проблема это возникновение вот такой ошибки:
2009.06.25 15:46:31 2009.04.20 16:18 StohSig(3) GBPUSD,H1: invalid ticket for OrderModify function
2009.06.25 15:46:12 2009.04.01 21:04 StohSig(3) GBPUSD,H1: OrderModify error 4051
, но при этом все открывается и работает, правда иногда не модифицирует ордера как планировалось (то есть цена доходит, но модификация не происходит);
Блок модификации образующий эту ошибку:
Lewel - это уровень отклонения цены
Выбираются ордера с помощью OrderSelect - SELECT_BY_POS,MODE_TRADES
ПОЖАЛУЙСТА, подскажите где я ошибаюсь!