Не работает удаление отложенного ордера

 
Не получается удаление отложенных ордеров. В данном куске советника удаление должно быть при условии, что цена опустилась ниже ТР, но отложенный ордер не сработал. Перебрал несколько готовых скриптов, экспериментировал, ничего не вышло. Помогите.
Файлы:
ttttt.mq4  2 kb
 
Kishar >>:
Не получается удаление отложенных ордеров. В данном куске советника удаление должно быть при условии, что цена опустилась ниже ТР, но отложенный ордер не сработал. Перебрал несколько готовых скриптов, экспериментировал, ничего не вышло. Помогите.

вот функция удаления всех отложек

int close()
{
for(int i=OrdersTotal(); i+1>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
OrderDelete(OrderTicket());
}
}

 
forex-k писал(а) >>

вот функция удаления всех отложек

int close()
{
for(int i=OrdersTotal(); i+1>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
OrderDelete(OrderTicket());
}
}

Функция понятна, но как правильно прописать условие, чтобы работало.

 
Kishar >>:

Функция понятна, но как правильно прописать условие, чтобы работало.

очень просто

int magic =123;

//------------------------------------------------------

double OrderTakeProfiT(int Magic)
{double j=0;for(int i=0;i<OrdersTotal();i++)
{if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{if(OrderMagicNumber()==Magic)j=OrderTakeProfit();}
}return(j);}
//------------------------------------------------------

int close(){for(int i=OrdersTotal(); i+1>=0; i--)

{if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

OrderDelete(OrderTicket());}}

//------------------------------------------------------

int start()

{

.

.

if(Bid>OrderTakeProfiT(magic))close();


//или


if(Bid<OrderTakeProfiT(magic))close();

.

.

.

}

 
Kishar >>:

Функция понятна, но как правильно прописать условие, чтобы работало.

int close() {
for(int i = 0; i < OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true) {

if (Ask < OrderTakeProfit()) { // Вот так

OrderDelete(OrderTicket());

}

}}}

 

Вы что-то пургу сегодня все гоните:

for(int i =  OrdersTotal()-1;i>=0; i--) {
{
OrderSelect(i, SELECT_BY_POS) ; 
if (OrderType()>1)OrderDelete(OrderTicket());
}

 
Roger >>:

Вы что-то пургу сегодня все гоните:

Это Вы гоните пургу. А у топикстатера было черным по белому написано конкретное условие удаления позы:


Kishar писал(а) >>


... удаление должно быть при условии, что цена опустилась ниже ТР...
 
Reshetov писал(а) >>

Это Вы гоните пургу. А у топикстатера было черным по белому написано конкретное условие удаления позы:

Я не про ТР. Один явно ищет ордера вне зоны досягаемости, а уж от Вас такого ляпа никак не ожидал - при удалении ордера следует считать с конца, а не с начала.

 
Roger >>:

Я не про ТР. Один явно ищет ордера вне зоны досягаемости, а уж от Вас такого ляпа никак не ожидал - при удалении ордера следует считать с конца, а не с начала.

А какая разница, с какого конца, если задано четкое условие удаления? Если бы в ТЗ было бы указано, откуда нужно считать, тогда конечно был бы явный ляп.


Суть в том, чтобы показать именно тот кусок кода, который у топикстатера не срабатывает. А дальше пущай сам разбирается, с какого конца ему удобнее или задает дополнительные вопросы.

 
Reshetov писал(а) >>

А какая разница, с какого конца, если задано четкое условие удаления? Если бы в ТЗ было бы указано, откуда нужно считать, тогда конечно был бы явный ляп.

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

 
Roger >>:

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

А где в условии сказано, что первое должно быть с начала или с конца?


Вы глаза компотом промойте и еще раз внимательно перечитайте первый пост. О чем там идет речь?


Или привыкли не читая условий задачи, телепатически решать за других, что должно быть, а чего не должно?

Причина обращения: