これは短期 (1-5分) フォレックス取引戦略で,主に潮流理論におけるボリューム価格関係と複数のステップEMAを使用して,短期トレンド追跡取引のためのトレンド逆転点を予測します.この戦略は高周波取引に適しています.
この戦略の取引信号は2つの部分から生まれます
ボリューム平均価格に基づくボリューム価格関係判断.具体的には,戦略は,バリーッシュとベアシストレンドの変化を判断するために,異なる期間のボリューム平均価格のEMA (設定可能) を計算する.短期間EMAが長期間EMAを超越した場合,それはバリーッシュ信号とみなされる.短期間EMAが長期間EMAを下回ると,それはベアシス信号とみなされる.
ステップEMAによって判断されるトレンド逆転シグナル.ステップEMAは,10日,20日,50日など,異なるパラメータを持つ複数のEMAを設定することを指します.トレンド逆転をそれらの順序に従って判断します.短期のEMAが長期のEMAを先行した場合,トレンドが逆転していることを意味します.
この戦略は,これらの2つの信号を組み合わせてエントリーを決定する.特に,ボリューム価格関係が上昇傾向であると判断され,STAIRSTEP EMAが複数のEMAが上昇傾向になっていることを示した場合,ロングポジションが取られる.逆に,ボリューム価格関係が下落傾向であると判断され,STAIRSTEP EMAが複数のEMAが下落傾向になっていることを示した場合,ショートポジションが取られる.
この戦略は,音量平均価格と複数のEMAの利点を組み合わせ,信号の正確性と安定性を向上させることができます.
平均価格をベースに物価関係を判断することは,価格EMAの判断よりも正確であり,価格変動が強くなると誤導されるのを避ける.
階段 EMA は,異なるパラメータ EMA の順序で判断の次元を増加させ,単一の EMA の騒音を回避することができます.
この2つの信号の組み合わせにより,相互検証が可能になり,誤った信号は減少します.
高周波の短期取引に適しており,範囲内の小さな逆転機会を迅速に捉えることができます.
戦略パラメータは,さまざまな種類と周波数に最適化するために柔軟に設定できます.
この戦略にはいくつかのリスクもあります:
過剰に技術指標に依存しているため,不安定な市場状況によって誤導される可能性があります.
短期取引は取引コストに比較的敏感で,スリップと手数料は十分に管理する必要がある.
短期EMAパラメータは頻繁に最適化する必要がある.そうでなければ無効になるかもしれない.
価格差は必ずしも逆転を招かないが,判断が誤る危険性がある.
複数のEMAの順序は完全に信頼性がないし,判断に誤りがある可能性があります.
対策:
もっと基本的な判断の要素を組み合わせます
ポジションを調整し,単一の取引での損失が大きすぎないようにします.
パラメータを定期的に再テストして最適化します
成功率を上げるため,主要なサポート/レジスタンスレベルに近い取引を行う.
多次元検証のための他の指標と併用する.
この戦略は,次の側面でも最適化できます.
より安定したパラメータを見つけるために,物量価格関係計算の異なる方法をテストする.
階段のEMA指標のレベルをさらに高めること
RSI,MACDなどのフィルタリングのための他の指標信号を組み合わせる.
ストップ・ロスの移動,待機中のオーダーなど,ストップ・ロスのメカニズムを最適化します.
適切なパラメータセットを開発するために,異なる取引手段の特徴に基づいてパラメータを最適化します.
マシン学習アルゴリズムを導入し ビッグデータを使って判断モデルを訓練する
決まった出口,トレンド追跡出口など,さまざまな出口戦略を探求します.
市場変化に基づいてパラメータを自動的に調整するための適応性パラメータメカニズムを導入する.
この戦略は,短期トレンド追跡取引のためのボリューム平均価格とスチールステップEMAの利点を組み合わせます.この戦略は高い安定性と精度を持っていますが,リスク管理とパラメータ最適化に注意する必要があります.他の技術指標と組み合わせた継続的な最適化とテストにより,効率的な短期取引戦略になり得ます.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 23:59:59 period: 1h basePeriod: 15m 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/ // © exlux99 //@version=5 strategy("Forex Fractal EMA Scalper", overlay=true) // Define "n" as the number of periods and keep a minimum value of 2 for error handling. n = input.int(title="Period Fractals", defval=2, minval=2, group="Optimization Parameters") src = input(hl2, title="Source for EMA's", group="Optimization Parameters") len1 = input.int(10, minval=1, title="Length EMA 1", group="Optimization Parameters") out1 = ta.ema(src, len1) len2 = input.int(20, minval=1, title="Length EMA 2", group="Optimization Parameters") out2 = ta.ema(src, len2) len3 = input.int(100, minval=1, title="Length EMA 3", group="Optimization Parameters") out3 = ta.ema(src, len3) // UpFractal bool upflagDownFrontier = true bool upflagUpFrontier0 = true bool upflagUpFrontier1 = true bool upflagUpFrontier2 = true bool upflagUpFrontier3 = true bool upflagUpFrontier4 = true for i = 1 to n upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n]) upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n]) upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n]) upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n]) upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n]) upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n]) flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4 upFractal = (upflagDownFrontier and flagUpFrontier) // downFractal bool downflagDownFrontier = true bool downflagUpFrontier0 = true bool downflagUpFrontier1 = true bool downflagUpFrontier2 = true bool downflagUpFrontier3 = true bool downflagUpFrontier4 = true for i = 1 to n downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n]) downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n]) downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n]) downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n]) downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n]) downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n]) flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4 downFractal = (downflagDownFrontier and flagDownFrontier) // plotshape(downFractal, style=shape.triangledown, location=location.belowbar, offset=-n, color=#F44336, size = size.small) // plotshape(upFractal, style=shape.triangleup, location=location.abovebar, offset=-n, color=#009688, size = size.small) long= out1 > out2 and out2>out3 and upFractal short= out1 < out2 and out2<out3 and downFractal strategy.entry("long",strategy.long,when= short) strategy.entry("short",strategy.short,when=long) tp=input(25, title="TP in PIPS", group="Risk Management")*10 sl=input(25, title="SL in PIPS", group="Risk Management")*10 strategy.exit("X_long", "long", profit=tp, loss=sl ) strategy.exit("x_short", "short",profit=tp, loss=sl )