
この戦略は,指数関数移動平均 ((EMA) と価格の指数関数移動平均 ((SMA) による取引信号を構築しています. これはトレンドフォロー型の戦略です.
この戦略は,取引シグナルを生成するために3つの条件を使用します.
上記の3つの条件のうち任意2つが満たされれば,買取シグナルが生成され,すべて満たされない場合は,売り込みシグナルが生成される.
この戦略は,システム自体の相対的な大盤のパフォーマンスをテストするために,は常に買ってのモードを提供している.
この戦略は,全体として,中期価格動向を捕捉し,短期市場の波動を回避することを目的とした中頻取引戦略の属性であり,その優位性とリスク点は明らかにあります.パラメータの最適化と規則の豊かさにより,戦略の安定性をさらに強化することができ,深入な研究と最適化の価値のある高効率の量化取引戦略です.
/*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))