вот тут:
OrderSelect(OrdersTotal(),SELECT_BY_POS,MODE_TRADES);
Я так понял тебе нужно выбрать последний ордер, надо так:
OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
Так как счет начинается с 0, а не с 1, поэтому и OrdersTotal() на 1 меньше надо брать.
А вообще по-хорошему последний ордер надо через цикл определять. То есть в цикле ты проходишь по всему списку ордеров и ищешь ордер наибольшим значением времения открытия(поиск максимального значения).
Что-то вроде этого:
datetime open_time=0;
for (cnt=0;cnt< OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol()==Symbol()
{
if(OrderOpenTime()>open_time)
open_time=OrderOpenTime();
}
}
OrderSelect(OrdersTotal(),SELECT_BY_POS,MODE_TRADES);
выбрать ордер 12 если всего ордеров 11! Как?
ОрдерсТотал - показывает сколько ордеров есть. Если вам нужен последний ордер, так говоря первый с низу, тогда нужно OrdersTotal()-1, если нужен первый со списка тогда просто 0 (ноль).
if (OrdersTotalMagicbuy(Magicbuy)==0)Это чета не понятно!
Опять же, по-русски пишешь
Print("открываем продажу ",OrderMagicNumber ());
а выставляешь ордер на покупку.
ticketsell = OrderSend(Symbol(),OP_BUY,lotsbuy*mult,openprice-step,3,0,0,"Grail",Magicsell,0,Red);
ticketbuy = OrderSend(Symbol(),OP_BUY,lotsbuy*mult,openprice,3,0,0,"Grail",Magicbuy,0,Blue);
a nado:
ticketsell = OrderSend(Symbol(),OP_BUY,lotsbuy*mult,Ask,3,0,0,"Grail",Magicsell,0,Red);
ticketbuy = OrderSend(Symbol(),OP_BUY,lotsbuy*mult,Ask,3,0,0,"Grail",Magicbuy,0,Blue);
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сразу предупреждаю Я не программист! Будем считать что это жалкие потуги понять что представляет из себя MQL!
Если вас не затруднит посмотрите где я ошибся!
Почему-то после данного алгоритма меня возвращает на start!
else
{
Print("плохой профит");
OrderSelect(OrdersTotal(),SELECT_BY_POS,MODE_TRADES);
openprice=OrderOpenPrice();
if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicbuy)
{
Print("открываем покупку ",OrderMagicNumber ());
ticketsell = OrderSend(Symbol(),OP_BUY,lotsbuy*mult,openprice-step,3,0,0,"Grail",Magicsell,0,Red);
}
if ((OrderSymbol()==Symbol()) && (OrderMagicNumber () == Magicsell))
{
Print("открываем продажу ",OrderMagicNumber ());
ticketbuy = OrderSend(Symbol(),OP_BUY,lotsbuy*mult,openprice,3,0,0,"Grail",Magicbuy,0,Blue);
}
}
free = AccountFreeMargin();balance = AccountBalance();
for (cnt=0;cnt< OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicbuy) ticketbuy = OrderTicket();
if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicsell) ticketsell = OrderTicket();
}
if (OrdersTotalMagicbuy(Magicbuy)==0)
{
profitbuy=0;ticketbuy=0;tpb=0;
}
if (OrdersTotalMagicsell(Magicsell)==0)
{
profitsell=0;ticketsell=0;tps=0;
}
return(0);
}
Хотя должен открыть продажу!