[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] QQE INDICATOR from Metatrader



PureBytes Links

Trading Reference Links

I don't know afl yet. but i borrowd this from vttrader forum

i imagine its relatively easy to translate into afl.

Barnum:= BarCount();
Err:= (tp1=0) or (tp2=0) or (rsitpr=0) or (Sh=0) or (Lg=0) or (K=0) or (D=0) or (stochsl=0);

{Moving Averages}

ShortMA:= mov(pr1,tp1,mTp1);
LongMA:= mov(pr2,tp2,mTp2);

{Relative Strength Index}

rsi_r:= (rsipr - ref(rsipr,-1));
rsi_rs:= Wilders(if(rsi_r>0,rsi_r,0),rsitpr) / Wilders(if(rsi_r<0,Abs(rsi_r),0),rsitpr);
RSIndex:= 100-(100/(1+rsi_rs));
RSIML:= 50;

{MACD}

FL:= Mov(spr,Sh,smat) - Mov(lpr,Lg,lmat);
SL:= Mov(FL,sig,sigmat);
OsMA:= FL-SL;

{Slow Stochastic Oscillator}

StK:= ((C-LLV(L,K))/(HHV(H,K)-LLV(L,K)))*100;
StDK:= Mov(StK,stochSl,MtK);
StDD:= Mov(StDK,D,DMt);
StochUp:= 80;
StochDown:= 20;

{Do NOT change the NAMES of the Variables below.
If you Changed The NAMES of Indicator1 or Indicator2,
you will have to change them below.}

{Define Final Trade Entry/Exit Criteria}

LongEntryCond1:= ShortMA>LongMA;
LongEntryCond2:= FL>SL;
LongEntryCond3:= RSIndex>RSIML;
LongEntryCond4:= StDK>StDD;

ShortEntryCond1:= ShortMA<LongMA;
ShortEntryCond2:= FL<SL;
ShortEntryCond3:= RSIndex<RSIML;
ShortEntryCond4:= StDK<StDD;

LongEntrySetup:= Cross((LongEntryCond1+LongEntryCond2+LongEntryCond3+LongEntryCond4),3.5);
LongExitSetup:= Cross((ShortEntryCond1+ShortEntryCond2+ShortEntryCond3+ShortEntryCond4),3.5);

ShortEntrySetup:= Cross((ShortEntryCond1+ShortEntryCond2+ShortEntryCond3+ShortEntryCond4),3.5);
ShortExitSetup:= Cross((LongEntryCond1+LongEntryCond2+LongEntryCond3+LongEntryCond4),3.5);

{***********************************************}

{That's it! You're done! There is no need to
edit below this point.}

{***********************************************}

{Determine the Pip Value for the currency chart being used}

_SymbolPoint:= SymbolPoint();

_InitialStoploss:= InitialStoploss * _SymbolPoint;
_BEP:= BEP * _SymbolPoint;
_TrailingStoploss:= TrailingStoploss * _SymbolPoint;
_ProfitTarget:= ProfitTarget * _SymbolPoint;
_Spread:= Spread * _SymbolPoint;

{Define Active Market Hours for Taking Trade Entries}
{For Example: StartHour=2 and StartMinute=0 will allow trade entries beginning at 2:00 AM EST}
{For Example: EndHour=14 and EndMinute=30 will allow trade entries until 2:30 PM EST}

_hour:= hour();
_minute:= minute();

TradingSessionOnStart:= _hour=StartHour and _minute>=StartMinute;
TradingSessionOnEnd:= _hour=EndHour and _minute>=EndMinute;
TradingSessionOn:= SignalFlag(TradingSessionOnStart,TradingSessionOnEnd);
TradingSessionOff:= 1;
TradeEntryTimeFilter:= if(TradeEntryTimeFilterMode=0, TradingSessionOn, TradingSessionOff);

TradeEntryTimeFilterNotEnabled:= TradeEntryTimeFilter=0;
TradeEntryTimeFilterEnabled:= TradeEntryTimeFilter=1;

{***********************************************}

LongEntrySignal:= (NOT Err AND LongTradeAlert=0 AND ShortTradeAlert=0 AND TradeEntryTimeFilter=1 AND LongEntrySetup) OR
                  (NOT Err AND LongTradeAlert=0 AND Cross(0.5,ShortTradeAlert) AND TradeEntryTimeFilter=1 AND LongEntrySetup) OR
                  (NOT Err AND LongTradeAlert=0 AND TradeEntryTimeFilter=1 AND ShortExitSetup);

LongEntryPrice:= valuewhen(1,LongEntrySignal,C) + _Spread;
BarsSinceLongEntry:= BarsSince(LongEntrySignal);

LongEntryInitialStop:= if(LongTradeAlert=1 OR LongEntrySignal OR LongExitSignal, LongEntryPrice - _InitialStoploss, null);
DisplayLongEntryInitialStop:= if(InitialStoplossMode=0, LongEntryInitialStop, null);

LongEntryBEStoplossFlag:= SignalFlag(LongTradeAlert=1 AND C >= (LongEntryPrice + _BEP), LongExitSignal);
LongEntryBEStoploss:= if(LongEntryBEStoplossFlag=1 OR LongEntrySignal OR LongExitSignal, LongEntryPrice, null);
DisplayLongEntryBEStoploss:= if(BEStoplossMode=0, LongEntryBEStoploss, null);

LongEntryPipTrailingStop:= if(LongTradeAlert=1 OR LongEntrySignal OR LongExitSignal, max((C - _TrailingStoploss), PREV(LongEntryPrice - _TrailingStoploss)), null);
LongEntryATRTrailingStop:= if(LongTradeAlert=1 OR LongEntrySignal OR LongExitSignal, max(HHV(H,BarsSinceLongEntry) - (ATR(ATRper) * atrmultiplier), PREV(valuewhen(1,LongEntrySignal,H) - (ATR(ATRper) * atrmultiplier))), null);
DisplayLongEntryTrailingStop:= if(TrailingStoplossMode=0 AND TrailingStoplossType=1, LongEntryPipTrailingStop,
                               if(TrailingStoplossMode=0 AND TrailingStoplossType=0, LongEntryATRTrailingStop,
                               null));

LongEntryProfitTarget:= if(LongTradeAlert=1 OR LongEntrySignal OR LongExitSignal, LongEntryPrice + _ProfitTarget, null);
DisplayLongEntryProfitTarget:= if(ProfitTargetMode=0, LongEntryProfitTarget, null);

LongExitSignal:= (LongTradeAlert=1 AND InitialStoplossMode=0 AND Cross(LongEntryInitialStop,C))
              OR (LongTradeAlert=1 AND BEStoplossMode=0 AND Cross(LongEntryBEStoploss,C))
              OR (LongTradeAlert=1 AND TrailingStoplossMode=0 AND TrailingStoplossType=1 AND Cross(LongEntryPipTrailingStop,C))
              OR (LongTradeAlert=1 AND TrailingStoplossMode=0 AND TrailingStoplossType=0 AND Cross(LongEntryATRTrailingStop,C))
              OR (LongTradeAlert=1 AND ProfitTargetMode=0 AND Cross(C,LongEntryProfitTarget))
              OR (LongTradeAlert=1 AND LongExitSetup);

LongExitPrice:= valuewhen(1,LongExitSignal,C);

ShortEntrySignal:= (NOT Err AND ShortTradeAlert=0 AND LongTradeAlert=0 AND TradeEntryTimeFilter=1 AND ShortEntrySetup) OR
                   (NOT Err AND ShortTradeAlert=0 AND Cross(0.5,LongTradeAlert) AND TradeEntryTimeFilter=1 AND ShortEntrySetup) OR
                   (NOT Err AND ShortTradeAlert=0 AND TradeEntryTimeFilter=1 AND LongExitSetup);

ShortEntryPrice:= valuewhen(1,ShortEntrySignal,C);
BarsSinceShortEntry:= BarsSince(ShortEntrySignal);

ShortEntryInitialStop:= if(ShortTradeAlert=1 OR ShortEntrySignal OR ShortExitSignal, ShortEntryPrice + _InitialStoploss - _Spread, null);
DisplayShortEntryInitialStop:= if(InitialStoplossMode=0, ShortEntryInitialStop, null);

ShortEntryBEStoplossFlag:= SignalFlag(ShortTradeAlert=1 AND C <= (ShortEntryPrice - _BEP), ShortExitSignal);
ShortEntryBEStoploss:= if(ShortEntryBEStoplossFlag=1 OR ShortEntrySignal OR ShortExitSignal, ShortEntryPrice - _Spread, null);
DisplayShortEntryBEStoploss:= if(BEStoplossMode=0, ShortEntryBEStoploss, null);

ShortEntryPipTrailingStop:= if(ShortTradeAlert=1 OR ShortEntrySignal OR ShortExitSignal, min((C + _TrailingStoploss - _Spread), PREV(ShortEntryPrice + _TrailingStoploss - _Spread)), null);
ShortEntryATRTrailingStop:= if(ShortTradeAlert=1 OR ShortEntrySignal OR ShortExitSignal, min(LLV(L,BarsSinceShortEntry) + (ATR(ATRper) * atrmultiplier), PREV(valuewhen(1,ShortEntrySignal,L) + (ATR(ATRper) * atrmultiplier))), null);
DisplayShortEntryTrailingStop:= if(TrailingStoplossMode=0 AND TrailingStoplossType=1, ShortEntryPipTrailingStop,
                                if(TrailingStoplossMode=0 AND TrailingStoplossType=0, ShortEntryATRTrailingStop,
                                null));

ShortEntryProfitTarget:= if(ShortTradeAlert=1 OR ShortEntrySignal OR ShortExitSignal, ShortEntryPrice - _ProfitTarget - _Spread, null);
DisplayShortEntryProfitTarget:= if(ProfitTargetMode=0, ShortEntryProfitTarget, null);

ShortExitSignal:= (ShortTradeAlert=1 AND InitialStoplossMode=0 AND Cross(C,ShortEntryInitialStop))
               OR (ShortTradeAlert=1 AND BEStoplossMode=0 AND Cross(C,ShortEntryBEStoploss))
               OR (ShortTradeAlert=1 AND TrailingStoplossMode=0 AND TrailingStoplossType=1 AND Cross(C,ShortEntryPipTrailingStop))
               OR (ShortTradeAlert=1 AND TrailingStoplossMode=0 AND TrailingStoplossType=0 AND Cross(C,ShortEntryATRTrailingStop))
               OR (ShortTradeAlert=1 AND ProfitTargetMode=0 AND Cross(ShortEntryProfitTarget,C))
               OR (ShortTradeAlert=1 AND ShortExitSetup);

ShortExitPrice:= valuewhen(1,ShortExitSignal,C) + _Spread;

{Simulated Open Trade Determination and Trade Direction}

LongTradeAlert:= SignalFlag(LongEntrySignal,LongExitSignal);
ShortTradeAlert:= SignalFlag(ShortEntrySignal,ShortExitSignal);

{Create Auto-Trading Functionality}

OpenBuy:= LongEntrySignal and (eventCount('OpenBuy')=eventCount('CloseBuy'));
CloseBuy:= LongExitSignal and (eventCount('OpenBuy')>eventCount('CloseBuy'));

OpenSell:= ShortEntrySignal and (eventCount('OpenSell')=eventCount('CloseSell'));
CloseSell:= ShortExitSignal and (eventCount('OpenSell')>eventCount('CloseSell'));

{***********************************************}

{Calculate Simulated Individual Trade Profit In Pips}

_TradeProfitInPips:= If(LongExitSignal=1,LongExitPrice - LongEntryPrice,
                     If(ShortExitSignal=1,ShortEntryPrice - ShortExitPrice,
                     0));

TradeProfitInPips:= if(SymbolDigits()=4, _TradeProfitInPips * 10000, _TradeProfitInPips * 100);

{Calculate Simulated Total Profit In Pips}

TotalProfitInPips:= cum(TradeProfitInPips);

{Calculate Number of Trades}

LongTrades:= cum(LongExitSignal);
ShortTrades:= cum(ShortExitSignal);

LosingTrades:= cum(If(TradeProfitInPips < 0,1,0));
WinningTrades:= cum(If(TradeProfitInPips > 0,1,0));
BreakEvenTrades:= if((LongExitSignal=1 or ShortExitSignal=1) and TradeProfitInPips=0, PREV+1, PREV);
TotalTrades:= cum(LongExitSignal) + cum(ShortExitSignal);

{Calculate Additional Stats}

WinningTradesPips:= if(TradeProfitInPips > 0,TradeProfitInPips + PREV, PREV);
LosingTradesPips:= if(TradeProfitInPips < 0,TradeProfitInPips + PREV, PREV);

LargestWinningTradeInPips:= max(TradeProfitInPips,PREV);
LargestLosingTradeInPips:= min(TradeProfitInPips,PREV);

AverageWinningTradeInPips:= WinningTradesPips / WinningTrades;
AverageLosingTradeInPips:= LosingTradesPips / LosingTrades;

PercentProfitable:= (WinningTrades/TotalTrades) * 100;
AverageWinLossRatio:= AverageWinningTradeInPips / AverageLosingTradeInPips;

{***********************************************}

2008/10/26 Bobby <bobby.kular@xxxxxxxxxxxxxx>

Dear Members,
Has anybody coded QQE indicator available in MT4 into afl,if
yes,kindly post teh indicator here and if no please can anybody code
it for me,I shall be highly indebted.
regards
bobby kular


__._,_.___

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
*********************

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html

*********************************




Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___