この取引戦略は,コムボアプリケーションのための移動平均逆転と三重底フラッシュ技術指標の利点を完全に利用します.トレンドを追跡しながら逆転機会を捉え,いくつかの偽のブレイクアウト信号をフィルタリングし,取引システムの勝利率を効果的に改善することができます.
戦略は2つの部分からなる.
2 日間移動平均と 20 日間移動平均の組み合わせです. 2 日間移動平均が 20 日間移動平均から逸脱したとき,買い売りシグナルが生成されます.
トリプルボトムフラッシュパターン.このパターンの出現は短期的な逆転の信号である.形成条件は:中日の最低値は前日と翌日よりも低く,翌日の閉値値は前日の最高値よりも高くなります.
2日間の移動平均値と 20日間の移動平均値が同時に逆転信号を表示し,三重底フラッシュパターン信号の方向に一致すると,買取または売却アクションをとる.
このコードでは,2日間の移動平均値と20日間の移動平均値が最初に計算されます. 2日間の移動平均値が20日間の移動平均値を上下に突破すると,買い/売り信号が生成されます.
トリプルボトムフラッシュパターンが検出されると,パターン方向信号は1または-1に設定されます. 前日のパターン信号を読み,現在の移動平均信号と組み合わせ,最終入力信号を生成します.
移動平均値とパターンの組み合わせでフィルタリングすることで,いくつかの誤った信号がフィルタリングされ,取引戦略がより信頼性が高くなります.
複数の技術指標を組み合わせることで 互いを補完し,検証し,信号の信頼性を向上させることができる.
移動平均逆転は,トレンドの逆転点をタイムリーに把握し,逆転を活用することができます.三重底部フラッシュは逆転形成をさらに確認できます.
20日移動平均は中期と長期のトレンドを追跡し,2日移動平均は短期調整後のエントリーポイントを記録する.複数のタイムフレームの組み合わせによりトレンドを完全に把握することができます.
戦略はパラメータに敏感ではなく,実行し最適化するのが簡単です.
逆転パターンは誤判に易いので,信頼性を判断するには経験が必要です.
逆転信号が遅れる場合があり,パターンの特徴を観察し,適切な位置調整が必要です.
テストと最適化は異なる取引品種のために必要であり,いくつかのパラメータを調整する必要があるかもしれません.
損失制御には,重要な逆転点を見逃すのを避けるために,ストップ損失メカニズムを導入する必要があります.
異なる移動平均の組み合わせをテストし,品種に最適なパラメータを選択します.
複数指標の検証のために,ボリンジャー帯など他の補助指標を導入する.
ストップ・ロスのモジュールを追加して,引き下げとリスクを制御します.
早期または遅い問題を避けるために 入場時間を最適化します
適応性を向上させるため,特定の品種のためのパラメータ最適化を行う.
この戦略は,移動平均逆転と短期パターンの利点を充分利用し,両者の効果的な組み合わせを達成し,取引システムの安定性と勝利率を改善することができます. しかし,リスク制御,パラメータテストおよび最適化は,異なる品種の特性に適応するために必要です. 全体的に,戦略は,実行が簡単でシンプルで明確な構造を有し,実践的なトレンド逆転取引戦略です.
/*backtest start: 2022-10-19 00:00:00 end: 2023-10-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 25/12/2021 // This is combo strategies for get a cumulative signal. // // First strategy // This indicator plots 2/20 exponential moving average. For the Mov // Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met. // // Second strategy // This startegy based on 3-day pattern reversal described in "Are Three-Bar // Patterns Reliable For Stocks" article by Thomas Bulkowski, presented in // January,2000 issue of Stocks&Commodities magazine. // That pattern conforms to the following rules: // - It uses daily prices, not intraday or weekly prices; // - The middle day of the three-day pattern has the lowest low of the three days, with no ties allowed; // - The last day must have a close above the prior day's high, with no ties allowed; // - Each day must have a nonzero trading range. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// EMA20(Length ) => pos = 0.0 xPrice = close xXA = ema(xPrice, Length) nHH = max(high, high[1]) nLL = min(low, low[1]) nXS = iff((nLL > xXA)or(nHH < xXA), nLL, nHH) pos := iff(nXS > close[1] , -1, iff(nXS < close[1] , 1, nz(pos[1], 0))) pos BarR()=> pos = 0.0 pos := iff(open[2] > close[2] and high[1] < high[2] and low[1] < low[2] and low[0] > low[1] and high[0] > high[1], 1, iff(open[2] < close[2] and high[1] > high[2] and low[1] > low[2] and high[0] < high[1] and low[0] < low[1], -1, nz(pos[1], 0))) pos strategy(title="Combo 2/20 EMA & 3 Day Pattern", shorttitle="Combo", overlay = true) var I1 = "●═════ 2/20 EMA ═════●" Length = input(14, minval=1, group = I1) //var I2 = "●═════ 3-Bar-Reversal-Pattern ═════●" var misc = "●═════ MISC ═════●" reverse = input(false, title="Trade reverse", group = misc) var timePeriodHeader = "●═════ Time Start ═════●" d = input(1, title="From Day", minval=1, maxval=31, group=timePeriodHeader) m = input(1, title="From Month", minval=1, maxval=12, group=timePeriodHeader) y = input(2005, title="From Year", minval=0, group=timePeriodHeader) StartTrade = true prePos3Bar = BarR() posEMA20 = EMA20(Length) pos3BarR = security(syminfo.tickerid, "D", prePos3Bar[1], barmerge.gaps_off, barmerge.lookahead_on) pos = iff(posEMA20 == 1 and pos3BarR == 1 and StartTrade , 1, iff(posEMA20 == -1 and pos3BarR == -1 and StartTrade, -1, 0)) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1 , 1, pos)) if (possig == 1 ) strategy.entry("Long", strategy.long) if (possig == -1 ) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )