
この戦略は,MACD指数に基づく動量反転取引戦略である.それは,高速移動平均と遅い移動平均の差値を計算することによって,MACD指数を生成する.MACD指数が正の転移すると,売り信号を生成する.MACD指数が負の転移すると,買い信号を生成する.この戦略は,MACD指数の信号ラインの平滑処理と組み合わせて,部分的に騒音取引信号をフィルターする.
この戦略の核心指標はMACDであり,それは急速な移動平均,遅い移動平均,信号線で構成されています.まず,急速なEMAと遅いEMAを計算し,急速なEMAのパラメータを12日,遅いEMAのパラメータを26日と設定し,その両者の差をMACD指標として計算します.MACD指標は,動力の概念によって,株価の変化の傾向を反映します.急速なEMAの上昇幅が遅いEMAよりも大きい場合,株式は上昇傾向にあり,MACDは正である;逆に,株式は下落傾向にあり,MACDは負である.
騒音をフィルターするために,この戦略は信号線指標を導入し,MACDをさらに平滑に処理する.信号線パラメータは9日EMAに設定する.最後に,MACDと信号線の差値を取引信号として計算する.差値が正から負に変化すると,売り信号を生じ,差値が負から正に変化すると,買い信号を生じする.
この戦略の利点は以下の通りです
MACD指標は,株価の逆転点を判断し,株価の短期的な逆転の機会を捉える.
信号線の平滑処理と組み合わせて,部分的なノイズ取引信号をフィルタリングし,偽信号を減らす.
戦略のパラメータは自由に設定され,トレーダーは実際の状況に応じてパラメータを調整し,市場の変化に柔軟に対応することができます.
計算論理はシンプルで明快で,簡単に理解できる実装で,初心者の学習研究に適しています.
指標と信号の組み合わせは多様で,戦略の最適化には大きな余地があり,強力な拡張性がある.
この戦略にはいくつかのリスクがあります.
株価の短期的な反転を追跡することで,取引頻度と取引コストが増加する可能性があります.
MACD指数は,株価が長期にわたって片側で上昇または下落する過程で,偽信号を生じやすい.
パラメータが不適切であれば,信号が遅延し,最適なエントリーポイントを逃す可能性があります.
この戦略は単純で,複雑な市場条件下では取引効果は割引されます.
リスクの改善には,以下の方法があります.
取引頻度を下げるパラメータを最適化する.例えば,信号線周期パラメータを拡大する.
フィルタリング条件を追加し,長期のトレンドに閉じ込められることを避ける.例えば,他の追跡指標と組み合わせて長期短期のトレンドを判断する.
限られた価格のリストを使って,最高の価格を追跡する.
市場を判断する要素を追加し,異常な市場での取引を避ける.
この戦略は,以下の点で最適化できます.
MACDパラメータと信号ラインパラメータを最適化して,最適なパラメータの組み合わせを探します.
他の補助指標を追加して長期短期トレンドを判断し,逆転取引を避ける.例えば,移動平均指標,ボリンジャーバンド指標などを追加する.
エネルギー潮指数などの取引量指数と組み合わせて,偽突破を避ける.
異なる株の特徴に基づいてパラメータを設定し,戦略をより適応的にします.
ストップ・ロズとストップ・ストップ・価格の設定を増やし,単一損失と利益のレベルを制御する.
株の質を評価する.例えば,財務指標,評価の変化など.優良株のプールを選択する.
これらの最適化策は,戦略の安定性,勝率,収益性を向上させ,継続的な開発と改善の基礎を築く.
この戦略は,典型的な短期逆転取引戦略である.これは,シンプルで明確なMACD指標を使用して,株式の動量の変化を反映し,シグナルラインで特定の入場ポイントを決定する.適切なパラメータを設定すると,短期価格逆転の機会を掴み,余分な利益を得ることができる.
もちろん,いかなる単一の指標や単純な戦略も,さまざまな複雑な市場状況に完璧に適応することは難しい.投資家は,リスクに注意を払い,自分の状況とリスクの好みに応じて戦略を選択し,市場動向,戦略パラメータの最適化および取引規則に継続的に注意を払う必要があります.
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//study(title="MACD Strategy by Sedkur", shorttitle="MACD Strategy by Sedkur")
strategy (title="MACD Strategy by Sedkur", shorttitle="MACD Strategy by Sedkur")
// Getting inputs
dyear = input(title="Year", type=input.integer, defval=2017, minval=1950, maxval=2500)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
buyh = input(title="Buy histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
sellh = input(title="Sell histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
strategy.entry("buy", strategy.long, comment="buy", when = hist[1] <= hist and buyh<=hist and year>=dyear)
strategy.entry("sell", strategy.short, comment="sell", when = hist[1] >= hist and sellh>=hist and year>=dyear)