トレンドフォロー取引戦略


作成日: 2023-09-25 17:50:11 最終変更日: 2023-09-25 17:50:11
コピー: 0 クリック数: 643
1
フォロー
1617
フォロワー

概要

Noroトレンドトラッキング取引戦略は,価格チャネル,RSI,実物フィルターに基づく簡単なトレンドトラッキング戦略である.価格チャネルの方向を大トレンドとして認識し,超買い超売り指標RSIを使用して入場し,実物フィルターと組み合わせて取引信号を発信する.この戦略は,株式指数,外貨などの継続的なトレンドのある品種に適用される.

戦略原則

この戦略の主要な取引論理は以下の通りです.

  1. 価格チャネルを適用して,大トレンドの方向を判断する.特定の周期内の最高価格と最低価格を計算することによって,チャネルを形成し,チャネルの上部には看板,下部には看板がある.

  2. RSI指標は,超買超売区間を判断し,入場地点を探すのを補助する. RSI60以上は超買区間,40未満は超売区間である.

  3. エニティフィルターは最後の信号を発する.特定のサイズ以上のエニティでのみ取引し,ノイズを避ける.

  4. 大トレンド,RSI信号と実体フィルタを組み合わせて入場する.多頭トレンドでは看板信号が多く入場し,空頭トレンドでは看板信号が空席に入場する.

  5. 背景の色を選択して,トレンドの方向を直感的に判断できます.

  6. カスタマイズ可能な戦略の取引時間帯,選択された時間帯内でのみ取引.

この戦略は多指標共振であり,大トレンドは方向を決定し,RSIは時刻を決定し,実体フィルターは質を決定し,比較的安定したトレンド追跡戦略を形成する.

優位分析

この戦略の主な利点は以下の通りです.

  1. 価格チャネルは,大きなトレンドの方向を直感的に判断し,単板の逆転を避ける.

  2. RSIは,超買超売の入場点を効果的に識別します.

  3. 実体フィルタは信号の質を高め,ノイズや偽信号に騙されないようにする.

  4. 複数の指標をフィルタリングし,確認し,意思決定の正確さを向上させる.

  5. シンプルな指標を用いて,曲線最適化のリスクを低減する.

  6. 取引の時間帯をカスタマイズし,大きなトレンドの方向に柔軟に対応します.

  7. 操作が簡単で,パラメータが少ないので,初心者でも簡単に使用できます.

  8. 背景の色を選択して, 鮮明な視覚的効果を生成します.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 価格チャネルが機能しなくなる可能性もある.

  2. RSIは誤った信号を発信し,超買いと超売りが不正確であると判断する危険性があります.

  3. 物理的なフィルタリングは,通常の信号のリスクを排除し,取引の機会を逃します.

  4. 金融危機の危機は,大きなトレンドの深度調整にもつながります.

  5. 最適化リスク,パラメータを誤って設定すると過最適化に繋がる.

  6. ポジションリスク,デフォルトの全ポジション取引は損失を拡大する可能性があります.

  7. 品種選択のリスクは,トレンド品種のみに適用されます.

  8. 取引の時間帯はリスクが設定されていて,その効果を得るには合理的な設定が必要である.

最適化の方向

この戦略は,以下のような改善を考慮することができます.

  1. 単一損失を抑えるために,ストップ・ロスの策を追加する.

  2. 特定の取引品種の特徴に合わせてパラメータを最適化します.

  3. ポジション管理モジュールを追加し,トレンドの強さや弱さに応じてポジションを調整します.

  4. 損失拡大を防ぐために,撤回制御を設定できます.

  5. 量値指標と組み合わせて信号検証を行い,精度が向上する.

  6. マシン・ラーニングなどの技術を加え,パラメータを最適化する.

  7. 取引品種の分類を最適化し,個別化戦略を策定する.

  8. 取引時間帯の設定ロジックを最適化し,より柔軟にします.

要約する

Noroのトレンド追跡戦略は,価格チャネル,RSI,実体フィルターを統合して,シンプルで実用的なトレンド追跡戦略を形成する.これは,逆転取引を避けるために,順調に進むことができる.パラメータ最適化,リスク管理などの改善により,この戦略は,持続可能な収益性のトレンド取引戦略になる可能性がある.

ストラテジーソースコード
/*backtest
start: 2023-08-25 00:00:00
end: 2023-09-24 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's TrendMaster Strategy v1.0", shorttitle = "TrendMaster str 1.0", 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")
len = input(21, defval = 20, minval = 2, maxval = 200, title = "MA Period")
needbg = input(false, defval = false, title = "Need trend Background?")
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")

//PriceChannel 1
lasthigh = highest(close, len)
lastlow = lowest(close, len)
center = (lasthigh + lastlow) / 2

//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0

//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
rsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Body filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2

//Signals
up1 = trend == 1 and rsi < 60 and (strategy.position_avg_price > close or strategy.position_size <= 0) and body
dn1 = trend == -1 and rsi > 40 and (strategy.position_avg_price < close or strategy.position_size >= 0) and body

//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "MA")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Trading

if up1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()