Удаление отложенного ордера

 

Может ли кто-нибудь помочь со скриптом (как можно проще (без наворотов), чтобы было понятно, потому что я только учусь).

Условие простое.
Есть только один открытый ордер и один отложенник (мартингейл). Если первый закрывается по профиту, то отложенник сразу удаляется. Наверное для гуру это проще простого. А я уже все мозги сломала.
Я пока только научилась открывать ордера, а с закрытием - туго. Все что я нахожу на интернете - очень наворочено для начинающего или теория, которую непонятно как применять. А простых примеров очень мало. Я нашла только здесь (может кому из начинающих тоже пригодится)

Помогите пожалуйста.

 

В скриптах поставки есть пример - deletePending.

Вот типа для удаления всех по выбранному символу

#property show_confirm

//+------------------------------------------------------------------+
//| script "delete first pending order" |
//+------------------------------------------------------------------+
int start()
{
bool result; string s;
int cmd,total;
//----
total=OrdersTotal()-1;Print ("Total=",total+1);
//----
for(int i=total; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
cmd=OrderType();s=OrderSymbol();
//Print (" = ",i," ",cmd," ",s);
//---- pending orders only are considered
if(cmd!=OP_BUY && cmd!=OP_SELL && s==Symbol())
{
//---- print selected order
OrderPrint();
//---- delete pending order
result=OrderDelete(OrderTicket());
if(result!=TRUE) Print("LastError = ", GetLastError());
//break;
}
}
else { Print( "Error when order select ", GetLastError()); break; }
}
//----
return(0);
}

 

Спасибо за линк. Но неужеле нельзя попроще? Краткость сестра таланта.
 
liana:

Спасибо за линк, но там черт ногу сломает, столько наворотили, вы это видели? Неужеле нельзя попроще? Краткость сестра таланта.

следите в сове за основным ордером - и все дела...

;)

 
liana:

Спасибо за линк, но там черт ногу сломает, столько наворотили, вы это видели? Неужеле нельзя попроще? Краткость сестра таланта.


https://www.mql5.com/ru/forum/138628/page2 см. в конце советник от

khorosh 23.03.2012 12:33

"Ошибки компиляции устранил, отсутствие других, если такие имеются, не гарантирую.."

 
liana:

Может ли кто-нибудь помочь со скриптом (как можно проще (без наворотов), чтобы было понятно, потому что я только учусь).

Условие простое.
Есть только один открытый ордер и один отложенник (мартингейл). Если первый закрывается по профиту, то отложенник сразу удаляется. Наверное для гуру это проще простого. А я уже все мозги сломала.
Я пока только научилась открывать ордера, а с закрытием - туго. Все что я нахожу на интернете - очень наворочено для начинающего или теория, которую непонятно как применять. А простых примеров очень мало. Я нашла только здесь (может кому из начинающих тоже пригодится)

Помогите пожалуйста.

if(isCloseLastPosByTake(0, -1, -1))
{
 DeleteOrders("0", -1, -1);
}
Сами функции можете найти в ветке "Полезные функции KimIV".
 

Мне почему-то кажется, что это можно это решить двумя линиями, только я не знаю как.

Типа:
1. Есть только один открытый ордер, который мы отыскиваем (OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS,MODE_HISTORY))
2. Если этот ордер в профите if(OrderProfit()>0), то закрыть pending order OrderDelete()

Только как это все написать правильно? Вы поймите, я же еще на уровне "Hello World" только.

 
Roll:
Есть другое мнение -- "простота хуже воровства".

Ну зачем же так? Все когда-то начинали с простых скриптов.
 
liana:

Ну зачем же так? Все когда-то начинали с простых скриптов.

О них и сказано.
 
liana:

Мне почему-то кажется, что это можно это решить двумя линиями, только я не знаю как.

Типа:
1. Есть только один открытый ордер, который мы отыскиваем (OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS,MODE_HISTORY))
2. Если этот ордер в профите if(OrderProfit()>0), то закрыть pending order OrderDelete()

Только как это все написать правильно? Вы поймите, я же еще на уровне "Hello World" только.

А что вас не устраивает или не понятно в предложенном мной варианте? Ведь проще уже некуда - используются две готовые функции.
Причина обращения: