
この戦略は,双順位指数と移動平均線指数を融合し,双順位指数を使用して市場のトレンド方向を判断し,移動平均線を利用してトレンド確認を行う.これはトレンド追跡戦略の1つである.止損を組み合わせてリスクを制御する.これはより安定した戦略の1つである.
昨日の閉店価格と指定期間の最高価格のSMA平均を構成する上線と,昨日の閉店価格と指定期間の最低価格のSMA平均を構成する下線を計算する.
現在の閉盘価格と上線,下線との関係を比較し,現在のトレンド方向を判断する.閉盘価格が上線より高く,多頭として判断する.閉盘価格が下線より低く,空頭として判断する.
中長線のトレンドの判断基準として,200周期の閉盘価格SMA平均線を計算する.
多頭判定では,閉盘価格が下方向からSMA平均線を突破すると,買入シグナルを生成する.空頭判定では,閉盘価格が上方向から下方向からSMA平均線を突破すると,売り出せシグナルを生成する.
多頭ポジションに入った後,閉盘価格を下回ると上線を打つ,平仓信号として;空頭ポジションに入った後,閉盘価格上下線を打つ,平仓信号として。
固定比率のストップ・ロスを設定し,閉盘価格の下でのストップ・ロスを破ればストップ・ロスの項目をアクティブにする.
双順位指標を用いてトレンドの方向を判断し,トレンドを効果的に識別し,正しい方向への入入りの確率を高めることができる.
均線が加えられ,部分的なノイズ信号をフィルタリングして,震動状況で誤取引を避ける.
単一損失のリスクをコントロールするために,ストップ・ロスを採用することで,過大な損失を効果的に回避できます.
戦略操作は比較的シンプルで,理解しやすい実装で,初心者練習者にも適しています.
双順位指標はパラメータ設定に敏感であり,異なる周期パラメータの組み合わせは,結果の差異が大きくなるため,パラメータの最適化には慎重にテストする必要があります.
平均線が長すぎると取引機会が多く消える.平均線が短すぎると,消音効果が悪くなります.平均線周期パラメータの設定を权衡する必要があります.
ストップポイントがあまりにも広く設定されれば,よいリスク管理ができない.あまりにも狭い場合は,価格の通常の変動によって引き出されやすい.
戦略はパラメータ最適化に依存し,パラメータが正しく設定されていない場合,トレンドの方向を正しく識別できず,取引決定の誤りにつながる可能性があります.
異なる周期パラメータの組み合わせをテストして,双順位指標がトレンドをより正確に判断できるパラメータを探します.
異なる周期の平均線指標をテストして,消音効果と信号保持のバランスをとる最適な平均線パラメータを見つけることができる.
市場変動の程度に応じて自主的に調整するストップ・メカニズムを設計し,市場状況に近いストップ・ペーストを試すことができる.
戦略の安定性を高めるために,量値確認,複数時間枠の通行など,他の指標を添加することも試すことができます.
最適化された策略は,パラメータが安定していることを確認するために,ウォークフォワード分析を使用して検証することができます.
この戦略は双順位指数と移動平均線の優位性を統合し,パラメータの最適化余地のあるトレンド追跡戦略に属している.合理的なパラメータの設定と最適化により,優れた戦略パフォーマンスを得ることができる.しかし,パラメータの過剰最適化のリスクを制御し,パラメータの安定性を保証する注意が必要です.全体的に,この戦略は,戦略探索と学習のケースとして使用するのに適しています.
/*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))