//+------------------------------------------------------------------+ //| e-3Stoch.mq4 | //| Êèì Èãîðü Â. aka KimIV | //| http://www.kimiv.ru | //| | //| 26.11.2005 Ñîâåòíèê íà äâóõ ñòîõàñòèêàõ. | //+------------------------------------------------------------------+ #property copyright "Êèì Èãîðü Â. aka KimIV" #property link "http://www.kimiv.ru" #define MAGIC 20051126 //------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà -------------------------------- extern string _Parameters_Trade = "----- Ïàðàìåòðû òîðãîâëè"; extern double Lots = 0.1; // Ðàçìåð òîðãóåìîãî ëîòà extern int StopLoss = 10; // Ðàçìåð ôèêñèðîâàííîãî ñòîïà extern int TakeProfit = 5; // Ðàçìåð ôèêñèðîâàííîãî òýéêà extern int Slippage = 3; // Ïðîñêàëüçûâàíèå öåíû extern string _Parameters_Expert = "----- Ïàðàìåòðû ñîâåòíèêà"; extern color clOpenBuy = LightBlue; // Öâåò îòêðûòèÿ ïîêóïêè extern color clOpenSell = LightCoral; // Öâåò îòêðûòèÿ ïðîäàæè extern color clModifyBuy = Aqua; // Öâåò ìîäèôèêàöèè ïîêóïêè extern color clModifySell = Tomato; // Öâåò ìîäèôèêàöèè ïðîäàæè extern color clCloseBuy = Blue; // Öâåò çàêðûòèÿ ïîêóïêè extern color clCloseSell = Red; // Öâåò çàêðûòèÿ ïðîäàæè //---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà ------------------------------- void deinit() { Comment(""); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() { if (Volume[0]<2) OpenPosition(); } //+------------------------------------------------------------------+ //| Îòêðûòèå ïîçèöèè | //+------------------------------------------------------------------+ void OpenPosition() { double ldStop=0, ldTake=0; int bs=GetSignal(); if (!ExistPosition()) { if (bs>0) { if (StopLoss!=0) ldStop=Ask-StopLoss*Point; if (TakeProfit!=0) ldTake=Ask+TakeProfit*Point; SetOrder(OP_BUY, Ask, ldStop, ldTake); } if (bs<0) { if (StopLoss!=0) ldStop=Bid+StopLoss*Point; if (TakeProfit!=0) ldTake=Bid-TakeProfit*Point; SetOrder(OP_SELL, Bid, ldStop, ldTake); } } } //+------------------------------------------------------------------+ //| Âîçâðàùàåò òîðãîâûé ñèãíàë | //+------------------------------------------------------------------+ int GetSignal() { double st241=iStochastic(NULL,PERIOD_H4,5,3,3,MODE_EMA,0,MODE_MAIN,1); double st301=iStochastic(NULL,PERIOD_M30,5,3,3,MODE_EMA,0,MODE_MAIN,1); double st052=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_EMA,0,MODE_MAIN,2); double st051=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_EMA,0,MODE_MAIN,1); int bs=0; if (st052<20 && st051>20 && st301<20 && st241<20) bs=1; if (st052>80 && st051<80 && st301>80 && st241>80) bs=-1; return(bs); } //+------------------------------------------------------------------+ //| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèè ïî íîìåðó | //+------------------------------------------------------------------+ bool ExistPosition() { bool Exist=False; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=True; break; } } } } return(Exist); } //+------------------------------------------------------------------+ //| Óñòàíîâêà îðäåðà | //| Ïàðàìåòðû: | //| op - îïåðàöèÿ | //| pp - öåíà | //| ldStop - óðîâåíü ñòîï | //| ldTake - óðîâåíü òåéê | //+------------------------------------------------------------------+ void SetOrder(int op, double pp, double ldStop, double ldTake) { color clOpen; if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell; OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,"",MAGIC,0,clOpen); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains tick volumes of each bar
Indicator Curves created:
Indicators Used:
Stochastic oscillator
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
Other Features: