Hi,
Can the attached code be converted to an indicator with “buy” or “sell” text/ signals?
Regards,
Segie
//************************************************************************
// Kama & Sma Trading System DAX mtf
//************************************************************************
//
DEFPARAM CumulateOrders = False
DEFPARAM PreLoadBars = 2000
////////////////////////////////////////////////////////////////////////
TIMEFRAME (default)
ONCE nLots = 1
ONCE LongTrading = 1 //1=allowed 0=banned
ONCE ShortTrading = 1 //1=allowed 0=banned
//
ONCE TP = 200 //200 pips
ONCE SL = 50 //50 pips
//
TimeForbidden = OpenTime < 090000 AND OpenTime > 190000
LongCond = (Not TimeForbidden) AND LongTrading
ShortCond = (Not TimeForbidden) AND ShortTrading
//
TIMEFRAME (1 hour, updateonclose) //h1
IF Not OnMarket THEN
BarCount = 0
ELSE
BarCount = BarCount + 1
ENDIF
//------------------------------------------------------------------------------------
// Kama & Sma Strategy
//
//https://www.forexstrategiesresources.com/trend-following-forex-strategies/111-kama-strategy/
//
Period = 2 //2 (standard 10)
FastPeriod = 2 //standard
SlowPeriod = 30 //standard
//
Fastest = 2 / (FastPeriod + 1)
Slowest = 2 / (SlowPeriod + 1)
if barindex >= (Period + 1) then
Num = abs(close-close[Period])
Den = summation[Period](abs(close-close[1]))
ER = Num / Den
Alpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)
Kama = (Alpha * Close) + ((1 -Alpha)* Kama[1])
else
Kama = close
endif
//------------------------------------------------------------------------------------
Sma = average[22,0](close) //22
//------------------------------------------------------------------------------------
a1 = Kama CROSSES OVER Sma
// --- SHORT
b1 = Kama CROSSES UNDER Sma
////////////////////////////////////////////////////////////////////////
TIMEFRAME (default) //1 min
ONCE TradeON = 1
IF IntraDayBarIndex = 0 THEN
TradeON = 1
ENDIF
TradeBar = BarCount
IF Not OnMarket AND TradeBar <> TradeBar[1] THEN
TradeON = 1
ENDIF
//************************************************************************
// LONG trades
//************************************************************************
IF a1 AND TradeON AND LongCond THEN
BUY nLots CONTRACT AT MARKET
TradeON = 0
ENDIF
//************************************************************************
// SHORT trades
//************************************************************************
IF b1 AND TradeON AND ShortCond THEN
SELLSHORT nLots CONTRACT AT MARKET
TradeON = 0
ENDIF
//
SET TARGET pPROFIT TP
SET STOP pLOSS SL
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Trailing Stop
//------------------------------------------------------------------------------------
IF Not OnMarket THEN
TrailStart = 10 //10 Start trailing profits from this point
BasePerCent = 0.100 //10.0% Profit to keep
StepSize = 6 //6 Pips chunks to increase Percentage
PerCentInc = 0.100 //10.0% PerCent increment after each StepSize chunk
RoundTO = -0.5 //-0.5 rounds to Lower integer, +0.4 rounds to Higher integer
PriceDistance = 7 * pipsize//8.9 minimun distance from current price
y1 = 0
y2 = 0
ProfitPerCent = BasePerCent
ELSIF LongOnMarket AND close > (TradePrice + (y1 * pipsize)) THEN //LONG
x1 = (close - tradeprice) / pipsize //convert price to pips
IF x1 >= TrailStart THEN //go ahead only if N+ pips
Diff1 = abs(TrailStart - x1)
Chunks1 = max(0,round((Diff1 / StepSize) + RoundTO))
ProfitPerCent = BasePerCent + (BasePerCent * (Chunks1 * PerCentInc))
ProfitPerCent = max(ProfitPerCent[1],min(100,ProfitPerCent))
y1 = max(x1 * ProfitPerCent, y1) //y = % of max profit
ENDIF
ELSIF ShortOnMarket AND close < (TradePrice - (y2 * pipsize)) THEN//SHORT
x2 = (tradeprice - close) / pipsize //convert price to pips
IF x2 >= TrailStart THEN //go ahead only if N+ pips
Diff2 = abs(TrailStart - x2)
Chunks2 = max(0,round((Diff2 / StepSize) + RoundTO))
ProfitPerCent = BasePerCent + (BasePerCent * (Chunks2 * PerCentInc))
ProfitPerCent = max(ProfitPerCent[1],min(100,ProfitPerCent))
y2 = max(x2 * ProfitPerCent, y2) //y = % of max profit
ENDIF
ENDIF
IF y1 THEN //Place pending STOP order when y>0
SellPrice = Tradeprice + (y1 * pipsize) //convert pips to price
IF abs(close - SellPrice) > PriceDistance THEN
IF close >= SellPrice THEN
SELL AT SellPrice STOP
ELSE
SELL AT SellPrice LIMIT
ENDIF
ELSE
SELL AT Market
ENDIF
ENDIF
IF y2 THEN //Place pending STOP order when y>0
ExitPrice = Tradeprice - (y2 * pipsize) //convert pips to price
IF abs(close - ExitPrice) > PriceDistance THEN
IF close <= ExitPrice THEN
EXITSHORT AT ExitPrice STOP
ELSE
EXITSHORT AT ExitPrice LIMIT
ENDIF
ELSE
EXITSHORT AT Market
ENDIF
ENDIF
Try this.
I couldn’t test it since I haven’t my PC available:
// Kama & Sma
//
Period = 2 //2 (standard 10)
FastPeriod = 2 //standard
SlowPeriod = 30 //standard
//
Fastest = 2 / (FastPeriod + 1)
Slowest = 2 / (SlowPeriod + 1)
if barindex >= (Period + 1) then
Num = abs(close-close[Period])
Den = summation[Period](abs(close-close[1]))
ER = Num / Den
Alpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)
Kama = (Alpha * Close) + ((1 -Alpha)* Kama[1])
else
Kama = close
endif
//------------------------------------------------------------------------------------
Sma = average[22,0](close) //22
//------------------------------------------------------------------------------------
a1 = Kama CROSSES OVER Sma
// --- SHORT
b1 = Kama CROSSES UNDER Sma
x = 0
If a1 then
x = 1
Elsif b1 then
x = -1
Endif
Return x
Hello,
Me it works TF 15 minute.
Attention French time
Receiving a Syntax error Line 3 character 7
In my code I can’t see any source if error at line 3.
If it’s the code in the ITF file, then I cannot open it now.
If you post that code I might help you.
Attached a picture with the error
Try deleting those characters (even if they are a blank).
Or you may import the attached file, in case copy & paste was not correct.
Got it working now. Thanks!