//+------------------------------------------------------------------+ //| FT_Fractal_MA.mq4 | //| FORTRADER.RU, Þðèé, ftyuriy@gmail.com | //| http://FORTRADER.RU, Ôðàêòàëû + Ñðåäíèå | //+------------------------------------------------------------------+ #property copyright "FORTRADER.RU, Þðèé, ftyuriy@gmail.com" #property link "http://FORTRADER.RU, Ôðàêòàëû + Ñðåäíèå" /*Ðàçðàáîòàíî äëÿ 49 âûïóñêà æóðíàëà FORTRADER.Ru. Ñèñòåìà ïî ôðàêòàëàì è ñðåäíåé. Îò÷åòû: http://finfile.ru/index.php/files/get/6qQW8tgENy/fracralma1.zip , http://finfile.ru/index.php/files/get/_glRYiHkQi/fracralma2.zip Ñåò ôàéëû: http://finfile.ru/index.php/files/get/k2w2e92iCI/eurusd1h.zip Îáñóæäåíèå: http://fxnow.ru/group_discussion_view.php?group_id=49&grouptopic_id=266&grouppost_id=2667#post_2667 Àðõèâ æóðíàëà: http://www.fortrader.ru/arhiv.php 49 âûïóñê: http://www.fortrader.ru/ */ extern int lwmaper1=4; extern int lwmaper2=8; extern int lwmapertrend=40; extern int lwmatrendchart=1; extern int SL=150; extern int TP=150; extern int mn=1; int err; extern int MG=564651; extern double Lots=0.01; extern int maxpos=1; int bars; int start() { if(bars!=Bars) { bars=Bars; OpenPattern(); } return(0); } int okbuy,oksell; int OpenPattern() { double op,sl,tp; double upf=iFractals(NULL, 0, MODE_UPPER, 3); double dwf=iFractals(NULL, 0, MODE_LOWER, 3); double lwma1=iMA(NULL,0,lwmaper1,0,MODE_LWMA,PRICE_CLOSE,1); double lwma2=iMA(NULL,0,lwmaper2,0,MODE_LWMA,PRICE_CLOSE,1); double lwma1Last=iMA(NULL,0,lwmaper1,0,MODE_LWMA,PRICE_CLOSE,2); double lwma2Last=iMA(NULL,0,lwmaper2,0,MODE_LWMA,PRICE_CLOSE,2); double lwmatrend=iMA(NULL,GetPeriod(lwmatrendchart),lwmapertrend,0,MODE_LWMA,PRICE_CLOSE,1); double lwmatrendLast=iMA(NULL,0,GetPeriod(lwmatrendchart),0,MODE_LWMA,PRICE_CLOSE,2); if(upf!=0){oksell=1;okbuy=0;} if(dwf!=0){okbuy=1;oksell=0;} if(oksell==1 && lwma1<lwma2 && lwma1Last>lwma2Last && CountPos(0)<maxpos && lwmatrend>lwmatrendLast) { op=Bid;if(SL>0){sl=Bid+SL*Point*mn;}if(TP>0){tp=Bid-TP*Point*mn;} err=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red); if(err<0){Print("OrderSend()- Îøèáêà OP_SELL. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} oksell=0; } if(okbuy==1 && lwma1>lwma2 && lwma1Last<lwma2Last && CountPos(1)<maxpos && lwmatrend<lwmatrendLast) { op=Ask;if(SL>0){sl=Ask-SL*Point*mn;}if(TP>0){tp=Ask+TP*Point*mn;} err=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"6 FORTRADER.RU",MG,0,Red); if(err<0){Print("OrderSend()- Îøèáêà OP_BUY. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} okbuy=0; } return(err); } //Ïðîâåðÿåì êîëè÷åñâòî ïîçèöèé. int CountPos(int type) {//Îïèñàíèå http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66 int i; int col; int count=0 ; for( i=0; i<=OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MG){count++;} if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MG){count++;} } } return(count); } int GetPeriod(int GrafOpen) {int GrafOpenT; switch(GrafOpen) { case 1: GrafOpenT=1;break; case 2: GrafOpenT=5;break; case 3: GrafOpenT=15;break; case 4: GrafOpenT=30;break; case 5: GrafOpenT=60;break; case 6: GrafOpenT=240;break; case 7: GrafOpenT=1440;break; default: GrafOpenT=1;break; } return(GrafOpenT); }
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Fractals
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
It automatically opens orders when conditions are reached
Checks for the total of open orders
Other Features: