
この戦略は,主にEMA移動平均線とMACD指標を使用して,市場状況のタイプ化の変化を判断し,落の追跡操作を行う. 核心的な考え方は,短期EMA線が下から長期EMA線を突破し,MACDが同時に上0軸を横切るときに,多めにすること. 短期EMAが上から長期EMAを突破し,MACDが同時に下0軸を横切るときに,空いてすること.
この戦略は,移動平均指標とMACD指標を融合したものです.
まず,25周期EMA線と50周期EMA線である2つの異なる長さの周期のEMA指標を使用する.25周期EMA線は短期トレンドを反映し,50周期EMA線は中長期トレンドを反映する.短期EMA線が下から長いEMA線を横切るときは,下から上へ転がり,金叉信号に属し,多判断する.短期EMA線が上から下から長いEMA線を横切るときは,上から上へ転がり,下へ転がり,死叉信号に属し,空き判断する.
次に,この戦略は同時にMACD指数判断信号と組み合わせます. DIF線とDEA線を含むMACD指数は,短期と長期の指数平滑移動平均の差値を表し,二重EMAで計算されます. この戦略はDIFを12日EMA減26日EMAに設定します. DEA線はDIFの9日指数移動平均になります.
この2つの指標を組み合わせると,25日EMA金叉50日EMAが起こり,同時にMACDのDIF線がDEA線を貫通すると,買入信号が生じ,多作;25日EMA死叉50日EMAが起こり,同時にMACDのDIF線がDEA線を貫通すると,売り信号が生じ,空作.
これは非常に典型的な二線戦略であり,MACD指数と組み合わせると,より信頼性の高い取引シグナルを生み出し,以下の利点があります.
双EMA均線を使用することで,ウイップソーや偽ブレイクが避けられ,より信頼性の高い取引シグナルが生成されます.
MACD指標を統合することで,取引信号をさらに検証し,EMAの二重線偽信号のリスクを回避し,戦略の実戦効果を向上させる.
25日線と50日線を快速線として採用し,パラメータ選択がより正確で,中短線で明らかな傾向変化を捉える.
市場が大きく上昇したり下落したりするときに,大きな利益を得るために,大盤指数で勝てるように,追いつく方法を使う.
戦略の論理はシンプルでわかりやすく,理解しやすく,実行しやすく,量化初心者の使用に適しています.
策略が異なる品種や状況に適した最適化パラメータを慎重に適正に設定する.
この戦略にはいくつかの危険性があります.
EMA平均線が偽信号を発生させる可能性は依然として存在し,極端な状況では,whipsaw現象が起こるだろう.
MACD指標のパラメータは,常に最適化および調整する必要があります.そうでなければ,誤信号または信号遅延が生じます.
破局の失敗が大きな損失を招くのを防ぐために,警戒するストップ・ロズポイントの設定が合理的であるかどうか.
市場や政策環境の変化に注目し,システムリスクによる大きな損失を避ける必要があります.
ポジションの規模とレバレッジのレベルを制御し,一方的な大市場爆発を防ぐ必要があります.
この戦略は,以下の側面から最適化できます.
より正確で実戦に有効なパラメータの組み合わせをテストする.例えば,取引軌道として20日および60日EMA平均線をテストし,10日EMAおよび20日EMA差値のDIFなど.
取引量指標の確認を増やして,低量の偽突破を避ける.
ATRのような波動率指標と組み合わせて,より科学的ストップ・ローズを決定する.
機械学習アルゴリズムを使用して,戦略パラメータを動的に市場環境の変化に適応させるため,パラメータを自動的に最適化します.
ポジション管理モジュールが追加され,ポジションの規模が取引のパフォーマンスや指標の動態の変化を測定できます.
戦略信号はより長い周期のグラフに描画され,意思決定のより長線方向の操作を補助することができる.
この策略は,移動平均指標とMACD指標の優位性を統合し,双EMA平均線によって質がより高いK線分型を判断し,DIFとDEAによってMACD動量方向のマッチングを判断し,安定した,実戦的な効果が優れている追尾落下型化策略を形成している.この策略の論理は,簡潔でわかりやすく,理解し,最適化することが容易であり,化学者入門と実戦に最適である.パラメータを継続的にテストし,最適化することにより,この策略は,ランニングインデックスに価値のある策略の1つになることができる.
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="EMA+MACD", shorttitle="EMA+MACD", overlay=true)
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
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="Oscillator MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"])
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
len1 = input(title="Len Ema 1 ",type=input.integer,defval=25)
len2 = input(title="Len Ema 2 ",type=input.integer,defval=50)
ema1 = ema(src,len1)
ema2 = ema(src,len2)
bull = crossover(ema1,ema2) and macd > 0
bear = crossover(ema2,ema1) and macd < 0
l1 = bull ? label.new(x=bar_index,y=low,yloc=yloc.belowbar,text="BUY",color=color.green,textcolor=color.white,style=label.style_triangleup) : na
l2 = bear ? label.new(x=bar_index,y=high,yloc=yloc.abovebar,text="SELL",color=color.red,textcolor=color.white,style=label.style_triangledown) : na
strategy.entry("LONG",strategy.long,when=bull)
strategy.entry("SHORT",strategy.short,when=bear)