
二重移動平均突破戦略 (Dual Moving Average Breakout Strategy) は,高速移動平均線と遅い移動平均線をベースにした量的な取引戦略である.これは,2つの異なる周期の指数移動平均線 (EMA) を取引信号として使用する.高速移動平均線の上部に遅い移動平均線を突破すると,買入信号が生じる.高速移動平均線下部に遅い移動平均線を突破すると,売り信号が生じる.
この戦略の核心的な論理は,高速移動平均線と遅い移動平均線を使用して取引信号を形成することです.戦略では,高速移動平均線周期は12日,遅い移動平均線周期は26日と定義されています.計算方法は次のとおりです.
急速な移動平均線と遅い移動平均線の交差によって市場の傾向を判断し,取引シグナルを生成する,典型的な双移動平均線戦略である.
双移動均線突破戦略には以下の利点がある.
双動均線突破策にはリスクもあります.
解決策は
双移動均線突破戦略は,以下の点で最適化できる.
双移動均線突破戦略は,シンプルで実用的な量化取引戦略である.戦略の論理がシンプルで,実行しやすいという利点があるが,市場適応性の問題もある.パラメータ最適化,シグナルフィルタリング,リスク管理などの方法によって,安定した利益を得る取引システムにすることができる.全体的に,双移動均線戦略は,非常に良い戦略の原型であり,量化トレーダーに深入な研究と応用が価値ある.
/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("CDC Action Zone V.2", overlay=true)
// CDC ActionZone V2 29 Sep 2016
// CDC ActionZone is based on a simple 2MA and is most suitable for use with medium volatility market
// 11 Nov 2016 : Ported to Trading View with minor UI enhancement
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"])
src = input(title="Data Array",type=input.source,defval=ohlc4)
prd1=input(title="Short MA period", type=input.integer,defval=12)
prd2=input(title="Long MA period",type=input.integer,defval=26)
AP = ema(src,2)
Fast = ema(AP,prd1)
Slow = ema(AP,prd2)
Bullish = Fast>Slow
Bearish = Fast<Slow
Green = Bullish and AP>Fast
Red = Bearish and AP<Fast
Yellow = Bullish and AP<Fast
Blue = Bearish and AP>Fast
Buy = Bullish and Bearish[1]
Sell = Bearish and Bullish[1]
alertcondition(Buy,"Buy Signal","Buy")
alertcondition(Sell,"Sell Signal","Sell")
//Plot
l1=plot(Fast,"Fast", linewidth=1,color=color.red)
l2=plot(Slow,"Slow", linewidth=2,color=color.blue)
bcolor = Green ? color.lime : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
fill(l1,l2,bcolor)
// === INPUT BACKTEST RANGE ===
FromYear = input(defval = 2000, title = "From Year", minval = 1920)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 1921)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
if LSB == "Long only" and Buy and window()
strategy.entry("L",true)
if LSB == "Long only" and Sell and window()
strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Buy and window()
strategy.entry("L",true)
if LSB == "Both" and Sell and window()
strategy.entry("S",false)
if LSB == "Short only" and Sell and window()
strategy.entry("S",false)
if LSB == "Short only" and Buy and window()
strategy.close("S",qty_percent=100,comment="TP Short")