ハイキン・アシとカウフマン 適応型移動平均取引戦略

作者: リン・ハーンチャオチャン開催日:2023年12月19日 15:51:30
タグ:

img

概要

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

戦略の論理

この戦略の主な構成要素は以下の通りである.

  1. ハイキン・アシの開閉価格を計算する.これらの価格は,キャンドルボディの平均価格を反映し,いくつかのノイズをフィルタリングすることができます.

  2. カウフマン適応移動平均 (KAMA) を計算する.KAMAは動的にそのスムーズさを調整することができ,急激な市場変動の間にあまりにも遅れることはありません.

  3. ハイキン・アシ・ローズとKAMAの関係を比較して,買い・売るシグナルを決定する. ハイキン・アシ・ローズがKAMAを横切ると,買い信号が生成される. ハイキン・アシ・ローズがKAMAを下回ると,売る信号が生成される.

  4. ADX インディケーターを追加して,トレンドの強さを判断し,レンジ・バインド市場での間違った信号を避ける.

利点分析

この戦略の最大の利点は,騒々しい取引と間違ったシグナルを大幅に減らすことができるハイキンアシキャンドルとKAMAの二重フィルターです. 具体的な利点は:

  1. ハイキン・アシのろうそくには 短時間変動をフィルターで排除する 騒音削減機能があります
  2. KAMA は SMA と EMA より敏感で,主要なレベルでのトレンド変化を効果的に追跡することができます.
  3. ハイキン・アシとKAMAのダブルフィルターの組み合わせにより,誤差が減少します.
  4. ADXインジケーターは,誤った信号を避けるためにトレンドの強さを決定するように設定できます.
  5. トレーディング・シグナルは直接的で操作が簡単で柔軟です

リスク分析

  1. いくつかの市場では誤った信号が発生する可能性があります.このリスクを避けるために,パラメータを相応に調整する必要があります.
  2. 過度に敏感なパラメータは 簡単にピークを追いかけて 底部を殺すことができます. KAMAパラメータは適切にリラックスする必要があります.
  3. 長期トレンド市場では,KAMAは価格変動に若干遅れることがあります. ADXはトレンドの安定性を決定するために組み合わせなければなりません.

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

  1. 最適なフィルタリング条件を見つけるために ハイキン・アシ・クローズとKAMAパラメータを最適化します
  2. ADX などのトレンド判断指標を追加し,トレンドが安定しているときにのみ取引信号が生成されることを保証します.
  3. ストップ・ロスの基準を設定するために,ボリンジャー・バンドなどの他の補助指標を組み合わせます.
  4. パラメータの安定性を異なる製品でテストし,最適なパラメータの組み合わせを見つけます.

概要

ハイキンアシとカウフマン適応型移動平均取引戦略 (Heikin Ashi and Kaufman Adaptive Moving Average Trading Strategy) は,デュアルフィルタートレンド追跡戦略である.ハイキンアシのキャンドルと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)





もっと