
この戦略は,特定の株式または仮想通貨の潜在的突破機会を探すために二重均線システムを使用する.その基本原則は,短期均線が長期均線より下回転したときに株式または仮想通貨を購入すること.価格が長期均線を再テストしたときに株式または仮想通貨を売却することである.
この戦略は,2つの異なる周期の単純移動平均 ((SMA)) を取引信号として使用する.最初のSMA周期は長いが,全体的なトレンドの方向を表している.第二のSMA周期は短いが,短期間の価格変動を捕捉するために使用される.
短期SMAが下から長期SMAを穿戴すると,価格が全体的に上昇傾向にあることを代表するので,戦略は多頭ポジションを開きます.価格が下がると,長期SMAを再テストすると,短期プルバックが終了することを予告します.この時,戦略は,ストップ損失または利益を考慮して,ポジションを終了します.
さらに,戦略は,極端な状況での取引を避けるために,超売りと超買い条件を設定しています. 二重均線交差と合理的な評価条件を同時に満たしている場合にのみ,ポジションを開きます.
この戦略はさらに改善できる余地があります.
この戦略は,トレンド追跡と回調取引の優位性を統合し,双均線システムを使用して機会の出現を判断する.同時に,特定の超買い超売り条件を内蔵し,不要なポジションを開くのを避ける.これは非常に実用的な量化取引戦略であり,深入な研究と最適化の価値があります.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2 = (ma2/ma1-1) < too_deep
too_thin2 = (ma2/ma1-1) > too_thin
// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1 = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na
// Entry and close orders
if buy_condition
strategy.entry('Long',strategy.long)
if buy_condition[1]
buy_price := open
if close_condition1 or close_condition2
strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
buy_price := na
plot(ma1,color = color.blue)
plot(ma2,color = color.orange)