この戦略は,
この戦略は,まずストック指標を使用して,パラメータオシレータPeriodを5に設定したカスタムオシレータを画し,統合領域を構築するために上位および下位しきい値k1およびk2を設定します.ストックストック指標値が統合領域に入ると,逆転の機会がある可能性があることを示します.
RSIの指標は,RSIの上限と下限の市場浸透のタイミングを効果的に特定することができます.この戦略は,RSIの過買いラインを70で,過売りラインを30で設定します.
さらに,戦略は,主要トレンドフィルターとしてトレンドアクティビティファクタも導入しています.ストキャスト指標とRSIが同時に逆転条件を満たす場合,ショック市場の偽ブレイクによる損失を避けるのに十分な主要なトレンドがまだ活発かどうかをチェックします.
最後に,この戦略は,一般的なリスクを制御するために,クラシックなマルティンゲールポジション平均化原理を使用します. 取引量を動的に調整することで,初期ポジションが損失状態にあるとき,追加ポジションを配置し,ブレイクブーンを達成し,最大引き下げを制御します.
RSI インディケーターを組み込むことで,逆転のタイミングを判断するのに役立つ過剰購入と過剰売却現象を効果的に特定できます.
オシレーターを設定して 固化領域を決定すると 誤ったブレイクシグナルが フィルタリングされます
主なトレンドフィルターを設定することで 不安定な市場での損失を回避できます
マルティンゲール・ポジション平均化によって 戦略の最大引き上げが効果的に制御され 持続的な収益性の鍵となります
異常な市場状況下では,RSIインジケーターが失敗し,過剰購入および過剰販売状況の誤った判断を引き起こす可能性があります.このリスクは特に注意する必要があります.
振動器のパラメータ設定が正しくない場合,過剰な信号フィルタリングや偽ブレイクの識別も起こり得る.これは,過去の市場データに基づくパラメータ最適化を必要とする.
マルティンゲールポジション平均化によって,特定の環境下では損失が連続して発生します.追加のロット数が大きすぎると,口座の枯渇のリスクが大きくなります.
この戦略は15分間のGBPUSD通貨ペアのデータのみで検証されています.他の市場や他の期間にデータフィッティングリスクがある可能性があります.
RSIのパラメータを最適化して,現在の市場環境に適したパラメータを見つける.
オシレーターのパラメータをテストし最適化して 統合領域をより正確に判断できるようにします
ストップロスのロジックを追加します. 損失が一定のレベルに達すると,単一の損失を効果的に制御するために,損失を積極的に停止します.
主なトレンドフィルターの設定ルールを最適化して,逆転の機会を逃さないようにする.
異なる追加の位置サイズ設定をテストします. 迅速な損失を引き起こすために,追加の量はあまりにも大きくないことを確認する必要があります.
この戦略は,二重移動平均指標,RSI指標およびカスタムオシレーターを組み合わせて,短期的に上限と下限の突破現象を判断し,効率的なスカルピング取引のために偽のブレイクアウトを避けるためにメイントレンドフィルターを使用する.同時に,一般的なリスクレベルを制御するためにクラシックマルティンゲールポジション平均化原則が導入される.この戦略は,パラメータ最適化と厳格なリスク管理の後,安定したリターンを生み出す可能性がある.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © cloudofw //@version=5 strategy("F2.2 Martingale Scalping Strategy", overlay=true) // Input parameters rsiOverbought = input.int(70, "RSI Overbought Threshold") rsiOversold = input.int(30, "RSI Oversold Threshold") oscillatorPeriod = input.int(5, "Period for oscillator") k1 = input.float(0.2, "K1 for oscillator's zone") k2 = input.float(0.5, "K2 for oscillator's zone") trendActivity = input.float(1.0, "Main Trend filter", minval=0.1) decreasePerOrder = input.float(0.1, "Trend filter decrease per order", minval=0.01) // Calculate custom oscillator and RSI oscillator = ta.stoch(close, high, low, oscillatorPeriod) rsiValue = ta.rsi(close, 14) zoneHigh = 100 - k1 * 100 zoneLow = k2 * 100 // Entry conditions longCondition = oscillator < zoneLow and trendActivity > 0 and rsiValue < rsiOversold shortCondition = oscillator > zoneHigh and trendActivity > 0 and rsiValue > rsiOverbought // Martingale logic var lot_multiplier = 1.0 var last_lot_size = strategy.equity * 0.01 var trade_1_profit = 0.0 if (strategy.position_size != 0) lot_multiplier := last_lot_size / strategy.position_size < 1.5 ? lot_multiplier * 1.5 : 1.0 trade_1_profit := strategy.grossprofit else lot_multiplier := 1.0 trade_1_profit := 0.0 lot_size = strategy.equity * 0.01 * lot_multiplier + trade_1_profit last_lot_size := lot_size // Trading logic if longCondition and strategy.position_size == 0 strategy.entry("Long", strategy.long) if shortCondition and strategy.position_size == 0 strategy.entry("Short", strategy.short) // Exit conditions if longCondition == false and strategy.position_size > 0 strategy.close("Long") if shortCondition == false and strategy.position_size < 0 strategy.close("Short") // Indicators on chart plotshape(series=longCondition, title="Buy Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=shortCondition, title="Sell Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") plot(oscillator, color=color.blue, title="Oscillator") hline(zoneHigh, "Upper Zone", color=color.red) hline(zoneLow, "Lower Zone", color=color.green)
張小宝郎コードシミュレーションを直接複製すると,加仓点に到達し,加仓操作が行われていないことが判明する原因は何ですか?