二重確認の優位性移動平均戦略


作成日: 2024-01-23 10:49:57 最終変更日: 2024-01-23 10:49:57
コピー: 0 クリック数: 572
1
フォロー
1617
フォロワー

二重確認の優位性移動平均戦略

概要

この戦略は,多頭だけのトレンド追跡戦略であり,Aroon指標と線形回帰移動平均の二重確認によって取引シグナルを生成します. この戦略は,中長線トレンド取引に適用されます.

戦略原則

この策略は,アロン指数の上線と下線の交差点を用いてトレンドの方向を判断する.上線が下線から上線を突破すると買入シグナルを生成する.上線が上線から下線を突破すると売出シグナルを生成する.偽の突破をフィルターするために,策略はまた,線形回帰移動平均LSMAを補助判断基準として導入する.閉盘価格がLSMAより高い場合にのみ買入シグナルをトリガーする.

具体的には,この戦略の取引シグナル生成規則は以下の通りです.

  1. 買い信号生成条件:上線が下線を突破する ((Aroon指標は双線交差が上昇傾向を形成することを判定する) そして当日の閉盘価格がLSMA移動平均より高い ((閉盘価格は上昇傾向にある)

  2. 販売信号生成条件:上線が下線を突破した ((Aroon指標は双線交差が下向きのトレンドを形成することを判定した) そして当日の閉店価格はLSMA移動平均より低い ((閉店価格は下向きのトレンド中)

戦略的優位性

  1. アルーン指数でトレンドの方向を判断し,騒音から遠ざかります.
  2. LSMA移動平均の追加は,偽突破による不必要な取引を避けるために,補助的なフィルタリング条件として使用される.
  3. 長期上位特性を考慮し,空白による無限損失のリスクを回避します.
  4. 戦略パラメータの設定はシンプルで実行しやすい

戦略リスク

  1. 戦略は多発的で,震災で利益を得ることは難しい.
  2. 固定パラメータの設定は,過適合のリスクを引き起こします.
  3. トレンドの逆転が困難で,時差が下がる

リスクを防ぎ,ストップ・ロズ戦略を設定するか,または他の指標と組み合わせてトレンドの逆転のタイミングを判断し,タイミングでストップ・ロズを行うことができます.

最適化の方向

  1. 株式取引の機会を考慮し,下落の状況でも利益を得ることができます.
  2. 異なる周期パラメータの指標効果をテストできる
  3. パラメータの自動最適化を実現する機械学習モジュールが追加される

要約する

この戦略は,全体として,よりシンプルで実用的な二重確認トレンド追跡戦略である. それは,トレンドの方向を判断するAroonとLSMAのフィルターノイズを使用する考え方がシンプルで直接であり,パラメータを適切に設定した場合,良い効果を得ることができます. この戦略は,中長期線を保持し,短期市場のノイズによって邪魔されないようにする. ストップ・ロスのようなモジュールを追加することで,戦略の優位性をさらに拡大し,リスクを軽減することができます.

ストラテジーソースコード
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © exlux99

//@version=4

strategy(title = "Aroon Strategy long only", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.1)

//Time
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2010, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//INPUTS

length = input(15, minval=1, title="Aroon Legnth")
upper = 100 * (highestbars(high, length+1) + length)/length
lower = 100 * (lowestbars(low, length+1) + length)/length

lengthx = input(title="Length LSMA", type=input.integer, defval=20)
offset = 0//input(title="Offset", type=input.integer, defval=0)
src = input(close, title="Source")
lsma = linreg(src, lengthx, offset)


long = crossover(upper,lower) and close > lsma
longexit = crossunder(upper,lower) and close < lsma

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.close("long",when=longexit)