
双均線交差ショートライン戦略は,シンプルで効率的なショートライン取引戦略である.この戦略は,価格と移動平均の交差信号を買い売り信号として利用し,ショートライン内の価格の傾向的な波動を捕捉する.
双均線交差策略は,2つの異なる周期の移動平均を使用し,より短いMA線とより長いMA線である.短期MA線が下方から長期MA線を突破すると買入シグナルを生成し,短期MA線が上方から下方から長期MA線を突破すると売り出シグナルを生成する.
この策略は,まず,length変数指定の長周期MAの長さを50で定義し,その後,priceをクローズオフ価格と定義し,lengthのMA線値を計算し,ma変数に保存する.また,bcondを定義して,priceがma値より高いかどうかを判断し,bcount+1で0になる.bcondが連続してconfirmBarsを触発する場合は,購入シグナルを生成する.逆に,priceがmaより低ければ,同じ論理で販売シグナルを生成する.
部分的に無効な信号をフィルターするために,戦略は3つのフィルター条件clc,clc0およびclc1を追加した.この3つの条件は,現在の周期と前回の周期の閉盘価格の大きさの関係,および現在の周期の閉盘価格と開盤価格の大きさの関係を判断し,同時に満たされれば,信号を生成することを許可した.
最後に,価格が再び上位に転落したり,下位に突破したりすると,それぞれ,相応の多ポジションまたは空ポジションを平らげる.
リスクを軽減するために,市場の変動率の動向に応じて平均線パラメータを調整することを考えることができます.また,離散ストップまたはパーセントストップを採用して,ストップポイントを柔軟に調整できるようにすることもできます.
この戦略は以下の点で最適化できます.
平均線システムのパラメータを最適化します.例えば,市場変動率などの指標の動態に応じて平均線長さを調整します.
信号品質を向上させるために,交差量急増などの追加フィルタリング条件を追加する.
浮動式止損またはパーセント止損などの止損戦略を最適化して,早期止損の可能性を減らす.
MACD,RSIなどの他の指標と組み合わせて,多要素検証を行い,信号の有効性を高めます.
自動リスク管理策の追加,例えば,ポジションの規模を動的に調整し,単一損失を制御する.
購入・販売のシグナルに対して,機械学習の手法を加え,より正確なシグナル判断モデルを構築する.
双均線交差ショートライン戦略は,全体として非常に実用的なショートライン取引戦略であり,操作が簡単で,実行しやすいという利点があります.しかし,揺れ動いている市場の偽信号を制御することに注意し,ダイナミックパラメータの最適化などの改善を行うことが必要で,この戦略を最大限に活用することができます.ストップマネジメントとリスク管理手段を組み合わせて,戦略の安定性をさらに向上させることができます.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close
ma = sma(price, length)
bcond = price > ma
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]
if clc and clc0 and clc1 and (bcount == confirmBars)
strategy.entry("buy", strategy.long)
scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]
if csc and csc0 and csc1 and (scount == confirmBars)
strategy.entry("sell", strategy.short)
strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)