トレンドフォロー型利益最大化戦略


作成日: 2023-10-11 14:38:40 最終変更日: 2023-10-11 14:38:40
コピー: 2 クリック数: 657
1
フォロー
1702
フォロワー

概要

この戦略は,価格の移動平均と標準差CHANNELを計算して,動的上下軌道を形成し,最高価格と最低価格の平均を組み合わせて中軌道を形成し,現在のトレンドの方向を判断します.価格が上軌を突破すると看板になり,価格が下軌を突破すると看板になり,トレンドの変化に応じて取引を行う戦略を実現します.

戦略原則

  1. 中間の基準線として,closeの20日単行移動平均ベースを計算します.
  2. closeの20日標準差devを上下軌道距離の基として計算する
  3. 中軌道ベース±2*dev は,上線 upper と下線 lower を決定する
  4. 2番目の中線として,最近20日間の最高値upper2と最低値lower2の平均値basis2を計算します.
  5. 上記の2つの中軌は,最終中軌として平均値MBを取った.
  6. 中道MBより近い場合は看板信号,MBより近い場合は下落信号
  7. 信号の判断により空き方向を多く作ることで,トレンドを追跡して利益を得ることができます.

優位分析

  1. ダイナミックな標準差チャネルを使用し,価格の変化のトレンドを素早く捉える
  2. 中央線は,最高値と最低値の情報と組み合わせて,より参考になる.
  3. 信号をより正確かつ信頼性のあるように,二重の中央線設計を採用
  4. 戦略はシンプルでわかりやすく,実行は簡単です.
  5. 設定可能なパラメータが少なく,さまざまな市場環境に対応します.

リスク分析

  1. 上線または下線取引を突破する際には,単一損失を制御するストップ・ロスの戦略を考慮する必要があります.
  2. 取引頻度が高く,手数料の影響も考慮する
  3. Parameters 期間パラメータは,過適合を避けるために慎重に最適化する必要があります.
  4. トレンドが変化すると,取引シグナルが間違える可能性があります.
  5. 資金管理がうまくいけば,高利子化もできない.

最適化の方向

  1. 偽突破を避けるために,上下線突破時にフィルタリング条件を追加することを考慮することができます.
  2. ATRなどの指標に基づいて動的ストップ損失exitを設定できます.
  3. 取引量の情報と組み合わせて,突破信号の信頼性を検証できます.
  4. パラメータ (計算周期など) に最適化して,より多くの市場環境に対応できます.
  5. 単一損失のリスクをコントロールするために,開設量設定を検討することができます.

要約する

この戦略の全体的な構想は,ダイナミックなチャネルを通じてトレンドを捉え,多重の中間軌道の設計と組み合わせて取引信号を生成し,トレンドの方向を効果的に追跡して取引し,より良い取引収益を得ることができます.実際の適用では,止損戦略,資金管理に注意を払い,パラメーターに対して最適化して,長期にわたる安定した収益を得ることができます.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ErdemDemir

//@version=4
strategy("Lawyers Trend Pro Strategy", shorttitle="Lawyers Trend Pro Strategy", overlay=true)

src = close
mult = 2.0
basis = sma(src, 20)
dev = mult * stdev(src, 20)
upper = basis + dev
lower = basis - dev
offset = 0


lower2 = lowest(20)
upper2 = highest(20)
basis2 = avg(upper2, lower2)


MB= (basis+basis2)/2





col1=close>MB
col3=MB>close
colorE = col1 ? color.blue : col3 ? color.red : color.yellow
p3=plot(MB, color=colorE, linewidth=3)

// Deternine if we are currently LONG
isLong = false
isLong := nz(isLong[1], false)

// Determine if we are currently SHORT
isShort = false
isShort := nz(isShort[1], false)

// Buy only if the buy signal is triggered and we are not already long
buySignal = not isLong and crossover(close,MB)

// Sell only if the sell signal is triggered and we are not already short
sellSignal= not isShort and crossover(MB,close)
if (buySignal)
    isLong := true
    isShort := false

if (sellSignal)
    isLong := false
    isShort := true







/// LONG
strategy.entry("long", true , when = buySignal, comment="Open Long")

strategy.close("long", when=sellSignal, comment = "Close Long")

/// SHORT
strategy.entry("short", false,  when = sellSignal, comment="Open Short")

strategy.close("short", when=buySignal, comment = "Close Short")