価格波動理論と移動平均戦略に基づく


作成日: 2023-11-13 16:39:41 最終変更日: 2023-11-13 16:39:41
コピー: 1 クリック数: 643
1
フォロー
1621
フォロワー

価格波動理論と移動平均戦略に基づく

概要

この戦略は,価格波動理論と平行移動平均線を組み合わせて,トレンド形成の機会を探し,合理的なストップを設定し,ストップを追跡してリスクを制御し,利益を最大化します. 戦略は,指定された取引時間帯のみでポジションを開き,特定の時間の市場の変動を避けます.

戦略原則

  • SMMA移動平均を用いて価格平均を計算し,波動市場のノイズをぎ,トレンドの方向性を識別する
  • 価格の波動を判断し,トレンドの転換点を特定します.
  • 価格の波動が移動平均線を上回ると見上げ,下がると見上げ
  • リスク管理のためのストップポイント設定とATRベースのストップ追跡
  • 指定された取引時間でのみポジションを開設し,週末や日中の特定の時間帯の市場の変動を避ける
  • 逆転信号が出たとき,平仓停止

優位分析

  • 価格の波動理論を用いて価格の転換点を判断し,移動平均でトレンドの方向を判断することで,トレンドを効果的に識別できます.
  • ストップポイントの設定とATRの動的な追跡ストップは,1回のストップを効果的に制御できます.
  • 流動性のある取引時間のみでポジションを開設することで,不必要な滑落と特定の時間の激しい変動を回避できます.
  • パラロイドの停止を厳格に遵守し,反転信号が発生したときに停止し,最大限の利益を得ることができます.

リスク分析

  • 価格波の判断が不正確である場合,非トレンド領域で繰り返し取引される可能性があります.
  • 移動平均の遅滞は,トレンドの転換点を逃している可能性があります.
  • ストップポイントが小さすぎると ストップされる可能性が高く,大きすぎると 損失が大きくなる可能性があります.
  • 固定ストップは状況に応じて柔軟に調整できない

リスクの解決:

  • 波周期パラメータを最適化し,平移平均パラメータを調整する
  • ストキャスティクス指数などと組み合わせて反転信号を決定する
  • ダイナミック・オプティマイズ・ストップ・ポイントとストップ条件

最適化の方向

  • 波周期パラメータを最適化して,最適な平行平均周期を見つける
  • ステッチ指数判断の逆転,セット信号のフィルタリングの偽突破
  • ストップポイントとストップ位置を動的に調整します.
  • ストップポイントの帯域を広げて, ストップされるのを避ける
  • 異なる品種,取引時期による最適化パラメータ

要約する

この戦略は,価格の波浪理論と平行平均指標を統合し,指定された取引時間帯を回避した後,価格の波浪方向とトレンドの確認入場を判断し,ストップを設定し,ストップを追跡してリスクを制御し,反転信号が発生したときに停止します.戦略は,パラメータの最適化と補助指標の追加により,安定性と収益率をさらに向上させることができます.

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

//@version=4
strategy("FX Strategy Based on Fractals and SMMA", overlay=true)

// パラメータ
SMMAPeriod1 = input(30, title="SMMA Period")
StopLoss1 = input(7, title="Stop Loss %")
TrailingStopCoef1 = input(2.7, title="Trailing Stop Coefficient")
fractalPeriod = input(5, title="Fractal Period")

// SMMAの計算関数
smma(src, length) =>
    var float smma = na
    if na(smma[1])
        smma := sma(src, length)
    else
        smma := (smma[1] * (length - 1) + src) / length
    smma

// フラクタルの近似
highFractal = high[2] > high[1] and high[2] > high[3] and high[2] > high[4] and high[2] > high
lowFractal = low[2] < low[1] and low[2] < low[3] and low[2] < low[4] and low[2] < low

// エントリー条件
longEntrySignal = lowFractal and close[1] < smma(close, SMMAPeriod1)
shortEntrySignal = highFractal and close[1] > smma(close, SMMAPeriod1)

// エントリー実行
if (longEntrySignal)
    strategy.entry("Long", strategy.long)

if (shortEntrySignal)
    strategy.entry("Short", strategy.short)

// トレーリングストップの計算
atrValue = atr(10)
longStopPrice = close - atrValue * TrailingStopCoef1
shortStopPrice = close + atrValue * TrailingStopCoef1

// トレーリングストップの設定
strategy.exit("Exit Long", "Long", stop=longStopPrice)
strategy.exit("Exit Short", "Short", stop=shortStopPrice)

// バックテスト期間の設定(MetaTraderのバックテストと同じ期間)
startYear = 2007
startMonth = 05
startDay = 01
endYear = 2022
endMonth = 04
endDay = 01

startDate = timestamp(startYear, startMonth, startDay, 00, 00)
endDate = timestamp(endYear, endMonth, endDay, 23, 59)

// バックテスト期間内でのみトレードを実行
if (time >= startDate and time <= endDate)
    if (longEntrySignal)
        strategy.entry("Long", strategy.long)
    if (shortEntrySignal)
        strategy.entry("Short", strategy.short)