/*
+--------+
|Divergence Trader -- v11 has no divergence. How 'bout that!
+--------+
*/
#property copyright " "
#property link ""
extern bool auto_close_order = false;
// user input
extern double Lots=0.1; // how many lots to trade at a time
extern int MA1_Period=50;
extern int MA2_Period=150;
extern int MA3_Period=10;
extern int MA4_Period=20;
int MA_Price = PRICE_OPEN;
int MA_Mode = MODE_SMA;
extern double ProfitMade=100; // how much money do you expect to make
extern double LossLimit=115; // how much loss can you tolorate
//extern int BasketProfit=10; // if equity reaches this level, close trades
//extern int BasketLoss=9999; // if equity reaches this negative level, close trades
extern int PLBreakEven=9999; // set break even when this many pips are made (999=off)
int Slippage=2; // how many pips of slippage can you tolorate
// naming and numbering
int MagicNumber = 200601182020; // allows multiple experts to trade on same account
string TradeComment = "哥的EA";
// Bar handling
datetime bartime=0; // used to determine when a bar has moved
int bartick=0; // number of times bars have moved
int objtick=0; // used to draw objects on the chart
int tickcount=0;
// Trade control
bool TradeAllowed=true; // used to manage trades
//+-------------+
//| Custom init |
//|-------------+
// Called ONCE when EA is added to chart or recompiled
int init()
{
int i;
string o;
//remove the old objects
for(i=0; i[B]= 0 && TimeHour(TimeCurrent()) =0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
OrdersPerSymbol++;
}
}
//+-----------------------------+
//| Insert your indicator here |
//| And set either BUYme or |
//| SELLme true to place orders |
//+-----------------------------+
// high and low of [1] and open of [0] either above or below the MA
maHI=High[1];
maLO=Low[1];
maOPEN=Open[0];
ma0=iMA(Symbol(),0,MA1_Period,0,MA_Mode,MA_Price,1);
ma1=iMA(Symbol(),0,MA2_Period,0,MA_Mode,MA_Price,1);
ma2=iMA(Symbol(),0,MA3_Period,0,MA_Mode,MA_Price,1);
ma3=iMA(Symbol(),0,MA4_Period,0,MA_Mode,MA_Price,1);
ma2_1=iMA(Symbol(),0,MA3_Period,0,MA_Mode,MA_Price,0);
ma2_2=iMA(Symbol(),0,MA3_Period,0,MA_Mode,MA_Price,2);
double kdj1 = iStochastic(Symbol(),0,10,5,5,MODE_SMA,1,MODE_MAIN,1);
double kdj2 = iStochastic(Symbol(),0,10,5,5,MODE_SMA,1,MODE_SIGNAL,1);
// double kdj11 = iStochastic(Symbol(),0,20,10,10,MODE_SMA,1,MODE_MAIN,1);
// double kdj21 = iStochastic(Symbol(),0,20,10,10,MODE_SMA,1,MODE_SIGNAL,1);
// if(kdj1>kdj2 && kdj11>kdj21)close_order(OP_SELL,1);
// if(kdj1 ma3)close_order(OP_SELL,0);
if(ma2 ma0 && maLO>ma0 && maOPEN>ma0
&& maHI>ma2 && maOPEN>ma2
&& maOPEN>ma1 && ma0>ma1
&& ma2 > ma3
&& ma2_1>ma2 && ma2>ma2_2
//&& kdj1>kdj2 //&& kdj110
) SELLme=true;
//+------------+
//| End Insert |
//+------------+
// if(kdj1>kdj2)close_order(OP_SELL,1);
// if(kdj1<kdj2)close_order(OP_BUY,1);
//ENTRY LONG (buy, Ask)
if(TradeAllowed && BUYme)
{
close_order(OP_SELL,0);
//Ask(buy, long)
if(LossLimit ==0) SL=0; else SL=Ask-( (LossLimit +7)*Point );
if(ProfitMade==0) TP=0; else TP=Ask+( (ProfitMade+7)*Point );
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,TradeComment,MagicNumber,White);
gle=GetLastError();
if(gle==0)
{
Print("BUY Ask=",Ask," bartick=",bartick);
ObjectCreate("myx"+DoubleToStr(objtick,0), OBJ_TEXT, 0, Time[0], High[0]+(5*p));
ObjectSetText("myx"+DoubleToStr(objtick,0),"B",15,"Arial",Red);
bartick=0;
TradeAllowed=false;
}
else
{
Print("-----ERROR----- BUY Ask=",Ask," error=",gle," bartick=",bartick);
}
} |