この戦略は,dojiキャンドルスティックパターンを特定し,SMAを組み合わせて取引の逆転を決定する.dojiパターンが形成され,オープン/閉鎖価格がSMAラインの外にあるとき,取引信号を生成する.ブリーッシュ信号は,ハンギングマンラインで,下落信号はショットスターラインで生成される.
この戦略の主な原則は以下のとおりです.
オープン/閉鎖価格と全体的な価格動きの範囲を計算することによってドジパターンを特定する.
前回の閉じる値が現在の高値/低値以上/低値を下回っているかどうかを確認し,誤った信号を避ける.
逆転信号を生成するために,SMAラインとの関係で開/閉価格を判断する.
適格なドジパターンが特定されたときに長/短信号を生成する.
コードの主なステップは:
SMA線を計算する
ろうそくをループしてドジパターンを識別する
過去の近値と現在の高値/低値関係をチェックする
オープン/クローズおよびSMA関係に基づく反転信号の確認
信号マークをプロットし,長/短信号を出力する
この戦略の利点は以下の通りです.
ドジパターンは明確で,簡単に識別/実装できます.
SMAフィルターは 偽信号を減らすのに役立ちます
明確なロング/ショートシグナルは取引を簡単にする.
逆転取引は短期的な傾向を把握します
柔軟なパラメータは,異なる市場状況に適応できます.
簡単に理解し 実行し 初心者向けです
いくつかの潜在的なリスク:
単一のパターンに依存し 偽の脱出に 傾向がある
損失を制御するストップ損失メカニズムがない
パラメーターの調節が悪ければ 取引が過剰になる
トレンドに依存し トレンド市場での業績が低い
パラメータの最適化によって性能が向上します
解決策:
他のフィルターを追加して信号を確認します.
リスク管理のためにストップロスを実行する.
パラメータを最適化し 取引頻度を制限する
主に範囲限定市場で使用します
継続的なバックテストと最適化
戦略を改善する方法:
音量フィルターを追加して 偽のブレイクを避ける
ストップ・ロスのメカニズムを実装する
市場状況や動向に 基づいてパラメータを最適化します
MACD,KDJなどなどの信号の確認のために他の指標を追加します.
逆トレンド取引を避けるためにトレンド決定を追加します.
頻度と質をバランスさせるため,見直し期間を最適化します.
この戦略は,効率的な逆転取引のためにSMAとドジパターンを使用する. シンプルなルールと簡単な取引のような利点があります. しかし,リスクと改善の分野もあります. 継続的な最適化により,堅牢な短期取引システムになることができます.
[/トランス]
/*backtest start: 2022-09-20 00:00:00 end: 2023-09-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Doji Reversal", overlay=true) smaPeriod = input(title="SMA Period", defval=10, minval=0) tolerance = input(title="Tolerance", defval=0.1, minval=0) lookbackEnd = input(title="End", defval=2, minval=0) avg = sma(close, smaPeriod) signal_long = bool(false) signal_short = bool(false) for i = 1 to lookbackEnd is_doji = (abs(close[i] - open[i]) / (high[i] - low[i])) < tolerance signal_long := signal_long or ( is_doji and (close[i-1] <= high[i] or i == 1) and close[i-1] > high[i] and high[i] < avg and close > open ) signal_short := signal_short or ( is_doji and (close[i-1] >= low[i] or i == 1) and close[i-1] < low[i] and low[i] > avg and close < open ) plotshape(signal_long, "LONG", style=shape.triangleup, size=size.normal) plotshape(signal_short, "SHORT", style=shape.triangledown, size=size.normal) strategy.entry("LONG", strategy.long, when=signal_long) strategy.entry("SHORT", strategy.short, when=signal_short)