Strategi ini membina isyarat dagangan berdasarkan penunjuk momentum RSI dan harga
Strategi ini menggunakan 3 syarat untuk menjana isyarat perdagangan:
Memenuhi mana-mana 2 daripada 3 syarat di atas menghasilkan isyarat beli; jika tidak dipenuhi, isyarat jual dihasilkan.
Strategi ini juga menyediakan mod
Ringkasnya, strategi ini tergolong dalam strategi perdagangan frekuensi sederhana yang bertujuan untuk menangkap trend harga jangka menengah sambil mengelakkan turun naik pasaran jangka pendek. Kelebihannya dan titik risiko cukup jelas.
/*backtest start: 2022-12-05 00:00:00 end: 2023-12-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("I11L Unitrend",overlay=false, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00) tradingMode = input.string("Unitrend", "Trading Mode", ["Unitrend", "Always Buy"], tooltip="Choose the Trading Mode by trying Both in your Backtesting. I use it if one is far better then the other one.") compoundingMode = input.bool(false) leverage = input.float(1.0,step=0.1) SL_Factor = 1 - input.float(1,"Risk Capital per Trade unleveraged (%)", minval=0.1, maxval=100, step=0.1) / 100 TPFactor = input.float(2, step=0.1) var disableAdditionalBuysThisDay = false var lastTrade = time if(time > lastTrade + 1000 * 60 * 60 * 8 or tradingMode == "Always Buy") disableAdditionalBuysThisDay := false if(strategy.position_size != strategy.position_size[1]) lastTrade := time disableAdditionalBuysThisDay := true //Trade Logic SCORE = 0 //rsi momentum RSIFast = ta.ema(ta.rsi(close,50),24) RSISlow = ta.sma(ta.rsi(close,50),24) RSIMomentum = RSIFast / RSISlow goodRSIMomentum = RSIMomentum > 1 SCORE := goodRSIMomentum ? SCORE + 1 : SCORE //rsi trend RSITrend = RSISlow / 45 goodRSI = RSITrend > 1 SCORE := goodRSI ? SCORE + 1 : SCORE //price trend normalTrend = ta.ema(close,50) / ta.sma(close,50) goodTrend = normalTrend > 1 SCORE := goodTrend ? SCORE + 1 : SCORE isBuy = SCORE > 1 or tradingMode == "Always Buy" isSell = false //SCORE == 0 //plot(SCORE, color=isBuy ? color.green : #ffffff88) //reduced some of the values just for illustrative purposes, you can buy after the signal if the trendlines seem to grow plot(1, color=isBuy ? #77ff7733 : SCORE == 2 ? #ffff0033 : SCORE == 1 ? #ff888833 : #ff000033,linewidth=10) plot(1 - (1 - RSIMomentum) * 6,color=#00F569) plot(1 - (1 - RSITrend) * 0.25,color=#00DB9B) plot(1 - (1 - normalTrend) * 20,color=#00F5EE) strategy.initial_capital = 50000 if(isBuy and not(disableAdditionalBuysThisDay)) if(compoundingMode) strategy.entry("Long", strategy.long, (strategy.equity / close) * leverage) else strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage) if(strategy.position_size != 0) strategy.exit("TP/SL Long", "Long", stop=strategy.position_avg_price * (1 - (1 - SL_Factor)), limit=strategy.position_avg_price * (1 + (1 - SL_Factor) * TPFactor))