バグラの取引戦略は,二重動的移動平均値に基づいています.

作者: リン・ハーンチャオチャン開催日:2024年2月19日 14:36:37
タグ:

img

概要

ブグラ・トレーディング戦略は,私の親愛なる教師アニル・オゼキシが開発したOTT指標と,ロネスター108のWavetrendオシレーター指標を組み合わせた戦略です.この2つの指標を統合することで,成功したトレーディング指標を形成します.この戦略は,双方向市場で長時間および短時間取引を行うことができます.

戦略原則

ブグラ・トレード戦略は,まずボリンジャー・バンドのミッドラインを計算し,移動平均線MAvgである.その後,ユーザーによって設定された百分比範囲と期間に基づいて,ロングストップ・ロストとショートストップ・ロストを計算する.価格が上部レールを突破するとロング.下部レールを突破するとショート.価格が移動平均の周りに戻るときの閉局信号です.

この戦略のコアインジケーターは,OTTインジケーターである.OTTインジケーターは,移動平均値と境界線から構成される.特定のアルゴリズムに基づいて市場の変動に応じて境界線の位置を調整する.価格が下限線OTTを突破すると,ショートに行く.上限線OTTを突破すると,ロングに行く.

この戦略は,価格傾向の方向性を決定するためにWavetrend指標も使用します. ダウントレンドであると判断された場合,ショートのみで,ロングではありません. 上昇トレンドであると判断された場合,ロングのみで,ショートではありません.

利点分析

ブグラ・トレード戦略は,移動平均値,ボリンジャー帯,OTT指標の利点を組み合わせます.ストップ・ロスのポジションを自動的に調整し,ストップ・ロスの発生の可能性を減らすことができます.同時に,トレンド判断指標を組み込むことで,振動傾向に囚われないようにします.

具体的には,この戦略の主な利点は以下の通りです.

  1. ストップ・ロスのポジションを自動的に調整して リスクを効果的にコントロールできます
  2. OTT指標は逆転点を比較的正確に判断できる.
  3. トレンド判断指標を組み込むことで 変動する市場に閉じ込められないのです
  4. その規則は比較的シンプルで 分かりやすく 分かりやすく 適用できます

リスク分析

ブグラの取引戦略には,主に次の側面で,いくつかのリスクがあります.

  1. 激しい市場情勢下では,ストップロスは破られ,より大きな損失を引き起こす可能性があります.
  2. OTT インジケーターによって判断された反転信号は正確でない可能性があり,誤った信号が発生する可能性があります.
  3. トレンド判断も間違える.下向きの振動でロングに行くことは損失を引き起こす.
  4. 間違ったパラメータ設定も 戦略のパフォーマンスに影響します

対応措置は主に以下のとおりです

  1. ストップ・ロスの範囲を適切に緩め,ストップ・ロスの線が簡単に起動しないようにする.
  2. 誤った信号を避けるために,OTT信号の信頼性を判断するために他の指標と組み合わせます.
  3. 傾向判断をより信頼性のあるものにするために 適切なパラメータを調整する.
  4. パラメータを最適化して 最高のパラメータの組み合わせを見つけます

オプティマイゼーションの方向性

二重動的移動平均取引戦略のさらなる最適化にはまだ余地があります.

  1. シグナル判断の精度を向上させるために他の指標と組み合わせることを検討します.
  2. 適応型ストップロスのアルゴリズムを研究し,ストップロスの線を市場の変動に応じて調整することができる.
  3. 取引量の指標を追加して,低取引量の偽ブレイクを避ける.
  4. 最適な移動平均値を見つけるために,異なる種類の移動平均値をテストします.
  5. マシン・ラーニングや 他の方法を使って パラメータを自動的に最適化してみてください

概要

双動的移動平均取引戦略は,複数の指標の利点を統合している.ストップ損失ポジションを自動的に調整し,逆転信号を判断し,トレンド方向を識別することができる. 強力なリスク制御能力,理解し,使用しやすいなどの利点は有ります. しかし,閉じ込められ,不正確な信号などのリスクもあります. この戦略は,他の指標と組み合わせ,適応アルゴリズムを研究することによってさらに最適化することができます. 一般的に,双動的移動平均取引戦略は,実用的なブレイクアウト取引戦略です.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Bugra trade strategy", shorttitle="Bugra trade strategy", overlay=true)

// Kullanıcı Girdileri
length = input(5, title="Period", minval=1)
percent = input(1, title="Sihirli Yüzde", type=input.float, step=0.1, minval=0)
mav = input(title="Hareketli Ortalama Türü", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
wt_n1 = input(10, title="Kanal Periyodu")
wt_n2 = input(21, title="Averaj Uzunluğu")
src = close

// Tarih Aralığı Girdileri
startDate = input(20200101, title="Başlangıç Tarihi (YYYYMMDD)")
endDate = input(20201231, title="Bitiş Tarihi (YYYYMMDD)")

// Tarih Filtresi Fonksiyonu
isDateInRange() => true
// Özel Fonksiyonlar
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = src > src[1] ? src - src[1] : 0
    vdd1 = src < src[1] ? src[1] - src : 0
    vUD = sum(vud1, length)
    vDD = sum(vdd1, length)
    vCMO = (vUD - vDD) / (vUD + vDD)
    varResult = 0.0
    varResult := nz(valpha * abs(vCMO) * src + (1 - valpha * abs(vCMO)) * nz(varResult[1]))
    varResult

Wwma_Func(src, length) =>
    wwalpha = 1 / length
    wwma = 0.0
    wwma := wwalpha * src + (1 - wwalpha) * nz(wwma[1])
    wwma

Zlema_Func(src, length) =>
    zxLag = floor(length / 2)
    zxEMAData = src + (src - src[zxLag])
    zlema = ema(zxEMAData, length)
    zlema

Tsf_Func(src, length) =>
    lrc = linreg(src, length, 0)
    lrs = lrc - linreg(src, length, 1)
    tsf = lrc + lrs
    tsf

getMA(src, length) =>
    ma = mav == "SMA" ? sma(src, length) :
         mav == "EMA" ? ema(src, length) :
         mav == "WMA" ? wma(src, length) :
         mav == "TMA" ? sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) :
         mav == "VAR" ? Var_Func(src, length) :
         mav == "WWMA" ? Wwma_Func(src, length) :
         mav == "ZLEMA" ? Zlema_Func(src, length) :
         mav == "TSF" ? Tsf_Func(src, length) : na

// Strateji Hesaplamaları
MAvg = getMA(src, length)
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT = MAvg > MT ? MT*(200+percent)/200 : MT*(200-percent)/200

plot(OTT, title="BugRA", color=color.rgb(251, 126, 9))

// Alım ve Satım Koşulları
longCondition = crossover(src, OTT) and isDateInRange()
shortCondition = crossunder(src, OTT) and isDateInRange()

// Strateji Giriş ve Çıkış Emirleri
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.close("Long")


もっと