戦略をフォローする二重移動平均

作者: リン・ハーンチャオチャン開催日:2024年2月27日 14:49:58
タグ:

img

概要

双動平均フォロー戦略は,動平均に基づいたトレンドフォロー戦略である.異なる期間の動平均を計算してトレンド方向を決定し,それに応じて取引シグナルを生成する.短期動平均が長期平均を横切るとロングになり,短期動平均が長期平均を下回るとショートになる.この戦略は,利益を得る傾向に従う.

戦略の論理

ダブル・ムービング・メアリーは,閉店価格の14期および28期シンプル・ムービング・メアリング (SMA) を計算することによってトレンド方向を判断する.具体的には,各期末の閉店価格の14期SMAと28期SMAを計算する.14期SMAが28期SMAを横切ると,ロング・シグナルを送信し,ロング・ポジションを開く.14期SMAが28期SMAを下回ると,ショート・シグナルを送信し,ショート・ポジションを開く.

ポジションを入力した後,利益とストップ損失レベルを設定することでリスクを管理する.利益とストップ損失のポイントは入力パラメータに基づいて価格に変換される.また,利益とリスクの視覚的な判断のためにチャート上で利益のライン,ストップ損失ライン,エントリー平均価格ラインをプロットする.

利点分析

双重移動平均の戦略は以下の利点があります.

  1. 実行し操作するのも簡単です
  2. 引き上げリスクが低い傾向を追っている.
  3. 取引頻度はサイクルパラメータを調整することで制御できます.
  4. リスクをコントロールするための柔軟な利益とストップ損失設定

リスク分析

この2つの移動平均の戦略には,いくつかのリスクもあります.

  1. 突発的な出来事によって市場の動向が乱れると,大きな損失が発生する可能性があります.
  2. ストップ・ロスは,ストップ・ロスのポイントが小さすぎると,早すぎるストップ・ロスは起こる可能性があります.
  3. ストップ・ロストポイントが大きすぎる場合 損失範囲は拡大できます
  4. 取引頻度は高すぎたり低くなり,資本効率に影響を与える可能性があります.

リスクは次の側面から管理できます.

  1. 動的にストップ・ロストポイントを設定します
  2. 移動平均サイクルのパラメータを最適化します
  3. トレンド・ターニング・ポイントの近くで 偽信号を避けるために トレンド・フィルターを追加します

オプティマイゼーションの方向性

この戦略の2つの移動平均は,次の方法で最適化できます.

  1. 動的ストップ損失ポイントの波動性指標を追加します.例えば,早速離脱を避けるために波動性が上昇するときにストップ損失を拡大するためにATRと組み合わせます.

  2. 移動平均サイクルのパラメータを最適化し,より多くの組み合わせをテストし,適切な頻度で適切な取引シグナルを選択します.

  3. トレンドターニングポイントの近くで誤った信号を避けるため,MACD,DMIなどのトレンドフィルターインジケーターを追加し,不必要な取引を削減します.

  4. 価格動向を予測し,従来のルールを置き換えるための機械学習モデルを増やす.LSTM,GRUディープラーニングモデルはより良い結果を生む可能性があります.

  5. 低相関性を利用した取引品種を多様化して総引き上げを減らす.

結論

結論として,二重移動平均フォローする戦略は,シンプルで実用的なトレンドフォローするシステムです.トレンドに沿って動いて引き下げリスクが低く,実装が簡単です. サイクルパラメータを調整し,ストップ損失と利益を設定し,トレンド判断指標を追加することで最適化することができます. より多くの市場環境に適応し,より安定した収益を得ることができます.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © coinilandBot
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © adolgov

// @description
// 

//@version=4
strategy("coiniland  copy trading platform", overlay=true)

// random entry condition

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

moneyToSLPoints(money) =>
    strategy.position_size !=0 ? (money / syminfo.pointvalue / abs(strategy.position_size)) / syminfo.mintick : na

p = moneyToSLPoints(input(200, title = "Take Profit $$"))
l = moneyToSLPoints(input(100, title = "Stop Loss $$"))
strategy.exit("x", profit = p, loss = l)

// debug plots for visualize SL & TP levels
pointsToPrice(pp) =>
    na(pp) ? na : strategy.position_avg_price + pp * sign(strategy.position_size) * syminfo.mintick
    
pp = plot(pointsToPrice(p), style = plot.style_linebr )
lp = plot(pointsToPrice(-l), style = plot.style_linebr )
avg = plot( strategy.position_avg_price, style = plot.style_linebr )
fill(pp, avg, color = color.green)
fill(avg, lp, color = color.red)


もっと