この戦略は,トレンド追跡取引の市場傾向方向を決定するために移動平均値と平均値の真の範囲を使用します.
この戦略は,市場動向を決定するために,レン期間の移動平均値 (MA) とレン期間の真の平均値の2倍を用いています.具体的規則は以下のとおりです.
最低値が移動平均値と真平均範囲 (低値 > ma + atr) よりも大きい場合,上昇傾向とみなされます. 高値が移動平均より小さい場合 平均値の真の範囲 (高値 < ma - atr) をマイナスすると,それは下向きの傾向として判断されます.
他の場合には,前の判決は維持されます.
上向きの傾向が決まったら 特定の割合でロングをします ダウントレンドが決まったら 特定の割合で ショートする
閉じる条件は,指定された取引終了日に達することです.
この戦略の利点は次のとおりです.
この戦略が直面する主なリスクは以下のとおりです.
解決策:
戦略は以下の側面から最適化できます.
この戦略の全体的な考え方は明確で理解しやすい.トレンド方向を決定するために移動平均を使用し,ストップを設定するために平均真の範囲を使用します.トレンドを効果的に追跡することができます.しかし,一定のリスクがあり,パラメータ設定のさらなる最適化および他の判断指標を追加する必要があります.一般的に,この戦略はトレンド追跡取引のための実行可能なアプローチを提供します.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //2019 //Noro //@version=4 strategy(title = "Noro's MA+ATR Strategy", shorttitle = "MA+ATR str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") len = input(30, minval = 2, title = "MA Length") src = input(ohlc4, title = "MA Source") limitmode = input(false) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //MA + BG atr = sma(tr, len) * 2 ma = sma(src, len) plot(ma, color = color.blue, linewidth = 4) trend = 0 trend := low > ma + atr ? 1 : high < ma - atr ? -1 : trend[1] col = trend == 1 ? color.lime : color.red bgcolor(col, transp = 70) //Trading lot = 0.0 lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if trend == 1 and limitmode == false strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if trend == -1 and limitmode == false strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) if trend == 1 and limitmode strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if trend == -1 and limitmode strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) // if time > timestamp(toyear, tomonth, today, 23, 59) // strategy.close_all()