
双均線金叉死叉戦略は,比較的一般的なトレンド追跡戦略である.この戦略は,2つの異なる周期の平均線を使用し,それらの交差状況に基づいて市場のトレンドを判断し,取引を行う.具体的には,短周期平均線上の長周期平均線を横断すると金叉信号が生じ,価格が上昇傾向に入ると考えられ,購入することができる.短周期平均線の下の長周期平均線を横断すると,死叉信号が生じ,価格が下降傾向に入ると考えられ,販売することができる.
この戦略は主に6周期,14周期,25周期および80周期のEMA平均線を使用する.戦略はまず4つの平均線の値を計算し,それから6周期EMAと他の3つの平均線の交差状況に基づいて市場の動きを判断する.
6周期EMAで14周期または25周期EMAを穿い,そして6周期EMAが80周期EMAより高いとき,買入シグナルが生じます.これは,短期平均線が中長期平均線を突破していることを示し,市場が上昇傾向に入る可能性があるので,買入を検討することができます.
逆に,6周期EMAが14周期または25周期EMAを下回り,80周期EMAを下回ると,売り込み信号が生じます.これは,短期平均線が中長期平均線に突破され,市場が下向きに進む可能性があり,売り込みを検討することができます.
取引シグナルが生じると,戦略はポジションを買い,または売る.さらに,戦略は,損失が設定された停止比率を超えると,戦略はポジションを退出してリスクを制御する.
この戦略の利点は以下の通りです.
平均線交差判断の傾向は,より成熟した,信頼できる技術指標である.
同時に,多周期平均線を組み合わせることで,誤判の確率を減らすことができる。6周期平均線は取引信号を生成する責任があり,14周期・25周期平均線は確認として,80周期平均線は全体的なトレンドを判断する。
損失のリスクをコントロールするために,ストップを設定することで,資金を効果的に保護できます.
戦略の論理はシンプルで明快で,理解し,検証しやすい.
市場状況に応じて平均線周期を調整し,戦略パラメータを最適化することができる.
この戦略にはいくつかのリスクがあります.
震動的な状況では,均線は複数の無効交差を生じ,無効取引を過剰に発生させる可能性があります.均線周期最適化を適切に調整することができます.
固定ストップ方式は機械的すぎる可能性があり,追跡ストップまたはダイナミックストップに変更できます.
大幅な空飛ぶことにより,止損が突破されるリスクがある.追加条件を組み合わせて止損をスキップ判断することができる.
短期的な価格変動に反応できない.他の指標と組み合わせて,取引信号をフィルターすることができる.
参数最適化スペースは限られている。自適應均線に改良を試みることができる。
この戦略は以下の点で最適化できます.
異なる均線周期の組み合わせをテストし,市場に対してより敏感な周期パラメータを見つけます.
ストップ・メカニズムを改良し,ストップ・トラッキングまたはダイナミック・ストップを使用し,ストップ・ストップが突破される確率を減らす.
KDJ,MACDなどの他の指標をフィルターに追加し,波動中に無効取引を過剰に発生させないようにする.
入場条件を最適化し,均等線が完全に交差した後に入場し,偽信号を減らす.
適応平均線を使用し,市場の変動に応じて平均線周期パラメータを自動的に調整する.
市場状況に応じてポジションを調整する新ポジション管理機構
ストップ・アウト・メカニズムが追加された.
概要として,この双均線金叉死叉戦略は,単純な均線交叉原理によって市場動向を判断し,実行しやすい,リスクは制御可能であり,中長期のトレンドを追跡するのに適しています.しかし,この戦略は,最適化できる余地が大きい.入場条件,止損方法,指標フィルターなどの面で改善され,市場環境に適した戦略が作られます.全体的に言えば,この戦略は,基本的傾向に従って戦略であり,利点とリスクは制御可能な範囲内であり,学ぶことと実践する価値があります.
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = " bhramaji EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")
stopLoss = input(20, title = "Stop loss percentage(0.1%)")
maSource = input(defval = close, title = "MA Source")
maLength6 = input(defval = 6, title = "MA Period 6", minval = 1)
maLength14 = input(defval = 14, title = "MA Period 14", minval = 1)
maLength25 = input(defval = 25, title = "MA Period 25", minval = 1)
maLength80 = input(defval = 80, title = "MA Period 80", minval = 1)
ma6 = ema(maSource, maLength6)
ma14 = ema(maSource, maLength14)
ma25 = ema(maSource, maLength25)
ma80 = ema(maSource, maLength80)
ma_6_plot = plot(ma6 , title = "MA 6", color = red, linewidth = 2, style = line, transp = 50)
ma14_plot = plot(ma14, title = "MA 14", color = green, linewidth = 2, style = line, transp = 50)
ma25_plot = plot(ma25, title = "MA 25", color = blue, linewidth = 2, style = line, transp = 50)
ma80_plot = plot(ma80, title = "MA 80", color = silver, linewidth = 2, style = line, transp = 50)
longEMA = (crossover(ma6, ma14) or crossover(ma6, ma25)) and (ma6>ma80)
exitLong = (crossunder(ma6, ma14) or crossunder(ma6, ma25))
shortEMA = (crossunder(ma6, ma14) or crossunder(ma6, ma25)) and (ma6< ma80)
exitShort =(crossover(ma6, ma14) or crossover(ma6, ma25))
if (longEMA)
strategy.entry("LongId", strategy.long)
if (shortEMA)
strategy.entry("ShortId", strategy.short)
if (UseStopLoss)
strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)