... проблема в том что я просто не представляю как он работает:
1) он вызывается (допустим скрипт закрывающий все ордера) потом он просто за тик пытается все закрыть, функция пробегает что закрылось то закрылось, что нет то нет и все...? :(
2) ..... потом он каждый тик пытается что то закрыть, что закрылось то закрылось, что нет то нет? :(
инымы словами правельно ли так?
start
{
allclosed();
if (OrdersTota==0) return(0);
}
или надо так
void start()
{
int a;
for (int i=OrdersTotal(); i==0;)
{
allclosed();
}
return(0);
}
другими словами: "как скрипт заставить быть цикличным?"
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- На нашем веб-сайте выложен обновленный билд 198 от 19 октября
- Новая версия платформы MetaTrader 5 build 2715: Общие улучшения
void start() { for (int i=OrdersTotal(); i==0;) { for (int a=OrdersTotal(); a>=-1; a--) { if (OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,9,Gold); else OrderClose(OrderTicket(),OrderLots(),Ask,9,Gold); } } } return(0); } будет ли работать этот скрипт?
Будет и еще как!... бесконечно долго)))
а почему? что не так?
На расстоянии 1 спичечный коробок и еще одна треть от начала находтся ошибка)))
А если хотите обсуждать - отформатируйте в SRC прямо в посте
void start() { for (int i=OrdersTotal(); i==0;) { for (int a=OrdersTotal(); a>=-1; a--) { if (OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,9,Gold); else OrderClose(OrderTicket(),OrderLots(),Ask,9,Gold); } } } return(0); }
void start() { for (int i=OrdersTotal(); i==0;) //Где декремент i? - здесь бесконечный цикл { for (int a=OrdersTotal(); a>=-1; a--) //самый малый номер ордера в списке это ноль, сейчас выходит за граицу { if (OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==true) //TRUE - лишнее { if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,9,Gold); else OrderClose(OrderTicket(),OrderLots(),Ask,9,Gold); } } } return(0); }
Это называется - программирование на удачу - авось чтонить получиться :-)
Почитайте https://book.mql4.com/ru/trading/orderclose
здесь есть нужные вам ответы
void start() { for (int i=OrdersTotal(); i==0;) {i=OrdersTotal(); for (int a=OrdersTotal(); a>=0; a--) { if (OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,9,Gold); else OrderClose(OrderTicket(),OrderLots(),Ask,9,Gold); } } } return(0); } // а так почему не работает?
xeon:
Это называется - программирование на удачу - авось чтонить получиться :-)
Почитайте https://book.mql4.com/ru/trading/orderclose
здесь есть нужные вам ответы
мне просто хотелось разобратся как работают скрипты =)
void start() { for (int a=OrdersTotal()-1; a>=0; a--) {RefreshRates(); if (OrderSelect(a,SELECT_BY_POS,MODE_TRADES)) { if (OrderType()==OP_BUY&&OrderCloseTime()==0) OrderClose(OrderTicket(),OrderLots(),Bid,9,Gold); else OrderClose(OrderTicket(),OrderLots(),Ask,9,Gold); } } return(0); }
P.S. minus 1 OrderTotal
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь