暗号通貨取引戦略 MACD とストカスティック指標に基づく

作者: リン・ハーンチャオチャン,日付: 2024-02-01 11:52:15
タグ:

img

概要

この戦略は,MACD指標とストーカスティック指標の組み合わせに基づいた仮想通貨取引戦略である.仮想通貨市場のトレンド変化を把握するために,ビットコイン価格のMACD指標を計算し,ストーカスティック指標を適用することによって取引信号を生成する.

戦略の論理

この戦略は,まずMACD指標を計算する.MACDは,動平均収束分岐を表す.これはトレンドフォローする指標である.これは,高速線とスローラインで構成され,高速線は短期指数的な移動平均線であり,スローラインは長期指数的な移動平均線である.高速線がスローラインを越えると,金色のクロス信号を生成し,上昇市場を示唆する.高速線がスローラインを下に越えると,死亡クロス信号を生成し,下落市場を示唆する.

MACD指標を計算した後,戦略は,MACDそのものにストカスティック指標%Kを適用する.%Kの計算式は:

%K = (現在の閉店 - N 期間の最低値) / (N 期間の最高値 - N 期間の最低値) * 100

ストキャスティック指標は,最近の範囲からの価格偏差を反映する. %K の20〜80 の間の変動は,価格が統合で取引されていることを表しています. %K が下から20を超えると,購入信号を生成します. %K が上から80を下回ると,販売信号を生成します.

この戦略は,MACDとストカスティック%Kの両方の取引信号を組み合わせて仮想通貨市場で取引します. %Kが20を超えると購入信号,%Kが80を下回ると販売信号を生成します.

戦略 の 利点

この戦略は,トレンド分析と過買い過売指標を組み合わせ,市場の重要なターニングポイントを効果的に特定することができます.MACDまたはストカスティックだけで使用すると比較して,%KとMACDの組み合わせは,取引信号の信頼性を高め,誤った信号を減らすことができます.

さらに,この戦略は,株式市場で一般的に使用される技術指標を仮想通貨取引に適用する.これはクロスマーケットアプリケーションである.これらの指標はデジタル通貨市場で同様に適用され,仮想通貨の高い変動性によりより良いパフォーマンスを発揮する可能性があります.

リスク と 解決策

この戦略の最大のリスクは,暗号通貨市場の高い変動性であり,偽信号を容易に生成し,取引損失につながります.また,指標が信号を生成するときに,価格はすでに大幅に動き,初期のトレンド信号が見逃されるリスクがあります.

これらのリスクを制御するために,移動ストップロスを利用して利益を固定し,さらなる損失を回避することが推奨されます.同時に,パラメータは,異なる時間枠の長さを使用してより多くの潜在的な機会を発見するために適切に調整することもできます.

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

まず,戦略は,ボリンジャーバンドなどの変動指標と移動平均を組み合わせ,ブレイクアウトの有効性を特定し,誤った信号を避けるため波動性パラメータを設定することができます.

次に,機械学習モデルが導入され,歴史的なデータに基づいて訓練され,指標信号の有効性を判断するのに役立つランダムフォレストまたはLSTMニューラルネットワークモデルを確立することができます.

3つ目にストップロスのメカニズムを追加します.価格が一定の範囲を超えて不利な方向に動くと,リスクを制御するために自動的にストップロスを起動します.

結論

この戦略は,MACD指標とストカストティック指標%Kを組み合わせ,暗号通貨の取引戦略を策定するために2つの指標からの信号を相互検証する方法を用いる.この組み合わせ指標戦略は,信号の精度を一定程度向上させることができる.しかし,ノイズと遅れの影響をもたらす可能性がある指標の過剰な複雑性のリスクも認識する必要があります.異なる市場環境に応じて適切なパラメータ調整とリスク管理は,より良い戦略パフォーマンスを獲得するために同様に重要です.


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

//@version=3
strategy("Schaff Trend Cycle Strategy", shorttitle="STC Backtest", overlay=true)

fastLength = input(title="MACD Fast Length",  defval=23)
slowLength = input(title="MACD Slow Length",  defval=50)
cycleLength = input(title="Cycle Length",  defval=10)
d1Length = input(title="1st %D Length",  defval=3)
d2Length = input(title="2nd %D Length",  defval=3)
src = input(title="Source", defval=close)
highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true)

macd = ema(src, fastLength) - ema(src, slowLength)
k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))
d = ema(k, d1Length)
kd = nz(fixnan(stoch(d, d, d, cycleLength)))

stc = ema(kd, d2Length)
stc := 	stc > 100 ? 100 : stc < 0 ? 0 : stc

upper = input(75, defval=75)
lower = input(25, defval=25)

long =  crossover(stc, lower) ? lower : na
short = crossunder(stc, upper) ? upper : na

long_filt = long and not short
short_filt = short and not long

prev = 0
prev := long_filt ? 1 : short_filt ? -1 : prev[1]

long_final = long_filt and prev[1] == -1
short_final = short_filt and prev[1] == 1

//alertcondition(long_final, "Long", message="Long")
//alertcondition(short_final,"Short", message="Short")

//plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar)
//plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar)

strategy.entry("long", strategy.long, when = long )
strategy.entry("short", strategy.short, when = short)


もっと