You can trie to make it only trade in the longertrend direction
and trie to implement a moneymanagement system based risk per trade on it
and do some optimizing on the parameters
Use Forum if you get problems and don't know how to go on...
//+------------------------------------------------------------------+ //|(VolumeEA) News Trader EA.mq4 | //| Copyright © 2012, nxk | //| Copyright © 2012, deVries | //| | //| | //| Made this to improve this http://codebase.mql4.com/8106 | //+------------------------------------------------------------------+ #property copyright "Copyright © 2012, nxk" #property copyright "Copyright © 2012, deVries" #property link "http://codebase.mql4.com/8106" extern string EAComment="Volume.EA"; extern int MagicNumber=454; extern double StopLossPips=40; extern double TakeProfitPips=400; extern int Slippage.Pips=3; extern double Lots=0.01; extern double Factor=1.55; extern double BreakEven=40; extern double Trailing_Stop=35; //350 looks like 5 digit extern double Trailing_Step=1; extern int StoptradingHour=23; extern double CCILevel1=50; extern double CCILevel2=190; extern double CCILevel3=-50; extern double CCILevel4=-190; //++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.015 0.0150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) int ordini=1; bool CheckforOpen=false; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- if (Digits % 2 == 1) // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262 {pips2dbl = Point*10; pips2points = 10; Digits.pips = 1;} else {pips2dbl = Point; pips2points = 1; Digits.pips = 0;} // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if(NewBar()==true && Volume[1]>Volume[2]*Factor){CheckforOpen=true;} if(ordini>0){ int sells=0; int buys=0; for(int iPos = OrdersTotal()-1; iPos >= 0 ; iPos--) if (OrderSelect(iPos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber() == MagicNumber // my magic number && OrderSymbol() == Symbol()) //chart.symbol my pair. { double SL=OrderStopLoss(); double FP=OrderTakeProfit(); if(Trailing_Stop>0 && BreakEven==0){BreakEven=Trailing_Stop;} if(OrderType()==OP_SELL) { sells++; double pAsk=MarketInfo(OrderSymbol(), MODE_ASK); if(TakeProfitPips>0 && pAsk<=OrderOpenPrice()-TakeProfitPips * pips2dbl) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage.Pips * pips2points,Red); return(0); } if(SL==0 && FP==0 && (StopLossPips>0||TakeProfitPips>0)) {SL=OrderOpenPrice()+StopLossPips * pips2dbl;FP=OrderOpenPrice()-(2*TakeProfitPips * pips2dbl);} if(BreakEven>0 && SL>OrderOpenPrice() && OrderOpenPrice()-pAsk > BreakEven*pips2dbl) {SL=OrderOpenPrice();} if(SL<=OrderOpenPrice() && SL-pAsk>=(Trailing_Stop+Trailing_Step)*pips2dbl) {SL=pAsk+Trailing_Stop*pips2dbl;} } if(OrderType()==OP_BUY) { buys++; double pBid=MarketInfo(OrderSymbol(), MODE_BID); if(TakeProfitPips>0 && pBid>=OrderOpenPrice()+TakeProfitPips * pips2dbl) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage.Pips * pips2points,Green); return(0); } if(SL==0 && FP==0 && (StopLossPips>0||TakeProfitPips>0)) {SL=OrderOpenPrice()-StopLossPips * pips2dbl;FP=OrderOpenPrice()+(2*TakeProfitPips * pips2dbl);} if(BreakEven>0 && SL<OrderOpenPrice() && pBid-OrderOpenPrice() > BreakEven*pips2dbl) {SL=OrderOpenPrice();} if(SL>=OrderOpenPrice() && pBid-SL>=(Trailing_Stop+Trailing_Step)*pips2dbl) {SL=pBid-Trailing_Stop*pips2dbl;} } if(SL != OrderStopLoss()||FP != OrderTakeProfit()) {OrderModify(OrderTicket(),OrderOpenPrice(),SL,FP,0,Blue);} if (TimeHour(MarketInfo(Symbol(),MODE_TIME))==23) {OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage.Pips * pips2points,Yellow);} } } ordini=buys+sells; if (CheckforOpen) { if (TimeHour(MarketInfo(Symbol(),MODE_TIME))>=StoptradingHour) { CheckforOpen=false; return(0); } double Commodity.channel=iCCI(NULL,0,14,PRICE_TYPICAL,0); double Price,Sl,Tp; int Dir,Ticket; color Color; if (Open[1]<Close[1] && Commodity.channel>CCILevel1 && Commodity.channel<CCILevel2) {Dir=0;Price=Ask; Sl=Ask-StopLossPips * pips2dbl; Tp=Ask+(2*TakeProfitPips * pips2dbl); Color=Green;} if (Open[1]>Close[1] && Commodity.channel>CCILevel4 && Commodity.channel<CCILevel3) {Dir=1;Price=Bid; Sl=Bid+StopLossPips * pips2dbl; Tp=Bid-(2*TakeProfitPips * pips2dbl); Color=Red;} if (Price>0){Ticket=OrderSend(Symbol(),Dir,Lots,Price,Slippage.Pips * pips2points,0,0,EAComment,MagicNumber,0,Color);} if(Ticket>0) { if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)) { ordini++; CheckforOpen=false; OrderModify(Ticket,OrderOpenPrice(),Sl,Tp,0,Color); } } } //---- return(0); } //+------------------------------------------------------------------+ //| NewBar | //| Returns true when new bar gets first tick | //| Returns false otherwise | //| Speed up backtest when there are no open trades | //+------------------------------------------------------------------+ bool NewBar() { static datetime dt = 0; if (Time[0] != dt) { dt = Time[0]; return(true); } return(false); } //+------------------------------------------------------------------+ /* //++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.015 0.0150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) int init(){ OptParameters(); if (Digits % 2 == 1){ // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262 pips2dbl = Point*10; pips2points = 10; Digits.pips = 1; } else { pips2dbl = Point; pips2points = 1; Digits.pips = 0; } // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl, Bid + TakeProfitPips * pips2dbl //---- These are adjusted for 5 digit brokers. /* On ECN brokers you must open first and THEN set stops int ticket = OrderSend(..., 0,0,...) if (ticket < 0) Alert("OrderSend failed: ", GetLastError()); else if (!OrderSelect(ticket, SELECT_BY_TICKET)) Alert("OrderSelect failed: ", GetLastError()); else if (!OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0) Alert("OrderModify failed: ", GetLastError()); */
Forum on trading, automated trading systems and testing trading strategies
newdigital, 2014.06.06 09:25
3 Steps to Trade Major News Events (based on dailyfx article)
Talking Points:
- News releases can be stressful on traders
- Develop a plan before the event arrives
Perhaps you are already in a good position with a good entry and you are afraid the news release may take a bite out of your good entry.
Perhaps you want to enter into a new position as prices are near a technically sound entry point, but you are uncertain if the technical picture will hold up through the volatile release. Therefore, you agonize over the decision of whether to enter now or after the news event.
Maybe, you like to be in the action and initiating new positions during the release. The fast paced volatility during the news release still gets makes your palms sweat as you place trades.
As you can see, news events stress traders in a variety of ways.
Today, we are going to cover three steps to trade news events.
Step 1 - Have a Strategy
It sounds simple, yet the emotion of the release can easily draw us off
course. We see prices moving quickly in a straight line and are afraid
to miss out or afraid to lose the gains we have been sitting on.
Therefore, we make an emotional decision and act.
Having a strategy doesn’t have to be complicated. Remember, staying out
of the market during news and doing nothing is a strategy.
A strategy for the trader with a floating profit entering the news event
could be as simple as “I am going to close off half my position and
move my stop loss to better than break even.”
For the trader wanting to initiate a new position that is technically
based, they may decide to wait until at least 15 minutes after the
release, then decide if the set-up is still valid.
The active news trader may realize they need a plan of buy and sell rules because they trade based on what ‘feels good.’
Step 2 - Use Conservative Leverage
If you are in the market when the news is released, make sure you are
implementing conservative amounts of leverage. We don’t know where the
prices may go and during releases, prices tend to move fast. Therefore,
de-emphasize the influence of each trade on your account equity by using
low amounts of leverage.
Our Traits of Successful Traders research found that traders who implement less than ten times effective leverage tend to be more profitable on average.
3 - Don’t Deviate from the Strategy
If you have taken the time to think about a strategy from step number
one and if you have realized the importance of being conservatively
levered, then you are 90% of the way there! However, this last 10% can
arguably be the most difficult. Whatever your plan is, stick to it!
If I put together a plan to lose 20 pounds of body weight that includes
eating healthier and exercising, but I continue to eat high fat and
sugar foods with limited exercise, then I am only setting myself up for
frustration.
You don’t have to be stressed or frustrated through fundamental news releases.

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
News Trader EA:
Author: Marco Garbuglia