
この戦略は,指数移動平均 (EMA) と移動平均 (MA) の交差を基に取引信号を生成するショートラインオプション取引戦略である. 急速なEMA上をゆっくりとしたMAを通過すると,買い信号を生成し,急速なEMA下をゆっくりとしたMAを通過すると,売り信号を生成する.
この策略は,2つの異なるパラメータであるEMAとMAを使用して計算される.それぞれ,高速EMAと遅いMAである.高速EMAパラメータは50で,遅いMAパラメータは100に設定されている.EMA指数移動平均は価格変化により迅速に反応し,MA単純な移動平均は価格変化により遅い反応をする.
短期的な価格上昇が加速すると,急速なEMAは,緩やかなMAより先に上方突破し,買入シグナルを生成する.これは,市場の短期的な看板感情が増加したことを意味し,買入するか,看板オプションを購入することを考えることができる.
短期的な価格下落が加速すると,急速なEMAは,緩やかなMAが下方突破する前に,セールシグナルを生じます.これは,市場の短期的な看落の感情が増加していることを意味し,看落のオプションを売却または購入することを考えることができます.
EMA/MAの交差によって,短期的な価格変化の傾向と市場情緒を判断し,適時なオプション取引を実施し,より短い線の価格変動から利益を得ることができます.
この戦略の主な利点は以下の通りです.
迅速に対応し,短線価格の変動を把握する.高速EMAと遅いMAの交差形成信号によって,短期的な下落の変化を素早く発見する.
シンプルで簡単に実行する. 複雑な計算をせずに,移動平均の交差を観察するだけです.
柔軟な利用,オプションまたは正株の取引.信号に応じて看板オプションを購入し,看板オプションを売却することも,直接正株を多価または短価にすることもできます.
制御可能なリスク,明瞭な止損メカニズム. プレセット可能な止損ポイント,単一損失の制御.
この戦略にはいくつかのリスクがあります.
誤信号と振動の危険がある.急激なEMA/MAは,頻繁に交差する可能性があるため,取引が頻繁に開設され,取引コストと実施の難しさが増加する.適切な止損幅を緩め,過度の取引を避ける.
大盘が継続的に弱くなると損失が生じやすい。戦略はショートラインを握るのが主であり,継続的な下落の動きの場合,ストープは頻繁にトリガーされることがあります。このとき,戦略の使用を一時停止し,待機状態に切り替えて大盘が暖まるのを待つことを検討することができます。
大事な出来事による株価の異常波動のリスクに注意する必要があります. 大事な出来事の発生時には,株価が異常波動を起こし,停止が突破され,または大きな損失を招く可能性があります. この段階で戦略取引を使用するかどうかを十分に考慮する必要があります.
この戦略は以下の方向から最適化できます.
変動率に基づく止損調整 ダイナミックな止損を採用し,株価変動率に応じてリアルタイムで止損幅を調整する 止損が衝撃を受ける確率を減らす
複数の時間周期EMAを統合する.例えば日線と周線EMAを加え,大周期トレンドを判断し,逆転取引を避ける.
RSI指数フィルター. RSI指数に追加し,超買い超売り区を判断し,部分的なノイズ信号をフィルターする.
機械学習の変動率予測.LSTMなどの深度学習モデルを使用して,株価の変動率とリスクを予測し,ポジションとストップを動的に調整する.
このショートラインEMA/MA交差戦略は,高速EMAと遅いMAの交差によって価格の短期的な傾向と市場の感情を判断し,価格の変化に迅速に反応し,ショートライン取引の機会を早期に掴むことができます.戦略は,実行は簡単ですが,いくつかのノイズ信号と継続的な損失のリスクもあります.ストップオプティマイゼーション,多時間周期,RSIフィルタリング,機械学習などの統合により,戦略の収益を高め,リスクを制御する前提で,エスカレートすることができます.
/*backtest
start: 2023-01-09 00:00:00
end: 2024-01-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Backtest single EMA cross", overlay=true)
qty = input(100000, "Buy quantity")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ?
#00FF00 : na
testPeriod() => true
ema1 = input(50, title="Select EMA 1")
ema2 = input(100, title="Select EMA 2")
expo = ema(close, ema1)
ma = ema(close, ema2)
avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)
p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)
longCondition = crossover(expo, ma)
shortCondition = crossunder(expo, ma)
exitlongCondition = crossunder(expo, ma)
exitshortCondition = crossover(expo, ma)
if testPeriod()
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor = #FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)