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


作成日: 2024-02-01 11:52:15 最終変更日: 2024-02-01 11:52:15
コピー: 0 クリック数: 773
1
フォロー
1617
フォロワー

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

概要

この戦略は,MACD指標とランダムな指標の組み合わせに基づく暗号通貨取引戦略である.これは,ビットコインの価格のMACD指標を計算し,それにランダムな指標を適用することによって,暗号通貨市場の傾向の変化を捉えるための取引信号を生成する.

戦略原則

この戦略はまずMACD指標を計算する.MACDは,移動平均の収束距離を代表する,トレンド追跡指標である.それは,快線と慢線で構成され,快線は,より短期間の指数移動平均であり,慢線は,より長期の指数移動平均である.快線上での慢線を横切ると,金叉信号が,市場が看板に転向することを示す.快線下での慢線を横切ると,死叉信号が,市場が看板に転向することを示す.

MACD指標を計算した後,この策略はMACD指標自身にランダムな指標%Kを適用する.ランダムな指標%Kの計算式は次のとおりである.

%K = (現在の閉店価格 - N日間の最小価格) / (N日間の最大価格 - N日間の最小価格) * 100

ランダムな指標は,株価が最近の範囲から外れている変化を反映している. 20%Kの値が20-80の間の波動は,株価の動きが整合範囲にあることを示している. 20%Kが20ラインを上から下へと渡るときは,買い信号である. 80%Kが80ラインを上から下へと渡るときは,売り信号である.

この戦略は,MACD指数とランダムな指数%Kの取引シグナルを組み合わせて,仮想通貨市場で取引する.ランダムな指数%Kが上向きに20を突破すると買入シグナルが生じ,ランダムな指数%Kが下向きに80を突破すると売りシグナルが生じます.

戦略的優位性

この戦略は,トレンド分析と超買い超売り指標を組み合わせて,市場の重要な転換点を効果的に識別することができる.%KとMACDの組み合わせを使用すると,MACDまたはランダムな指標を単独で使用するよりも,信号の信頼性を高め,偽信号を減らすことができます.

また,この戦略は,株式市場でよく使用される技術指標を,暗号通貨取引に適用します.これは,市場間の化用です.この指標は,デジタル通貨市場にも同様に適用され,デジタル通貨の高変動性により,より優れた効果が得られます.

リスクと解決策

この戦略の最大のリスクは,暗号通貨市場の高度な波動性であり,偽のシグナルが取引の損失につながる可能性が高いことです.また,技術指標がシグナルを発信するときに,価格が一定量の変化がすでに発生している可能性があり,トレンドの初期段階を十分に捉えることができないリスクがあります.

これらのリスクを制御するために,利潤をロックするために移動停止を採用し,損失をさらに拡大しないようにすることをお勧めします. 同時に,異なる周期長さを使用してより多くの潜在的な機会を掘り出すためにパラメータを適切に調整することもできます.

戦略最適化の方向性

第一に,この戦略は,ブリン帯のような波動率指標と移動平均を組み合わせて,波動率パラメータを設定して,突破の有効性を認識し,偽信号を回避することを試みることができる.

2つ目は,機械学習モデルを導入して,歴史的なデータで訓練し,ランダムな森林またはLSTMニューラルネットワークモデルを構築し,指標信号の有効性を判断することができます.

3つ目は,リスク管理のために,価格が不利な方向に移動すると一定幅を超えると,自動的にストップを実行するストップメカニズムを増やす.

要約する

この戦略は,MACD指数とランダムな指数%Kを組み合わせて,二つの指標が相互に信号を検証する方法を活用して,暗号通貨の取引戦略を策定する.この組み合わせ指数戦略は,ある程度信号の正確性を向上させることができる.しかし,我々はまた,指標の組み合わせがあまりにも複雑にもたらす可能性があるノイズとラギング効果を警戒する必要がある.パラメータ設定とリスク管理は同様に重要であり,異なる市場環境に応じて調整して最適化する必要がある.

ストラテジーソースコード
/*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)