Нельзя обьявлять функцию в другой функции.
например так:
void PosBuyAllClose(){int i; for(i=OrdersTotal();i>0;i--){//Обратный отсчет при удалении для того чтобы не пропускать ордера if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){//условие нахождения ордера чтобы избежать ошибки 4108 if(OrderType()<1){OrderClose(OrderTicket(),OrderLots(),Bid,2,Red);} } } return; }
да упустил, бывает
Нет ордера с номером OrdersTotal().
А ну да... что-то даже не заметил, спасибо за замечание. Но все же даже если написать OrdersTotal(),
то такая конструкция будет работать.
эта конструкция по любому работать будет
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем добрый день!
Помогите чем сможете!
Не могу разобраться с объявлением функции.
Хочу себе сделать на первых порах набор наподобии Кимовских функций (только более простых).
Ниже попытка сделать такое на простом примере.
только вот несколько ошибок вылетет, а понять почему не могу!
//+------------------------------------------------------------------+
//| MA.mq4 |
//| Sokolov Dmitrij Pavlovich |
//| |
//+------------------------------------------------------------------+
#property copyright "SDP"
#property link ""
extern int bar=0;
extern int PeriodMA=2; //Период усреднения для вычисления скользящего среднего
extern int MetodMA=3; //Метод вычисления скользящего среднего: 0-MODE_SMA; 1-MODE_EMA; 2-MODE_SMMA; 3-MODE_LWMA
extern int PriceHighMA=2; //Используемая цена. Может быть любой из ценовых констант: 0-6
//+-----------------------+
//| expert start function |
//+-----------------------+
void start()
{
if(ma(bar)>ma(bar+1)){OrderSend(Symbol(),OP_BUY,0.1,Bid,2,0,0,"Koment",0,0,Blue);return;}
else {PosBuyAllClose()}
return;
}
//+-----------------------+
//| end function |
//+-----------------------+
//+--------Функция MA---------------------------+
double ma(int a=0){double b=iMA(Symbol(),PERIOD_H1,PeriodMA,0,MetodMA,PriceHighMA,a); return(b);}
//+---------------------------------------------+
//---------Закрытие всех позиций BUY------------+
void PosBuyAllClose(bool closepos)
{
int i;
for( i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY) {OrderClose(OrderTicket(),OrderLots(),Bid,2,Red); return;}
}
return;
}
//---------------------------------------------+