Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
FT_FOZZI_RSIuMA4BB
//+------------------------------------------------------------------+
//| FT_FOZZI_RSI+MA+BB.mq4.mq4
//| Copyright © 2009, FORTRADER.RU. Ñîâåòíèê ïî ñòðàòåãèè FOZZI.
//| http://www.fortrader.ru | http://forexsystems.ru/sistemy-ozhidayuschie-realizacii/10910-foezzi.html | Èññëåäîâàíèå äëÿ 55 âûïóñêà æóðíàëà FORTRADER.RU
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, FORTRADER.RU. Ñîâåòíèê ïî ñòðàòåãèè FOZZI."
#property link "http://www.fortrader.ru | http://forexsystems.ru/sistemy-ozhidayuschie-realizacii/10910-foezzi.html | Èññëåäîâàíèå äëÿ 55 âûïóñêà æóðíàëà FORTRADER.RU"
extern int maper=8;
extern int rsiperiod=8;
extern int bbperiod=20;
extern int bbotcl=2;
extern int SL =5;
extern int TP =0;
extern int MG=564651;
extern double Lots=0.1;
extern int mn=1;
extern int bbur=45;
extern int trailingenable=1;
int f1,f2;
double opb,ops;
int start()
{int i; double op,sl,tp;int err1;
if(trailingenable==1){TrailingStop();}
double rsi[101];
double irsi;
ArraySetAsSeries(rsi,true);
for( i=100; i>=0; i--)
{
rsi[i]=iRSI(NULL,0,rsiperiod,PRICE_CLOSE,i);
if(i==1){irsi=rsi[i];}
}
double ma[101];
double ima;
ArraySetAsSeries(ma,true);
for( i=100; i>=0; i--)
{
ma[i]=iMAOnArray(rsi,0,maper,0,MODE_SMA,i);
if(i==1){ima=ma[i];}
}
double bbmain =iBandsOnArray(ma,0,bbperiod,bbotcl,0,MODE_MAIN,1);
double pma =iMAOnArray(rsi,0,maper,0,MODE_SMA,1);
double prsi =iRSI(NULL,0,rsiperiod,PRICE_CLOSE,1);
if(prsi>pma){f1=1;}
if(f1==1 && prsi<pma && pma>bbmain && ChPos(0)==0)
{f1=0;
_OrderClose(1);
op=Bid;if(SL>0){sl=MaximumMinimum(1,SL);}if(TP>0){tp=Bid-TP*Point*mn;}
opb=op;
err1=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"8 FORTRADER.RU",MG,0,Red);
if(err1<0){Print("OrderSend()- Îøèáêà OP_SELL. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
}
if(Bid<(opb-bbur*Point*mn)){_StopToBB(0);}
if(prsi<pma){f2=1;}
if(f2==1 && prsi>pma && pma<bbmain && ChPos(1)==0)
{f2=0;
_OrderClose(0);
op=Ask;if(SL>0){sl=MaximumMinimum(0,SL);}if(TP>0){tp=Ask+TP*Point*mn;}
ops=op;
err1=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"8 FORTRADER.RU",MG,0,Red);
if(err1<0){Print("OrderSend()- Îøèáêà OP_BUY. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
}
if(Ask>(ops+bbur*Point*mn)){_StopToBB(1);}
Print("bbmain "+bbmain+" pma "+pma+" prsi "+prsi);
return(0);
}
double _StopToBB(int type)
{
int err;
for(int i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MG && OrderStopLoss()<OrderOpenPrice())
{
err=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
if(err<0){Print("_StopToBB()- Îøèáêà OrderModify. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MG && OrderStopLoss()>OrderOpenPrice())
{
err=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
if(err<0){Print("_StopToBB()- Îøèáêà OrderModify. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
}
}
}
return(0);
}
//ïðîâåðÿåò åñòü ëè îòêðûòûå îðäåðà
int ChPos(int type)
{//ïîäðîáíîå îïèñàíèå: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100
int i;int col;
for( i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==MG){col=1;}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==MG){col=1;}
}
}
return(col);
}
double MaximumMinimum(int type,int barsearch)
{ int x=0,stop=0;double minmax;
if(type==0)
{
while(stop==0)
{
minmax =Low[iLowest(NULL,0,MODE_LOW,barsearch,x)];
if(minmax>Low[iLowest(NULL,0,MODE_LOW,barsearch,x+barsearch)])
{
minmax =Low[iLowest(NULL,0,MODE_LOW,barsearch,x+barsearch)];
x=x+barsearch;
}
else {stop=1;return(minmax);}
}//while(stop
}//if(type
if(type==1)
{
while(stop==0)
{
minmax =High[iHighest(NULL,0,MODE_HIGH,barsearch,x)];
if(minmax<High[iHighest(NULL,0,MODE_HIGH,barsearch,x+barsearch)])
{
minmax =High[iHighest(NULL,0,MODE_HIGH,barsearch,x+barsearch)];
x=x+barsearch;
}
else{stop=1;return(minmax);}
}// while(sto
}//if(type
return(0);
}
extern int TrailingStop=25;
extern int TrailingStep=5;
int TrailingStop()
{int i;bool err;
for( i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(TrailingStop>0 && OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if(Bid-OrderOpenPrice()>=TrailingStop*Point*mn && TrailingStop>0 && (Bid-Point*TrailingStop*mn)>OrderStopLoss())
{
if(((Bid-Point*TrailingStop*mn)-OrderStopLoss())>=TrailingStep*Point*mn)
{
Print("ÒÐÅÉËÈÌ");
err=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop*mn,OrderTakeProfit(),0,Green);
if(err==false){return(-1);}
GlobalVariableSet(DoubleToStr(OrderTicket(),0),Bid);
}//if(Bid>=OrderStopLoss()
}//if(Bid-OrderOpenPrice()
}//if(BBUSize>0
}//if(OrderSelect(i
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() )
{
if(OrderOpenPrice()-Ask>=TrailingStop*Point*mn && TrailingStop>0 && OrderStopLoss()>(Ask+TrailingStop*Point*mn))
{
if((OrderStopLoss()-(Ask+TrailingStop*Point*mn))>TrailingStep*Point*mn)
{
Print("ÒÐÅÉËÈÌ");
err=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point*mn,OrderTakeProfit(),0,Green);
if(err==false){return(-1);}
}//if(Ask<=OrderStopLoss()
}//if(OrderOpenPrice()
}//if(BBUSize>0
}// if(OrderSelect
}// for( i=1;
return(0);
}
//Çàêðûâàåò ïîçèöþ ïî òèïó
int _OrderClose(int type)
{//http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=99
int err;
for(int i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MG)
{
err=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
if(err<0){Print("OrderClose()- Îøèáêà çàêðûòèÿ OP_BUY. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MG)
{
err=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
if(err<0){Print("OrderClose()- Îøèáêà çàêðûòèÿ OP_SELL. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Ask "+Ask+" "+GetLastError());return(-1);}
}
}
}
return(0);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---