EMAストップロスの2重SSL戦略

作者: リン・ハーンチャオチャン,日付: 2023-11-06 16:52:11
タグ:

img

概要

この戦略は,市場トレンド方向を決定するためにダブルSSL指標と移動平均指標を統合し,トレンド確認のための移動平均値を使用している.これはトレンドフォロー戦略に属している.リスク制御にストップロスを追加することで,比較的安定した戦略である.

戦略の論理

  1. 上方レールを計算するには,指定された期間の最高価格のSMAを昨日の閉店と比較して計算する.下方レールを計算するには,指定された期間の最低価格のSMAを昨日の閉店と比較して計算する.

  2. 現在の閉店価格を上下レールと比較して現在のトレンド方向を決定する.閉店価格が上下レールの上にある場合,トレンドは上昇傾向と判断される.閉店価格が下下レールの下にある場合,トレンドは下落傾向と判断される.

  3. 閉店価格の200期SMAを中長期トレンドの基準として計算する.

  4. ブライッシュの場合,閉値がSMAを下から突破した場合,購入信号が生成されます.ベアシスの場合,閉値がSMAを下から突破した場合,販売信号が生成されます.

  5. ロングポジションに入ると,閉じる価格が上部レールの下を突破した場合,それは閉じる信号です.ショートポジションに入ると,閉じる価格が下部レールの上を突破した場合,それは閉じる信号です.

  6. ストップ・ロスのポイントを固定する. ストップ・ロスのポイントを下回る場合はストップ・ロスのオーダーが起動します.

利点

  1. 傾向の方向性を決定するためにダブルSSLインジケーターを使用することで,傾向を効果的に特定し,正しい方向への進出の可能性を高めることができます.

  2. 移動平均値を加えると 騒音信号をフィルタリングして 不安定な市場での間違った取引を 避けることができます

  3. ストップ・ロスを使って単一の取引リスクをコントロールすることで,過剰な損失を効果的に回避できます.

  4. 戦略論理は比較的シンプルで理解しやすいので,初心者が練習するのに適しています.

リスク

  1. デュアルSSL指標はパラメータ調整に敏感で,異なる期間の組み合わせは非常に異なる結果をもたらすことができます.パラメータは慎重に最適化する必要があります.

  2. 長期にわたるMAは,多くの取引機会をフィルタリングし,短すぎるMAは,効果的に否定することができません.バランスのとれたMA期間を使用する必要があります.

  3. ストップ・ロスの範囲があまりにも広い場合,リスクは効果的に制御できないが,狭すぎると,通常の価格変動が引き起こす可能性がある.ストップ・ロスの範囲は慎重に設定する必要があります.

  4. この戦略はパラメータ最適化に大きく依存する.間違ったパラメータはトレンドを正しく識別できず,間違った取引決定につながる可能性があります.

オプティマイゼーションの方向性

  1. 異なる期間の組み合わせをテストし,Dual SSL指標の傾向決定の精度を向上させるパラメータを見つけます.

  2. デノイジングと保存信号の最適なバランスを求めるために,異なる周期MAsを試験する.

  3. ストップ・ロスは,市場変動によって調整され,ストップ・ロスはより迅速に対応できる.

  4. 安定性を向上するために,ボリューム,多時間枠の合流など,他の確認指標を組み込む.

  5. 安定性を確保するために,最適化された戦略について,前向きな分析を行うべきである.

結論

この戦略は,デュアルSSL指標と移動平均の強みを組み合わせている.パラメータ最適化の大きな可能性があるため,トレンドフォロー戦略である.合理的なパラメータチューニングと最適化により,良い結果が得られる.しかし,強固性を確保するためにオーバーフィッティングのリスクは制御されるべきである.全体的に,この戦略は探求と学習のための良い例として機能する.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@Isaac
//Estrategia vista en ▼▼
//YT: Trading Zone
strategy('SSL Strategy + EMA 200 AND Stop Loss', overlay=true)

ema = ta.ema(close, 200)

stop_loss = input.float(2.00, title='Stop Loss', step=0.10)

period = input(title='Period', defval=10)
len = input(title='Period', defval=10)
smaHigh = ta.sma(high, len)
smaLow = ta.sma(low, len)
Hlv = int(na)
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh


cruceArriba = ta.crossover(sslUp, sslDown)
cruceAbajo = ta.crossunder(sslUp, sslDown)

alcista = (close > ema ) and (cruceArriba) 
bajista = (close < ema) and (cruceAbajo)

var SL = 0.0
//Cerrar compra por cruce
por_cruce = ta.crossunder(sslUp, sslDown)

//Cerrar venta por cruce
por_cruceAB = ta.crossunder(sslDown, sslUp)

//Cerrar compra y venta por stop loss
Stop = SL

comprado = strategy.position_size > 0
vendido = strategy.position_size < 0

UTmpconvertL = strategy.position_avg_price * (1 + 0.1)
UTmpdefineL = (UTmpconvertL > close and strategy.openprofit > 0.1)
UTSPL = UTmpdefineL

SPL = UTSPL

///////////////////////////////////////////////////////////////////////

UTmpconvertLS = strategy.position_avg_price * (1 + 0.1)
UTmpdefineLS = (UTmpconvertLS > close and strategy.openprofit > 0.1)
UTSPLS = UTmpdefineLS

SPLS = UTSPLS

////////////////////////////////////////////////////////////////////////

if not comprado and not vendido and alcista
    cantidad = (strategy.equity / close)
    strategy.entry('Compra', strategy.long, qty=cantidad, comment="Long")
    SL := sslDown


if comprado and not vendido and por_cruce and SPL
    strategy.close("Compra", comment="Exit Long")
    SL := 0
    
if comprado and not vendido and Stop
    strategy.exit('Compra', stop=Stop, comment="SL")
    SL := 0

///////////////////////////////////////////////////////////////////

if not comprado and not vendido and bajista
    cantidad = (strategy.equity / close)
    strategy.entry('Venta', strategy.short, qty=cantidad, comment="Short")
    SL := sslDown

if not comprado and vendido and por_cruceAB and SPLS
    strategy.close("Venta", comment="Exit Short")
    SL := 0
    
if not comprado and vendido and Stop
    strategy.exit('Venta', stop=Stop, comment="SLS")
    SL := 0



plot(Stop > 0 ? Stop : na, style=plot.style_circles, color=color.new(color.yellow,0))
plot(ema)
plot(sslDown, linewidth=2, color=color.new(color.red, 0))
plot(sslUp, linewidth=2, color=color.new(color.lime, 0))




もっと