
この戦略は,双移動平均線交差技術とプレッシャー位突破技術を統合して,買取シグナルと売り出しシグナルを設定し,自動取引を実現する.短期平均線が中期平均線を下から上方突破し,株価がプレッシャー位突破したときに買取シグナルが生じる.株価が15%上昇したときにストップを設定し,3%下落したときにストップを設定する.この戦略は,市場動向を自動的に認識し,技術指標シグナルが発生したときに自動的に入場し,ストップを設定して損失リスクを制御する.これは,より成熟した量化取引戦略の1つです.
この戦略は,主に以下のいくつかの技術指標と条件の判断に基づいて取引シグナルを生成します.
双均線交差技術:20日44日単調移動平均を計算し,20日均線を44日均線に交差すると,市場が上昇傾向にあると判断し,買い信号を生成する.
プレッシャーレベル突破技術:チャートでは,株価が何度も接近したが突破できなかった位置がプレッシャーレベルと呼ばれています.株価がプレッシャーレベルを突破した後に,価格が新しい上昇段階に入ることを予告します.この戦略は,株価が取引前の最高価格の0.7%の範囲を突破すると判断した場合,突破プレッシャーレベルと見なされます.
超買い超売り指数RSI:相対的に強い指数で,市場が超買いか超売りかを判断する技術的な指標である.この戦略では,14日RSIが50より大きいときは超買い信号として設定されている.
取引量分析:過去10日間の取引量の平均を突破した取引量は,市場がより強固な買い値や売り値の出現を予兆している.
買入シグナル:短期平均線が中期平均線を突破し,株価がプレッシャーレベルを突破し,市場が過剰買い状態で,取引量が過去10日間の平均取引量より高い場合は,買入シグナルが生じます.
販売シグナル: ストップ・ストップ・損失の基準を設定し,株価が買取価格より15%上昇した場合にストップする. 3%下落した場合にストップする.
この戦略は,複数の技術指標を総合的に使って市場の構造を判断し,その指示トレンドが現れたときに自動的に取引シグナルを生成し,より成熟した完全な量化取引戦略に属します.
市場構造を判断し,市場動向を安定的に捉えるための均線技術;
取引量分析を組み合わせて,取引量と合わない偽のブレイクでポジションを開くのを避ける.
ストップ・ストップ・ストップ・アウト・メカニズムを設定することで,単一取引のリスク/利益の比率を制御し,損失の拡大を防ぐことができます.
この戦略は,市場構造を正確に判断し,取引規則を厳格にし,リスクをコントロールし,結果的に良い量化策である.
双対線取引システムはパラメータ設定に敏感であり,異なる時間段のパラメータは調整する必要がある.
単にトレンドを追跡するだけの戦略で,大きな利潤空白のニュースの前には必ずストップ・ロスを受けるような突発的な出来事に対して反応することができない.
ストップ・ストップ・ロスは設定されていますが,取引回数が多い場合,ストップ・ロスは避けられないほど多く,利益レベルが不均衡になるリスクがあります.
長期的に見ると,技術指標が信号を発するタイミングは,市場が逆転する最適なタイミングを過ぎていることが多い.
パラメータ最適化方法を使用して,最適の双均線パラメータの組み合わせを探し,停止停止損失レベルを最適化できます.
他の指標の判断,例えばブリン帯の解消範囲,MACDの解消超買超売等を追加し,信号発信のタイミングを向上させる.
基本的またはニュース面的な判断を増やして,重大なネガティブなニュースの被害を防ぐこと.
固定数量取引,固定金比率取引などの資金管理戦略を最適化して,単一リスクを制御する.
この戦略は,全体的に順調に動作し,判断は正確で取引規則は厳格で,リスクはコントロールされ,効果の高い量化戦略の1つです. しかし,技術面取引戦略は,市場構造の判断に限界があります. 最適化の余地は,他の指標判断と基本情報面の総合的な考慮を加えることにある. さらに,停止・損失設定と資金管理戦略の最適化も重点です. 全体的に,この戦略は,技術指標戦略として高いレベルに達していますが,次のステップは,基本情報面の全市場サイクル戦略の方向性を推進する最適化の継続が必要です.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Advanced Strategy with Conditional Stop Loss", overlay=true)
// Parameters
ma_length_20 = 20
ma_length_44 = 44
ma_length_100 = 100
rsi_length = 14
volume_length = 10
profit_target = 1.15 // 15% above the buy price
stop_loss_target = 0.97 // 3% below the buy price
wait_candles = 10 // Number of candles to wait after selling, unless MA cross condition met
// Indicators
moving_average_20 = ta.sma(close, ma_length_20)
moving_average_44 = ta.sma(close, ma_length_44)
moving_average_100 = ta.sma(close, ma_length_100)
rsi = ta.rsi(close, rsi_length)
volumeAvg = ta.sma(volume, volume_length)
// Variables to manage the wait period after a sell
var int last_sell_candle = 0
// Update last sell candle
if (strategy.position_size[1] > 0 and strategy.position_size == 0)
last_sell_candle := bar_index
// Trend identification
uptrend = close > moving_average_20
above_ma20_by_1_percent = close > moving_average_20 * 1.01
ma_cross = ta.crossover(moving_average_20, moving_average_44) or ta.crossunder(moving_average_20, moving_average_44)
close_near_high = (close >= high * 0.993) and (close <= high)
// Buy condition (only in uptrend, above 1% from 20-day MA, and respecting new filter)
can_buy_after_cross = ma_cross and close > high[1]
can_buy_after_wait = (bar_index - last_sell_candle) > wait_candles
buy_condition = (can_buy_after_cross or can_buy_after_wait) and uptrend and above_ma20_by_1_percent and close > moving_average_44 and close > moving_average_100 and close > high[1] and rsi > 50 and volume > volumeAvg and not close_near_high
// Entry
if (buy_condition and strategy.position_size == 0)
strategy.entry("Buy", strategy.long)
// Exit conditions
if (strategy.position_size > 0)
// Profit target
profit_level = strategy.position_avg_price * profit_target
strategy.exit("Take Profit", "Buy", limit=profit_level)
// Dynamic Stop Loss - Check on every bar if the price has dropped 3% below the buy price
stop_loss_level = strategy.position_avg_price * stop_loss_target
if (low < stop_loss_level)
strategy.close("Buy", comment="Stop Loss")
// Plotting
plot(moving_average_20, color=color.green, title="20-Day Moving Average")
plot(moving_average_44, color=color.blue, title="44-Day Moving Average")
plot(moving_average_100, color=color.red, title="100-Day Moving Average")