平均足とカウフマン適応移動平均取引戦略


作成日: 2023-12-19 15:51:30 最終変更日: 2023-12-19 15:51:30
コピー: 1 クリック数: 1108
1
フォロー
1621
フォロワー

平均足とカウフマン適応移動平均取引戦略

概要

ハイキン・アシとカウフマン自律移動平均取引戦略 (HLC3/Kaufman Strategy) は,ハイキン・アシK線とカフマン自律移動平均 (KAMA) を組み合わせた量的な取引戦略である.この戦略は,ハイキン・アシK線を介して取引方向を決定し,その後,カフマン自律移動平均を補助指標として取引信号フィルタリングに使用する.

戦略原則

この戦略は以下の部分から構成されています.

  1. Heikin Ashiの開値と閉値を計算する.これらの価格は,K線実体の中間価格を反映し,部分的なノイズをフィルターすることができます.

  2. カフマン自律移動平均を計算する (KAMA) 〔KAMAは,市場が急激に大幅な波動を起こすときにあまり遅れをとらないように,自分の平滑さを動的に調整することができる〕.

  3. ハイキン・アシの閉盘価格とKAMAの大きさの関係を比較して,買入と売却のシグナルを決定する.ハイキン・アシの閉盘価格がKAMAを上から穿越すると買入シグナルが生じ,ハイキン・アシの閉盘価格がKAMAを下から穿越すると売りシグナルが生じます.

  4. ADX指標を足してトレンドの強さや弱さを判断し,波動的な市場で誤ったシグナルを生じさせないようにする.

優位分析

この戦略の最大の利点は,Heikin Ashi K線とKAMAのダブルフィルタリングを組み合わせることで,ノイズ取引と誤信号を大幅に減らすことです.具体的利点は以下の通りです.

  1. Heikin Ashi K線は,それ自体の消音機能を備えており,一部の短期的な波動をフィルターします.
  2. KAMAはSMAやEMAよりより敏感で,大規模なトレンドの変化を効果的に追跡できます.
  3. Heikin AshiとKAMAのダブルフィルタリングにより,誤差を減らすことができます.
  4. 設定可能なADX指標は,トレンドの強さや弱さを判断し,誤った信号を避ける.
  5. 取引のシグナルが直接で明快で,操作が簡単で,柔軟です.

リスク分析

  1. 部分的な震動状況で誤信号が生じることがあります.このリスクを避けるためにパラメータを適切に調整する必要があります.
  2. 過度に敏感な参入は高殺低に追いつく傾向があり,適正にKAMAパラメータを緩められるべきである.
  3. 長期トレンドの状況では,KAMAは価格変化の一定程度に遅れをとる可能性があります.これは,ADX指標と組み合わせてトレンドの安定性を決定する必要があります.

最適化の方向

  1. ハイキン・アシの終了価格とKAMAのパラメータを最適化して,最適なフィルタリング条件を見つけます.
  2. ADXのようなトレンド判断指標を追加し,トレンドが安定したときに取引シグナルを生成することを保証します.
  3. ボル線などの他の補助指標と組み合わせて,ストップ・ローズ基準を設定する.
  4. 異なる品種のパラメータの安定性をテストし,最適なパラメータの組み合わせを探します.

要約する

ハイキン・アシとカウフマンの自己適応移動平均取引戦略は,二重フィルタリングのトレンド追跡戦略である.それは,ハイキン・アシのK線の消音機能とKAMAのトレンド変化の急速な追跡の利点を組み合わせて,ノイズ取引を効果的にフィルタリングし,誤信号を軽減し,中長期トレンドを追跡するのに適している.この戦略は,パラメータ最適化,補助指標確認などの手段によって,さらに安定性と収益性を高めることができる.

ストラテジーソースコード
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Heikin/Kaufman   by Marco

strategy("HLC3/Kaufman Strategy ",shorttitle="HLC3/KAU",overlay=true)
res1 = input(title="Hlc3 Time Frame", defval="D")
test = input(1,"Hlc3 Shift")
sloma = input(20,"Slow EMA Period")

//Kaufman MA
Length = input(5, minval=1)
xPrice = input(hlc3)
xvnoise = abs(xPrice - xPrice[1])
Fastend = input(2.5,step=.5)
Slowend = input(20)
nfastend = 2/(Fastend + 1)
nslowend = 2/(Slowend + 1)
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))

//Heikin Ashi Open/Close Price
//ha_t = heikinashi(tickerid)
//ha_close = request.security(ha_t, period, nAMA)
//mha_close = request.security(ha_t, res1, hlc3)
bha_close = request.security(syminfo.ticker, timeframe.period, nAMA)
bmha_close = request.security(syminfo.ticker, res1, hlc3)

//Moving Average
//fma = ema(mha_close[test],1)
//sma = ema(ha_close,sloma)
//plot(fma,title="MA",color=black,linewidth=2,style=line)
//plot(sma,title="SMA",color=red,linewidth=2,style=line)
bfma = ema(bmha_close[test],1)
bsma = ema(bha_close,sloma)
plot(bfma,title="MA",color=black,linewidth=2,style=line)
plot(bsma,title="SMA",color=red,linewidth=2,style=line)
//Strategy
//golong =  crossover(fma,sma) 
//goshort =   crossunder(fma,sma)
golong =  crossover(bfma,bsma) 
goshort =   crossunder(bfma,bsma)
strategy.entry("Buy",strategy.long,when = golong)
strategy.entry("Sell",strategy.short,when = goshort)