Использование циклов в программах

 
Поясните идиоту на пальцах как использовать циклы в программах например есть код как в него цикл прикрутить я понимаю что он там возможно не нужен но мне так понятней будет я учусь тока
//+------------------------------------------------------------------+//| RSI&&ADX&& MA.mq4 |//| Demon |//| |//+------------------------------------------------------------------+#property copyright "Demon"#property link "voli1978@yahoo.com" //---- input parametersextern int StopLoss=20; extern int TakeProfit=40; extern double Lots=0.1; extern int MA1=8;//скользящая средняяextern int MA2=21; extern int MA3=120; extern int ADX=12; extern int RSI=12; extern int MINUSDI=6; extern int PLUSDI=6; //+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int start() {double M1,M2,M3,M4,M5,M6,adx,adx1,adx2,adx3,adx4,rsi; double tiket; // M1=iMA(NULL,0,MA1,0,MODE_EMA,PRICE_CLOSE,0); M2=iMA(NULL,0,MA2,0,MODE_EMA,PRICE_CLOSE,0); M3=iMA(NULL,0,MA3,0,MODE_EMA,PRICE_CLOSE,0); M4=iMA(NULL,0,MA1,0,MODE_EMA,PRICE_CLOSE,1); M5=iMA(NULL,0,MA2,0,MODE_EMA,PRICE_CLOSE,1); M6=iMA(NULL,0,MA3,0,MODE_EMA,PRICE_CLOSE,1); rsi=iRSI(NULL,0,RSI,PRICE_CLOSE,0); adx=iADX(NULL,0,ADX,PRICE_CLOSE,MODE_MAIN,0); adx1=iADX(NULL,0,ADX,PRICE_CLOSE,MODE_MAIN,0); adx2=iADX(NULL,0,ADX,PRICE_CLOSE,MODE_MAIN,1); adx3=iADX(NULL,0,MINUSDI,PRICE_CLOSE,MODE_MINUSDI,0); adx4=iADX(NULL,0,PLUSDI,PRICE_CLOSE,MODE_PLUSDI,0); // if(Bars<100){ Print("bars less than 100"); return(0); } if(TakeProfit<10){ Print("TakeProfit less than 10"); return(0); } if(StopLoss<10){ Print("StopLoss less than 10"); return(0); } if(AccountFreeMargin()<(500*Lots)){ Print("Нету свободных денег. Free Margin = ", AccountFreeMargin()); return(0); } tiket=OrdersTotal(); { if(tiket>1)return(0); } if((M1<M2)&&(M2<M3)&&(M4<M5)&&(M5<M6)&&(adx>50)&&(adx1<adx2)&&(adx3<adx4)&&(rsi>50)) {tiket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Продажа",Red); return(0); } if((M1>M2)&&(M2>M3)&&(M4>M5)&&(M5>M6)&&(adx>50)&&(adx1>adx2)&&(adx3>adx4)&&(rsi<50)) {tiket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Покупка",Green); return(0); }} //
 
Спасибо с циклами разобрался ,ещё вопрос а возможно задать угол наклона в градусах например средняя даёт сигнал при определённом наклоне или больше него.
 
L -разница между значениями средней в двух разных барах; m - разница между барами; f=arctg(m/l) - искомый угол.
 
А можно в виде куска кода как это выглядит
 
Извените за глупые вапросы но как проще реализавать в коде покупку на белой свече а продажу на чёрной
 
demon:
Извените за глупые вапросы но как проще реализавать в коде покупку на белой свече а продажу на чёрной
вродебы придумал как это реализовать но он вообще торговать отказался господа гуру ткните в ошибку
//+------------------------------------------------------------------+ //| RSI MA ADX.mq4 | //| Volohov Igor Vasilevich | //| voli1978@yahoo.com | //+------------------------------------------------------------------+ #property copyright "Volohov Igor Vasilevich" #property link "voli1978@yahoo.com" extern int StopLoss=20; extern int TakeProfit=50; extern double Lots=0.1; extern int MA1=6; extern int MA2=12; extern int MA3=24; extern int RSI=14; extern int ADX=14; int start() { double ma1,ma2,ma3,ma4,ma5,ma6,rsi,rsi1,rsi2,adx,plusdi,minusdi, max1,max2,max3,min1,min2,min3; int total; // HideTestIndicators(true); ma1=iMA(NULL,0,MA1,0,MODE_SMA,PRICE_CLOSE,1); ma2=iMA(NULL,0,MA2,0,MODE_SMA,PRICE_CLOSE,1); ma3=iMA(NULL,0,MA3,0,MODE_SMA,PRICE_CLOSE,1); ma4=iMA(NULL,0,MA1,0,MODE_SMA,PRICE_CLOSE,1); ma5=iMA(NULL,0,MA2,0,MODE_SMA,PRICE_CLOSE,1); ma6=iMA(NULL,0,MA3,0,MODE_SMA,PRICE_CLOSE,1); rsi=iRSI(NULL,0,RSI,PRICE_CLOSE,0); rsi1=iRSI(NULL,0,RSI,PRICE_CLOSE,1); rsi2=iRSI(NULL,0,RSI,PRICE_CLOSE,2); adx=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,0); plusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,0); minusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,0); min1=iClose(NULL,PERIOD_D1,0); min2=iClose(NULL,PERIOD_H4,0); min3=iClose(NULL,PERIOD_H1,0); max1=iOpen(NULL,PERIOD_D1,0); max2=iOpen(NULL,PERIOD_H4,0); max3=iOpen(NULL,PERIOD_H1,0); // double sell=((ma1<ma2)&&(ma2<ma3)&&(ma3<ma4)&&(ma4<ma4)&&(rsi>50)&&(rsi1<rsi2) &&(adx>35)&&(plusdi<minusdi)&&(min1<max1)&&(min2<max2)&&(min3<max3)); double buy=((ma1>ma2)&&(ma2>ma3)&&(ma3>ma4)&&(ma4>ma4)&&(rsi<50)&&(rsi1>rsi2) &&(adx>35)&&(plusdi>minusdi)&&(min1>max1)&&(min2>max2)&&(min3>max3)); if (Bars<50) { Print("Мало данных!!!"); return(0); } if(TakeProfit<10) { Print("TakeProfit маленький ставь больше 10 Маловато:)"); return(0); // Маленький профит } total=OrdersTotal(); if(total<1) { if(AccountFreeMargin()<(1000*Lots)) { Print("Недостаточно денег. Free Margin = ", AccountFreeMargin()); return(0); } for(int i=OrdersTotal();i>0;i++){ if(i>1){ return(0); } } if (sell==true) { OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Продажа",Red); return(0); } if (buy==true) { OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Покупка",Red); return(0); } } }
 
А если гуру из Дзена?

1. перменныые селл и бай объявии как бул.
2. Приравняй одну из них к тру и проверь торгующий блок. Затем вторую.
3. Закомментируй условия и начни их добавлять по-одному и смотри как советник будет работать. Заметишь на каком он перестал торговать, дальше догадаешься...

Однако:
1. получается у тебя - ma1=ma4, а проверяешь ma1<ma2)&&(ma2<ma3)&&(ma3<ma4.
2. может ли быть ma4<ma4..... и тд. и тп.
 
demon:
Извените за глупые вапросы но как проще реализавать в коде покупку на белой свече а продажу на чёрной
О какой именно свече идет речь? О текущей или предыдущей? Я бы сделал примерно так
if(iOpen("EURUSD",PERIOD_M30,1)-iClose("EURUSD",PERIOD_M30,1) > 3*Point ) { // Черная свеча - Продажа } if(iClose("EURUSD",PERIOD_M30,1)- iOpen("EURUSD",PERIOD_M30,1) > 3*Point ) { // Белая свеча - Покупка }