I don't know afl yet. but i borrowd this from vttrader
forum<http://forum.vtsystems.com/index.php?showtopic=6281>

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 <[EMAIL PROTECTED]>

>   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
>
>  
>

Reply via email to