//+------------------------------------------------------------------+
//| DT-ZigZag-Lauer EA.mq4 |
//| Copyright © 2008, TradingSytemForex |
//|
Trading System Forex - Powered by vBulletin |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, TradingSytemForex"
#property link "http://www.tradingsystemforex.com"
#define OrSt "DT-ZigZag-Lauer EA"
extern string IS="---------------- Indicator Settings";
extern int depth=5;
extern int GrossPeriod=240;
extern string LM="---------------- Lot Management";
extern double Lots=0.1;
extern bool MM=false; //money management
extern double Risk=10; //risk in percentage
extern string TSTB="---------------- TP SL TS BE";
bool RealSL_Enabled=false;
int RealSL=5; //stop loss under 15 pîps
bool RealTP_Enabled=false;
int RealTP=10; //take profit under 10 pîps
extern int SL=0; //stop loss
extern int TP=0; //take profit
extern int TS=0; //trailing stop
extern int TS_Step=1; //trailing stop step
extern int BE=0; //breakeven
extern string EXT="---------------- Extras";
extern bool Reverse=false;
extern bool Add_Positions=true; //positions cumulated
extern int MaxOrders=100; //maximum number of orders
extern int Magic=0;
int Slip=3;static int TL=0;double MML=0;
// expert start function
int start(){int j=0,limit=1;double BV=0,SV=0;BV=0;SV=0;double DTZ1,DTZ2;
if(CntO(OP_BUY,Magic)>0) TL=1;if(CntO(OP_SELL,Magic)>0) TL=-1;for(int i=1;i<=limit;i++){
DTZ1=iCustom(NULL,0,"DT-ZigZag-Lauer",depth,GrossPeriod,0,i);
DTZ2=iCustom(NULL,0,"DT-ZigZag-Lauer",depth,GrossPeriod,1,i);
if(DTZ1>0){if(Reverse) SV=1; else BV=1; break;}
if(DTZ2>0){if(Reverse) BV=1; else SV=1; break;}}
// expert money management
if(MM){if(Risk<0.1 || Risk>100) {Comment("Invalid Risk Value."); return(0);}
else {MML=MathFloor((AccountFreeMargin() *AccountLeverage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo( Symbol(),MODE_MINLOT )))*MarketInfo(Symbol(),MODE_MINLOT );}}
if(MM==false){MML=Lots;}
// expert init positions
int cnt=0,OP=0,OS=0,OB=0,CS=0,CB=0;OP=0;for(cnt=0; cnt<OrdersTotal();cnt++) {OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if((OrderType()==OP_SELL || OrderType()==OP_BUY) && OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)) OP=OP+1;}
if(OP>=1){OS=0; OB=0;}OB=0;OS=0;CB=0;CS=0;
// expert conditions to open position
if(SV>0){OS=1;OB=0;}if(BV>0){OB=1;OS=0;}
// expert conditions to close position
if((SV>0) || (RealSL_Enabled && (OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled && (Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}
if((BV>0) || (RealSL_Enabled && (Ask-OrderOpenPrice())/Point>=RealSL)||(RealTP_Enabled && (OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}
for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt ,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)){if (CB==1){OrderClose(OrderTicket(),OrderLots(),Bid,S lip,Red); return(0);}}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)){
if(CS==1){OrderClose(OrderTicket(),OrderLots(),Ask ,Slip,Red);return(0);}}}double SLI=0,TPI=0;int TK=0;
// expert open position value
if((AddP() && Add_Positions && OP<=MaxOrders) || (OP==0 && !Add_Positions)) {
if(OS==1){if (TP==0) TPI=0; else TPI=Bid-TP*Point;if (SL==0) SLI=0; else SLI=Bid+SL*Point;TK=OrderSend(Symbol(),OP_SELL,MML ,Bid,Slip,SLI,TPI,OrSt,Magic,0,Red);OS=0;return(0) ;}
if(OB==1){if(TP==0) TPI=0; else TPI=Ask+TP*Point;if(SL==0) SLI=0; else SLI=Ask-SL*Point;TK=OrderSend(Symbol(),OP_BUY,MML,Ask,Slip ,SLI,TPI,OrSt,Magic,0,Lime);OB=0; return(0);}}
for(j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELE CT_BY_POS, MODE_TRADES)){if (OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)) {TrP();}}}return(0);}
// expert number of orders
int CntO(int Type,int Magic){int _CntO;_CntO=0;
for(int j=0;j<OrdersTotal();j++){OrderSelect(j, SELECT_BY_POS, MODE_TRADES);if(OrderSymbol()==Symbol()) {if((OrderType()==Type && (OrderMagicNumber()==Magic) || Magic==0)) _CntO++;}}return(_CntO);}
// expert trailing stop
void TrP(){double pb,pa,pp;pp=MarketInfo(OrderSymbol(),MODE_POINT);i f (OrderType()==OP_BUY){pb=MarketInfo(OrderSymbol(), MODE_BID);
//expert breakeven
if(BE>0){if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp); }}}
if(TS>0){if((pb-OrderOpenPrice())>TS*pp){if(OrderStopLoss()<pb-(TS+TS_Step-1)*pp){ModSL(pb-TS*pp);return;}}}}
if(OrderType()==OP_SELL){pa=MarketInfo(OrderSymbol (),MODE_ASK);if(BE>0){if((OrderOpenPrice()-pa)>BE*pp){if((OrderOpenPrice()-OrderStopLoss())<0){ModSL(OrderOpenPrice()-0*pp);}}}
if (TS>0){if (OrderOpenPrice()-pa>TS*pp){if (OrderStopLoss()>pa+(TS+TS_Step-1)*pp || OrderStopLoss()==0){ModSL(pa+TS*pp);return;}}}}}
//expert stoploss
void ModSL(double ldSL){bool fm;fm=OrderModify(OrderTicket(),OrderOpenPrice(),l dSL,OrderTakeProfit(),0,CLR_NONE);}
//expert add positions function
bool AddP(){int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_B Y_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0)) {
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();}}
if(_num==0) return(true);if(_num>0 && ((Time[0]-_ot))>0) return(true);else return(false);}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2-
//+------------------------------------------------------------------+
//| xpMA DT ZigZag EA.mq4 |
//| Copyright © 2008, TradingSytemForex |
//|
Trading System Forex - Powered by vBulletin |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, TradingSytemForex"
#property link "http://www.tradingsystemforex.com"
#define OrSt "xpMA DT ZigZag EA"
extern string DTZZ="---------------- DT ZigZag";
extern int depth=5;
extern int GrossPeriod=240;
extern string ZZ="---------------- ZigZag";
extern int barn=300;
extern int Length=6;
extern string XP="---------------- XPMA";
extern int MA_Period=34;
extern int MA_Type=8;
extern int MA_Applied=PRICE_CLOSE;
extern double T3MA_VolumeFactor=0.8;
extern double JMA_Phase=0;
extern string LM="---------------- Lot Management";
extern double Lots=0.1;
extern bool MM=false; //money management
extern double Risk=10; //risk in percentage
extern string TSTB="---------------- TP SL TS BE";
bool RealSL_Enabled=false;
int RealSL=5; //stop loss under 15 pîps
bool RealTP_Enabled=false;
int RealTP=10; //take profit under 10 pîps
extern int SL=0; //stop loss
extern int TP=0; //take profit
extern int TS=0; //trailing stop
extern int TS_Step=1; //trailing stop step
extern int BE=0; //breakeven
extern string EXT="---------------- Extras";
extern bool Reverse=false;
extern bool Add_Positions=true; //positions cumulated
extern int MaxOrders=100; //maximum number of orders
extern int Magic=0;
int Slip=3;static int TL=0;double MML=0;
int zigzag=0;
// expert start function
int start(){int j=0,limit=1;double BV=0,SV=0;BV=0;SV=0;double XPM1,XPM2,XPM3,XPM4,XPM5,XPM6,DTZ1,DTZ2;
if(CntO(OP_BUY,Magic)>0) TL=1;if(CntO(OP_SELL,Magic)>0) TL=-1;for(int i=1;i<=limit;i++){
zigzag=czig(0);
DTZ1=iCustom(NULL,0,"DT-ZigZag-Lauer",depth,GrossPeriod,0,i);
DTZ2=iCustom(NULL,0,"DT-ZigZag-Lauer",depth,GrossPeriod,1,i);
XPM1=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,1,i+1); //down
XPM2=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,1,i);
XPM3=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,0,i+1); //mid
XPM4=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,0,i);
XPM5=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,2,i+1); //up
XPM6=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,2,i);
if(DTZ1>0 && zigzag>0 && XPM5!=EMPTY_VALUE && XPM6!=EMPTY_VALUE && XPM3!=XPM6){if(Reverse) SV=1; else BV=1; break;}
if(DTZ2>0 && zigzag<0 && XPM1!=EMPTY_VALUE && XPM2!=EMPTY_VALUE && XPM3!=XPM2){if(Reverse) BV=1; else SV=1; break;}}
// expert money management
if(MM){if(Risk<0.1 || Risk>100) {Comment("Invalid Risk Value."); return(0);}
else {MML=MathFloor((AccountFreeMargin() *AccountLeverage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo( Symbol(),MODE_MINLOT )))*MarketInfo(Symbol(),MODE_MINLOT );}}
if(MM==false){MML=Lots;}
// expert init positions
int cnt=0,OP=0,OS=0,OB=0,CS=0,CB=0;OP=0;for(cnt=0; cnt<OrdersTotal();cnt++) {OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if((OrderType()==OP_SELL || OrderType()==OP_BUY) && OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)) OP=OP+1;}
if(OP>=1){OS=0; OB=0;}OB=0;OS=0;CB=0;CS=0;
// expert conditions to open position
if(SV>0){OS=1;OB=0;}if(BV>0){OB=1;OS=0;}
// expert conditions to close position
if((SV>0) || (RealSL_Enabled && (OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled && (Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}
if((BV>0) || (RealSL_Enabled && (Ask-OrderOpenPrice())/Point>=RealSL)||(RealTP_Enabled && (OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}
for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt ,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)){if (CB==1){OrderClose(OrderTicket(),OrderLots(),Bid,S lip,Red); return(0);}}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)){
if(CS==1){OrderClose(OrderTicket(),OrderLots(),Ask ,Slip,Red);return(0);}}}double SLI=0,TPI=0;int TK=0;
// expert open position value
if((AddP() && Add_Positions && OP<=MaxOrders) || (OP==0 && !Add_Positions)) {
if(OS==1){if (TP==0) TPI=0; else TPI=Bid-TP*Point;if (SL==0) SLI=0; else SLI=Bid+SL*Point;TK=OrderSend(Symbol(),OP_SELL,MML ,Bid,Slip,SLI,TPI,OrSt,Magic,0,Red);OS=0;return(0) ;}
if(OB==1){if(TP==0) TPI=0; else TPI=Ask+TP*Point;if(SL==0) SLI=0; else SLI=Ask-SL*Point;TK=OrderSend(Symbol(),OP_BUY,MML,Ask,Slip ,SLI,TPI,OrSt,Magic,0,Lime);OB=0; return(0);}}
for(j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELE CT_BY_POS, MODE_TRADES)){if (OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)) {TrP();}}}return(0);}
// expert number of orders
int CntO(int Type,int Magic){int _CntO;_CntO=0;
for(int j=0;j<OrdersTotal();j++){OrderSelect(j, SELECT_BY_POS, MODE_TRADES);if(OrderSymbol()==Symbol()) {if((OrderType()==Type && (OrderMagicNumber()==Magic) || Magic==0)) _CntO++;}}return(_CntO);}
// expert trailing stop
void TrP(){double pb,pa,pp;pp=MarketInfo(OrderSymbol(),MODE_POINT);i f (OrderType()==OP_BUY){pb=MarketInfo(OrderSymbol(), MODE_BID);
//expert breakeven
if(BE>0){if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp); }}}
if(TS>0){if((pb-OrderOpenPrice())>TS*pp){if(OrderStopLoss()<pb-(TS+TS_Step-1)*pp){ModSL(pb-TS*pp);return;}}}}
if(OrderType()==OP_SELL){pa=MarketInfo(OrderSymbol (),MODE_ASK);if(BE>0){if((OrderOpenPrice()-pa)>BE*pp){if((OrderOpenPrice()-OrderStopLoss())<0){ModSL(OrderOpenPrice()-0*pp);}}}
if (TS>0){if (OrderOpenPrice()-pa>TS*pp){if (OrderStopLoss()>pa+(TS+TS_Step-1)*pp || OrderStopLoss()==0){ModSL(pa+TS*pp);return;}}}}}
//expert stoploss
void ModSL(double ldSL){bool fm;fm=OrderModify(OrderTicket(),OrderOpenPrice(),l dSL,OrderTakeProfit(),0,CLR_NONE);}
//expert add positions function
bool AddP(){int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_B Y_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0)) {
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();}}
if(_num==0) return(true);if(_num>0 && ((Time[0]-_ot))>0) return(true);else return(false);}
//zigzag function
int czig(int timeframe) {int res=0;int j=0;int limit=500;double zig=0;
for (int i=0; i<=limit; i++) {double ZZ1=iCustom(NULL,timeframe,"High_Low v2",barn,Length,0,i+1);double ZZ2=iCustom(NULL,timeframe,"High_Low v2",barn,Length,0,i);if (ZZ2>0) {j=i; zig=ZZ2; break;}}
for (i=j+1; i<=limit; i++) {ZZ1=iCustom(NULL,timeframe,"High_Low v2",barn,Length,0,i+1);ZZ2=iCustom(NULL,timefram e, "High_Low v2",barn,Length,0,i);if (ZZ2>0) {break;}}
if (zig>ZZ2) {res=-1;}if (zig<ZZ2) {res=1;}return(res);}
-3
//+------------------------------------------------------------------+
//| xpMA ZigZag EA.mq4 |
//| Copyright © 2008, TradingSytemForex |
//|
Trading System Forex - Powered by vBulletin |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, TradingSytemForex"
#property link "http://www.tradingsystemforex.com"
#define OrSt "xpMA ZigZag EA"
extern string ZZ="---------------- ZigZag";
extern int barn=300;
extern int Length=6;
extern string XP="---------------- XPMA";
extern int MA_Period=34;
extern int MA_Type=8;
extern int MA_Applied=PRICE_CLOSE;
extern double T3MA_VolumeFactor=0.8;
extern double JMA_Phase=0;
extern string LM="---------------- Lot Management";
extern double Lots=0.1;
extern bool MM=false; //money management
extern double Risk=10; //risk in percentage
extern string TSTB="---------------- TP SL TS BE";
bool RealSL_Enabled=false;
int RealSL=5; //stop loss under 15 pîps
bool RealTP_Enabled=false;
int RealTP=10; //take profit under 10 pîps
extern int SL=0; //stop loss
extern int TP=0; //take profit
extern int TS=0; //trailing stop
extern int TS_Step=1; //trailing stop step
extern int BE=0; //breakeven
extern string EXT="---------------- Extras";
extern bool Reverse=false;
extern bool Add_Positions=true; //positions cumulated
extern int MaxOrders=100; //maximum number of orders
extern int Magic=0;
int Slip=3;static int TL=0;double MML=0;
int zigzag=0;
// expert start function
int start(){int j=0,limit=1;double BV=0,SV=0;BV=0;SV=0;double XPM1,XPM2,XPM3,XPM4,XPM5,XPM6;
if(CntO(OP_BUY,Magic)>0) TL=1;if(CntO(OP_SELL,Magic)>0) TL=-1;for(int i=1;i<=limit;i++){
zigzag=czig(0);
XPM1=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,1,i+1); //down
XPM2=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,1,i);
XPM3=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,0,i+1); //mid
XPM4=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,0,i);
XPM5=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,2,i+1); //up
XPM6=iCustom(NULL,0,"xpMA_v2SATL",MA_Period,MA_Typ e,MA_Applied,T3MA_VolumeFactor,JMA_Phase,2,i);
if(zigzag>0 && XPM5!=EMPTY_VALUE && XPM6!=EMPTY_VALUE && XPM3!=XPM6){if(Reverse) SV=1; else BV=1; break;}
if(zigzag<0 && XPM1!=EMPTY_VALUE && XPM2!=EMPTY_VALUE && XPM3!=XPM2){if(Reverse) BV=1; else SV=1; break;}}
// expert money management
if(MM){if(Risk<0.1 || Risk>100) {Comment("Invalid Risk Value."); return(0);}
else {MML=MathFloor((AccountFreeMargin() *AccountLeverage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo( Symbol(),MODE_MINLOT )))*MarketInfo(Symbol(),MODE_MINLOT );}}
if(MM==false){MML=Lots;}
// expert init positions
int cnt=0,OP=0,OS=0,OB=0,CS=0,CB=0;OP=0;for(cnt=0; cnt<OrdersTotal();cnt++) {OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if((OrderType()==OP_SELL || OrderType()==OP_BUY) && OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)) OP=OP+1;}
if(OP>=1){OS=0; OB=0;}OB=0;OS=0;CB=0;CS=0;
// expert conditions to open position
if(SV>0){OS=1;OB=0;}if(BV>0){OB=1;OS=0;}
// expert conditions to close position
if((SV>0) || (RealSL_Enabled && (OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled && (Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}
if((BV>0) || (RealSL_Enabled && (Ask-OrderOpenPrice())/Point>=RealSL)||(RealTP_Enabled && (OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}
for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt ,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)){if (CB==1){OrderClose(OrderTicket(),OrderLots(),Bid,S lip,Red); return(0);}}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)){
if(CS==1){OrderClose(OrderTicket(),OrderLots(),Ask ,Slip,Red);return(0);}}}double SLI=0,TPI=0;int TK=0;
// expert open position value
if((AddP() && Add_Positions && OP<=MaxOrders) || (OP==0 && !Add_Positions)) {
if(OS==1){if (TP==0) TPI=0; else TPI=Bid-TP*Point;if (SL==0) SLI=0; else SLI=Bid+SL*Point;TK=OrderSend(Symbol(),OP_SELL,MML ,Bid,Slip,SLI,TPI,OrSt,Magic,0,Red);OS=0;return(0) ;}
if(OB==1){if(TP==0) TPI=0; else TPI=Ask+TP*Point;if(SL==0) SLI=0; else SLI=Ask-SL*Point;TK=OrderSend(Symbol(),OP_BUY,MML,Ask,Slip ,SLI,TPI,OrSt,Magic,0,Lime);OB=0; return(0);}}
for(j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELE CT_BY_POS, MODE_TRADES)){if (OrderSymbol()==Symbol() && ((OrderMagicNumber()==Magic) || Magic==0)) {TrP();}}}return(0);}
// expert number of orders
int CntO(int Type,int Magic){int _CntO;_CntO=0;
for(int j=0;j<OrdersTotal();j++){OrderSelect(j, SELECT_BY_POS, MODE_TRADES);if(OrderSymbol()==Symbol()) {if((OrderType()==Type && (OrderMagicNumber()==Magic) || Magic==0)) _CntO++;}}return(_CntO);}
// expert trailing stop
void TrP(){double pb,pa,pp;pp=MarketInfo(OrderSymbol(),MODE_POINT);i f (OrderType()==OP_BUY){pb=MarketInfo(OrderSymbol(), MODE_BID);
//expert breakeven
if(BE>0){if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp); }}}
if(TS>0){if((pb-OrderOpenPrice())>TS*pp){if(OrderStopLoss()<pb-(TS+TS_Step-1)*pp){ModSL(pb-TS*pp);return;}}}}
if(OrderType()==OP_SELL){pa=MarketInfo(OrderSymbol (),MODE_ASK);if(BE>0){if((OrderOpenPrice()-pa)>BE*pp){if((OrderOpenPrice()-OrderStopLoss())<0){ModSL(OrderOpenPrice()-0*pp);}}}
if (TS>0){if (OrderOpenPrice()-pa>TS*pp){if (OrderStopLoss()>pa+(TS+TS_Step-1)*pp || OrderStopLoss()==0){ModSL(pa+TS*pp);return;}}}}}
//expert stoploss
void ModSL(double ldSL){bool fm;fm=OrderModify(OrderTicket(),OrderOpenPrice(),l dSL,OrderTakeProfit(),0,CLR_NONE);}
//expert add positions function
bool AddP(){int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_B Y_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0)) {
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();}}
if(_num==0) return(true);if(_num>0 && ((Time[0]-_ot))>0) return(true);else return(false);}
//zigzag function
int czig(int timeframe) {int res=0;int j=0;int limit=500;double zig=0;
for (int i=0; i<=limit; i++) {double ZZ1=iCustom(NULL,timeframe,"High_Low v2",barn,Length,0,i+1);double ZZ2=iCustom(NULL,timeframe,"High_Low v2",barn,Length,0,i);if (ZZ2>0) {j=i; zig=ZZ2; break;}}
for (i=j+1; i<=limit; i++) {ZZ1=iCustom(NULL,timeframe,"High_Low v2",barn,Length,0,i+1);ZZ2=iCustom(NULL,timeframe, "High_Low v2",barn,Length,0,i);if (ZZ2>0) {break;}}
if (zig>ZZ2) {res=-1;}if (zig<ZZ2) {res=1;}return(res);}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//| Copyright © 2008, MetaQuotes Software Corp. |
ZigZag=iCustom(NULL,0,"ZigZag", ExtDepth,ExtDeviation,ExtBackstep, 0,candle);
Lot=MathFloor((AccountFreeMargin() *AccountLeverage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(), MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_MINLOT )))*MarketInfo(Symbol(),MODE_MINLOT );
OrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, Ask - SL * Point, Ask + TP * Point, "ZigZag", MAGICMA, 0, Blue);
OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, Bid + SL * Point,Bid - TP * Point, "ZigZag", MAGICMA, 0, Red);