Einzelnen Beitrag anzeigen
  #10 (permalink)  
Alt 10.01.17
delipoint delipoint ist offline
Neues Mitglied
 
Registriert seit: Nov 2015
Beiträge: 3
delipoint befindet sich auf einem aufstrebenden Ast
Standard

hier zum evt.prüfen der EA:

extern string IS="---------------- Indicator Setting Heiken Ashi smoothed";
extern int MaMetod=2;
extern int MaPeriod=6;
extern int MaMetod2=3;
extern int MaPeriod2=2;
extern string LM="---------------- Money Management";
extern double Lots=0.01;
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 5 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=false; //positions cumulated
extern int MaxOrders=1; //maximum number of orders
extern int MagicNumber=09012017;


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 HA1,HA2;
if(CntO(OP_BUY,MagicNumber)>0)TL=1;if(CntO(OP_SELL ,MagicNumber)>0)TL=-1;for(int i=1;i<=limit;i++){

HA1=iCustom(Symbol(),0,"Heiken_Ashi_Smoothed",MaMe tod,MaPeriod,MaMetod2,MaPeriod2,2,i);
HA2=iCustom(Symbol(),0,"Heiken_Ashi_Smoothed",MaMe tod,MaPeriod,MaMetod2,MaPeriod2,3,i);

if(HA2>HA1){if(Reverse)SV=1;else BV=1;break;}
if(HA1>HA2){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()*AccountLev erage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo( Symbol(),MODE_MINLOT)))*MarketInfo(Symbol(),MODE_M INLOT);}}
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)&&Or derSymbol()==Symbol()&&((OrderMagicNumber()==Magic Number)||MagicNumber==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()==MagicNumber)||MagicNumber==0) ){if(CB==1){OrderClose(OrderTicket(),OrderLots(),B id,Slip,Red);return(0);}}
if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&& ((OrderMagicNumber()==MagicNumber)||MagicNumber==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,MagicNumber,0,Red);OS=0;ret urn(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,MagicNumber,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()==MagicNumber)||MagicNumber= =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_P OS,MODE_TRADES);if(OrderSymbol()==Symbol()){if((Or derType()==Type&&(OrderMagicNumber()==Magic)||Magi c==0))_CntO++;}}return(_CntO);}

//expert breakeven
void TrP(){double pb,pa,pp;pp=MarketInfo(OrderSymbol(),MODE_POINT);i f(OrderType()==OP_BUY){pb=MarketInfo(OrderSymbol() ,MODE_BID);
if(BE>0){if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp); }}}

// expert trailing stop
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&&((OrderMag icNumber()==MagicNumber)||MagicNumber==0)){
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();}}if(_num==0) return(true);if(_num>0 && ((Time[0]-_ot))>0) return(true);else return(false);}

// eine Order Script

int CheckOrder () {
for (int i = OrdersHistoryTotal () -1; i >=0; i--) {
if ( !OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderSymbol () == Symbol () && OrderMagicNumber ()== MagicNumber) {
if (OrderType () == 0 || OrderType () == 1) return(OrderType ());
}
}
return (-1);
}