反転ブレイクアウト加重移動平均戦略


作成日: 2023-11-28 14:11:33 最終変更日: 2023-11-28 14:11:33
コピー: 0 クリック数: 640
1
フォロー
1617
フォロワー

反転ブレイクアウト加重移動平均戦略

概要

この戦略の主な考えは,価格の反転を重み付け,移動平均線近くの重要なサポートまたは抵抗領域を利用して,ポジションを構築することです.価格が暴走または暴落後に反転を重み付け,サポートまたはプレッシャーが形成され,反転の機会が生まれる可能性があります.

戦略原則

この戦略は,加重された移動平均線指標に基づいて,まず一定の長さの加重された移動平均線を計算し,その後,価格が一定の幅の突破が発生するかどうかを監視する.価格が平均線を突破する一定の距離に達すると,矢印の指示を描き,ポジションを確立する.多頭に入ると,価格が一定幅の突破が最初に起こる.空頭に入ると,価格が一定幅の突破が最初に起こる.

戦略は,追跡ストップを使用するか,または固定ストップ距離を使用するかを選択するトレイルパラメータを使用します. ストップの幅を調整することでリスクを制御できます. 制限価格単一のパラメータを使用して部分利益をロックします. また,時間フィルターを使用して特定の時間帯の開設を制限することもできます.

優位分析

この戦略の最大の利点は,逆転の状況と平均線を組み合わせて,市場の重要なポイントを特定して開口することにある.逆転戦略の勝負比率は通常優れ,リスクは容易に制御される.同時に,この戦略は,完善な止損機構,および利益の一部をロックする方法も提供しており,これらはリスクを軽減し,安定性を高めるのに役立ちます.

移動平均線に基づいて構築されているため,パラメータ最適化の余地が広く,平均線長さ,突破幅などのパラメータを調整することによって,異なる市場の適応性をテストすることができます.

リスク分析

この戦略の最大のリスクは逆転の失敗である. 価格が逆転のシグナルを形成した後に,停止または停止を成功なくして,元の方向を継続した場合,大きな浮動損失が形成される.

また,パラメータ最適化への依存度が高いため,パラメータ設定が不適切であれば,価格逆転のタイミングを逃すか,偽信号を生成する可能性がある.市場行動を十分に理解し,テストし,パラメータ設定を慎重に評価する必要がある.

最適化の方向

信号の質と精度を高めるために,より多くの指標を追加することを考えることができます.例えば,価格の反転信号が現れる前に,一定の期間中の増量,特に短期周期増量データを検出し,価格の変動特性を判断することができます.または,一定の定量化因子を追加して,価格の動力,変動率などの特性の値を検出し,多因子モデルを構築できます.

また,機械学習の方法も試すことができる.これは,過去の取引信号と価格データを記録し,価格の次の動きを判断するモデルを訓練する.これは偽信号をフィルターし,信号の質を向上させるのに役立ちます.

さらに,実際の取引結果に応じて,動的にパラメータまたはルール重みを調整し,戦略の自己最適化とENOを実現する.

要約する

この戦略は,全体的に安定して動作し,合理的なパラメータスペースと市場環境下では,良い収益を得ることができます.最大の利点は,リスクが制御可能であり,一定の最適化潜在性を持っています.次のステップでは,信号品質の向上と自己適応最適化能力の増大に焦点を当てます.継続的な最適化後に,この戦略は,投資ポートフォリオの有力な選択肢になることができると信じています.

ストラテジーソースコード
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="WMA Breakout",overlay=true, initial_capital=25000, default_qty_value=1, commission_type=strategy.commission.cash_per_contract, commission_value=3.02)
len = input(20, minval=1, title="Length")
src = input(close, title="Source")
out = wma(src, len)
price_drop = input(.003, "When price drops (In Ticks) Enter Long", step=.001)
price_climb = input(.003, "When price climbs (In Ticks) Enter Short", step=.001)
trail = input(true, "Trailing Stop(checked), Market stop(unchecked)")
stop = input(10, "Stop (in ticks)", step=1)
limit = input(5, "Limit Out", step=1)
//size = input(1, "Limit Position Size (pyramiding)", minval=1)
timec = input(true, "Limit Time of Day (Buying Side)")


//Time Session
sess = input("1600-0500", "Start/Stop trades (Est time)")
t = time(timeframe.period, sess)
//plots
plot(wma(src,len))
z = if low+price_drop<out
    (out-low)
plotarrow(z, colorup=red)

a = if high-price_climb>out
    (high-out)
plotarrow(a, colorup=lime)
av=wma(src,len)

//Orders
if(timec)
    strategy.entry("Enterlong", long=true, when=z and t>1)
else
    strategy.entry("Enterlong", long=true, when=z)
if(trail)
    strategy.exit("Exit","Enterlong", profit=limit, trail_points = 0, trail_offset = stop )
else
    strategy.exit("Exit","Enterlong", profit=limit, loss = stop )
    
if(timec)
    strategy.entry("Entershort", long=false, when=a and t>1)
else
    strategy.entry("Entershort", long=false, when=a)
if(trail)
    strategy.exit("Exit","Entershort", profit=limit, trail_points = 0, trail_offset = stop )
else
    strategy.exit("Exit","Entershort", profit=limit, loss = stop )