//+------------------------------------------------------------------+
//| FT_Fractal_MA.mq4 |
//| FORTRADER.RU, Юрий,
[email protected] |
//|
http://FORTRADER.RU, Фракталы + Средние |
//+------------------------------------------------------------------+
#property copyright "FORTRADER.RU, Юрий,
[email protected]"
#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);
}