Помогите разобраться с объявлением функции!!!
Нельзя обьявлять функцию в другой функции.
например так:
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(),
то такая конструкция будет работать.
эта конструкция по любому работать будет
Всем добрый день!
Помогите чем сможете!
Не могу разобраться с объявлением функции.
Хочу себе сделать на первых порах набор наподобии Кимовских функций (только более простых).
Ниже попытка сделать такое на простом примере.
только вот несколько ошибок вылетет, а понять почему не могу!
//+------------------------------------------------------------------+
//| 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;
}
//---------------------------------------------+