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

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

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

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

Дмитрий
144
Дмитрий  
forex-k писал(а) >>

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

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

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

Koнстантин
745
Koнстантин  
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();

.

.

.

}

Yury Reshetov
12081
Yury Reshetov  
Kishar >>:

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

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

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

OrderDelete(OrderTicket());

}

}}}

Alexander
2441
Alexander  

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

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

Yury Reshetov
12081
Yury Reshetov  
Roger >>:

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

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


Kishar писал(а) >>


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

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

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

Yury Reshetov
12081
Yury Reshetov  
Roger >>:

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

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


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

Alexander
2441
Alexander  
Reshetov писал(а) >>

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

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

Yury Reshetov
12081
Yury Reshetov  
Roger >>:

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

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


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


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

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий