この戦略は,動向平均値とストック指標を,トレンド追跡と過買い/過売り検出の両方の能力を備えた定量的な取引システムに組み合わせます. 傾向を体系的に特定し機会を把握するための複数の指標の強みを統合します.
戦略論理:
トレンド指向を決定するために,長期MAと短期EMAを計算する.
過剰購入/過剰販売レベルを特定するために,ストックKとD値を計算する.
ストックK&Dがオーバー買いラインを超えると ロングします
CLOSEがEMAを下回り,K&Dがoversold線を下回るとショートします
COLOR を使って,決まった取引方向を表示します.
利点:
二重MAはトレンドの正確性を向上させ 誤った信号を回避します
ストックは高い確率で買い/売るゾーンを特定します
指標を組み合わせることで 検証によって信頼性が向上します
リスク:
パラメータの調節が不十分で 信号が過剰に 矛盾する
MAとSTOCHの両方が遅滞して 早期または遅延したエントリーを引き起こす可能性があります
信頼性が向上したにもかかわらず,より多くの指標はより複雑になります.
概要すると,この戦略は,トレンドのためのMAとオーバーバイト/オーバーセールレベルのストックを使用して定量的に取引する.強力なパラメータ最適化により,システムの安定性と信頼性を向上させることができます.しかし,慎重なリスク管理は依然として必要であり,投資家は裁量力を適用する必要があります.
/*backtest start: 2023-08-12 00:00:00 end: 2023-09-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy("PMB2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 20, initial_capital=1000, currency=currency.USD) //study(title="PMB2", overlay=true) l_ma = input(50, title="MA (green)", type=input.integer) l_ema = input(25, title="EMA (red)", type=input.integer) MA = sma(close,l_ma) EMA = ema(close,l_ema) plot(MA, color=color.green) plot(EMA, color=color.red) //STOCH(14,3,3) length = input(20, minval=1, title="STOCH - K") smoothK = input(2, minval=1, title="STOCH - D") smoothD = input(2 , minval=1, title="STOCH - Smooth") StkLong= input(50 , minval=1, maxval=100, title="Long when Close > MA and Stoch > ") StkShort= input(80 , minval=1, maxval=100, title="Short when Close < EMA and Stoch < ") k = sma(stoch(close, high, low, length), smoothK) d = sma(k, smoothD) //plot(k, color=color.blue, title="STOCH - K") //plot(d, color=color.orange, title="STOCH - D") //band180 = hline(80, title="STOCH - Banda superior") //band120 = hline(20, title="STOCH - Banda superior") //band100 = hline(50, color=color.gray, editable=false, linestyle=hline.style_solid) //fill(band180, band120, color=color.gray, transp=75, title="STOCH - Fundo") BTStartY = input(title="Strategy Test Start Year", type=input.integer, defval=2019, minval=2010, maxval=2100) BTStartM = input(title="Strategy Test Start Month", type=input.integer, defval=1, minval=1, maxval=12) BTStartD = input(title="Strategy Test Start Day", type=input.integer, defval=1, minval=1, maxval=31) BTStopY = input(title="Strategy Test Stop Year", type=input.integer, defval=2019, minval=2010, maxval=2100) BTStopM = input(title="Strategy Test Stop Month", type=input.integer, defval=12, minval=1, maxval=12) BTStopD = input(title="Strategy Test Stop Day", type=input.integer, defval=31, minval=1, maxval=31) // set up min and max date for strategy test TMin = timestamp(BTStartY, BTStartM, BTStartD, 00, 00) TMax = timestamp(BTStopY, BTStopM, BTStopD, 00, 00) InTime = true bool long = false, short = false, trade = false trade := trade[1] long := long[1] short := short[1] if (crossover(close, MA) and k > StkLong and d > StkLong) // "LONG!" //if (close > MA and k > StkLong and d > StkLong) // "LONG!" short := false long := true trade := true // LONG if (crossunder(close, EMA) and k < StkShort and d < StkShort) // "SHORT!"" //if (close < EMA and k < StkShort and d < StkShort) // "SHORT!"" long := false short := true trade := false // SHORT //bgcolor(FL > SH ? color.green : FH < SL ? color.red : na, transp=80) bgcolor(trade ? color.green : color.red, transp=90) //alertcondition((crossover(close, MA) and k > 50 and d > 50) , title='Buy', message='Buy') //alertcondition((crossunder(close, EMA) and k > 80 and d > 80) , title='Sell', message='Sell') if ((crossover(close, MA) and k > StkLong and d > StkLong) and InTime) //if ((close > MA and k > StkLong and d > StkLong) and InTime) strategy.entry("Long", strategy.long) if ((crossunder(close, EMA) and k < StkShort and d < StkShort) and InTime) //if ((close < EMA and k < StkShort and d < StkShort) and InTime) strategy.entry("Short", strategy.short)