//============================================================================= // ADX_System.mq4 // work_a@ukr.net // // 24 Nov 06: Modified by Derk Wehler // Formatted code to make readable //============================================================================= #property copyright "System" #property link "work_a@ukr.net" extern double TakeProfit = 100; extern double TrailingStop = 35; extern double StopLoss = 45; int start() { double ADXP,ADXC,ADXDIPP; double ADXDIPC,ADXDIMP,ADXDIMC; double Lots; int cnt, ticket, total; int li; if (Bars < 100) { Print("bars less than 100"); return(0); } if (TakeProfit < 10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } li = 60; Lots = 0.1; if (AccountBalance() > 700) Lots = 0.2; if (AccountBalance() > 3000) Lots = 1; if (AccountBalance() > 6000) Lots = 1; if (AccountBalance() > 9000) Lots = 1; if (AccountBalance() > 10000) Lots = 1; if (AccountBalance() > 100000) Lots = 10; ADXP = iADX(NULL, li, 14, PRICE_CLOSE, MODE_MAIN, 2); ADXC = iADX(NULL, li, 14, PRICE_CLOSE, MODE_MAIN, 1); ADXDIPP = iADX(NULL, li, 14, PRICE_CLOSE, MODE_PLUSDI, 2); ADXDIPC = iADX(NULL, li, 14, PRICE_CLOSE, MODE_PLUSDI, 1); ADXDIMP = iADX(NULL, li, 14, PRICE_CLOSE, MODE_MINUSDI, 2); ADXDIMC = iADX(NULL, li, 14, PRICE_CLOSE, MODE_MINUSDI, 1); // 24Nov06 - Derk: Commented out because this prevents the EA from taking BUYs // if (MathAbs(ADXDIPC - ADXC) < 10) // return(0); total = OrdersTotal(); if (total < 1) { // no opened orders identified if (AccountFreeMargin() < (1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } // check for long position (BUY) possibility // TRANSLATION: // If main ADX is heading up, and the plusdi line has // just crossed the main line, heading upward if ((ADXP < ADXC) && (ADXDIPP < ADXP) && (ADXDIPC > ADXC)) { ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, Bid - StopLoss * Point, Ask + TakeProfit * Point, "adx sample", 16384, 0, Green); if (ticket > 0) { if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("BUY order opened : ", OrderOpenPrice()); } else Print("Error opening BUY order : ", GetLastError()); return(0); } // check for short position (SELL) possibility // TRANSLATION: // If main ADX is heading up, and the minusdi line has // just crossed the main line, heading upward if ((ADXP < ADXC) && (ADXDIMP < ADXP) && (ADXDIMC > ADXC)) { ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, Ask + StopLoss * Point, Bid - TakeProfit * Point, "adx sample", 16384, 0, Red); if (ticket > 0) { if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("SELL order opened : ", OrderOpenPrice()); } else Print("Error opening SELL order : ", GetLastError()); return(0); } return(0); } for (cnt=0; cnt < total; cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) // // check for opened position & symbol { if (OrderType() == OP_BUY) // long position is opened { if (ADXP > ADXC && ADXDIPP > ADXP && ADXDIPC < ADXC) { OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet); // close position return(0); // exit } if (TrailingStop > 0) { if (Bid - OrderOpenPrice() > Point * TrailingStop) { if (OrderStopLoss() < Bid-Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, Green); return(0); } } } } else { if (ADXP > ADXC && ADXDIMP > ADXP && ADXDIMC < ADXC) { OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet); // close position return(0); // exit } if (TrailingStop > 0) { if (OrderOpenPrice() - Ask > Point * TrailingStop) { if ((OrderStopLoss() > (Ask+Point * TrailingStop)) || (OrderStopLoss() == 0)) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask+Point * TrailingStop, OrderTakeProfit(), 0, Red); return(0); } } } } } } return(0); } 槩Q>u2&qh#gھqM׼dX&M·:[9> AUd 8-l ;Xηlg0xLAi5K'vdp)ذw곺i Cm:2gkQGV6i旃Spwz2A懺GZ1B>,nvL$ lХcI` Wfx(/g bMs=&XJ[#loM*8ǶXJ#:ExXv^BFDmx;_cC]-Q#^[`Yeğa70Eʆ]cG\Kp Uþe(]45΃:?l@e@D]k8&.Dnŗdw;Dd飉Cy=vzy.8`ҌG/%6܊E\'Vly:v\w;*H?,w4F(cx)>[?Ϟ+SgT"C ,Ws(= I9?2ٽ. GS9\x5 Zݟl޺׼*,J|El6C>*1xŧO m@ƙ\W]8rϨWmR~sF%o.01kd}%¡(p"#y8i&nϭ'm3k9=@Ԩ*L~&::P<>}5!fk| %-3 ;ֿhlo@ޝm@4—%2#"i,w(Y`͎zWFNR~:Ksapghχ X5VF-*=}W|Գxcrs +¯UiP~F NO ;s%V^VPXQKv {&B[|Xpz&ջizDԤeZ"@kuj 7 #W.2_;EŇ; p@_-W0Xz 3U/~~wPHCl@o_i|4jZT _5^87$#Llu7|[;,$Ĺ}>̓m:Za!q%hl(3_P js`wDX` _Tɇt ]C/h@O|6068 B_C[{RQ̑)x^$s+;~(ٰbA q?v"GgNj@PefL=cxT3OYUSނd0}24'Ho?'x*NMJu٭pg -H[0$˜˫&e>~d/b HwQGaVCT&7]zד=]&B/cRy?@62hzz} 8ݓ7HM_Ir+即M+KD!JWt&vvpڂ?Ry>$>]/ke:B2!Q4s{˃81 `4f"2ψ|HG|'"%w<19Hsr>`K=;%^dC-4O6JIdu_ejXEױܔ|,eE=ddn$o`@,Z%%$'cnDMEuyxfY⃉蜫uuMLmϪ2:mf4_.ps;V%dFs{VU }P&bA3x?5RDi/ ?OKg/փU-5$YƔ=P\3rM\DY0"J  p0λLMD1$-kz0dRӪ(Mm3[Ԍjk"p&SfMIwv Kp~VCoeRPP;'"{OG`dPqѴ0z21urR#sbe.;vt#k%U f1⵰:VWW]?8͵;t +ؔQe s'-4LχXvqp"W^LsiMCoy|nB mȟ΋*DྞB40\K~Ϣى݇~Z4kv_D],Ai>[P+dB^B1WrѝAb?}D3j[ s=QPw4,$I) 7&m7|]o/i|~JzAcb? FDhe_뼣yvf_98D+(M)QjtP-fKY/bA䣺LD3AuiYT5! i5lv*;ml!oDy. Kn myJE}߱[*X Z"mUS/=eg?.@{n2-͈Q"!t dBt8b=-E 2s~XsA1b'yyܳAb>l`8ewW >,ă@~aSy