приветсвую всех. подскажите пожалуйста как закрыть ордера по тикету ? MQL4 .я попытался написать но он закрывает только первый ордер и потом пишет что тикет не известен.заранее спасибо!
shunos111:
приветсвую всех. подскажите пожалуйста как закрыть ордера по тикету ? MQL4 .я попытался написать но он закрывает только первый ордер и потом пишет что тикет не известен.заранее спасибо!
приветсвую всех. подскажите пожалуйста как закрыть ордера по тикету ? MQL4 .я попытался написать но он закрывает только первый ордер и потом пишет что тикет не известен.заранее спасибо!
В функции OrderSelect(.........)
вместо SELECT_BY_TICKET
ставьте SELECT_BY_POS
И вставляйте код с помощью кнопочки
shunos111:
приветсвую всех. подскажите пожалуйста как закрыть ордера по тикету ? MQL4 .я попытался написать но он закрывает только первый ордер и потом пишет что тикет не известен.заранее спасибо!
приветсвую всех. подскажите пожалуйста как закрыть ордера по тикету ? MQL4 .я попытался написать но он закрывает только первый ордер и потом пишет что тикет не известен.заранее спасибо!
у каждого ордера свой уникальный тикет
если Вы закрыли один, то для закрытия следующего ордера по тикету, также нужно знать этот тикет.
спасибо! сейчас попробую
//+------------------------------------------------------------------+ //| 17.mq4 | //| 1 | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Хасан" #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { b(); MaxPrice(); } //+------------------------------------------------------------------+ double TsenaPoslednegoOrdera() { int oldticket,ticket =0; double oldopenprice =0; for (int cnt = OrdersTotal() - 1; cnt>=0;cnt--) { if ( OrderSelect( cnt,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol() == Symbol()&& OrderType() == OP_BUY) { oldticket = OrderTicket(); if (oldticket > ticket) { ticket = oldticket; oldopenprice = OrderOpenPrice(); } } } } return (oldopenprice); } void b() { if(OrdersTotal()==0) { OrderSend(Symbol(),OP_BUY,0.01,Ask,200,0,0,"",1,0,Blue); } double b = NormalizeDouble(TsenaPoslednegoOrdera()-Ask >= 20*Point*10,Digits); if(OrdersTotal()==1 && b) { OrderSend(Symbol(),OP_BUY,0.01,Ask,200,0,0,"",1,0,Blue); } } void MaxPrice() { double maxprice = 999999,m; int ticb; for (int k=OrdersTotal()-1; k>=0; k--) { if (OrderSelect(k,SELECT_BY_TICKET,MODE_TRADES)) { if (OrderSymbol() == Symbol() ) { if (OrderType()==OP_BUY) { m = OrderOpenPrice(); if( m < maxprice) { maxprice = m; ticb = OrderTicket() ; } if (OrdersTotal() ==2) { OrderClose(ticb, OrderLots(),Bid , 200,White); } } } } } }
не получается. я хотел закрывать ордер у которого самая высокая цена . но получается что закрывается только один первый ордер и всё
может данные переменных нужно обновлять . но я не знаю как нужно обновлять данные переменных
здесь будет минимальная:
m = OrderOpenPrice();
if( m < maxprice)
{
maxprice = m;
здесь сравниваются тикеты. непонятно зачем
oldticket = OrderTicket();
if (oldticket > ticket)
{
ticket = oldticket;
oldopenprice = OrderOpenPrice();
закрывает правильно но только один раз. а нужно чтобы закрывался каждый ордер из двух у которого самая высокая цена
maxprice=0; ..... m = OrderOpenPrice(); if( m > maxprice) maxprice = m;//максимальная
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь