月を通る雲1つと星2つでお金を引き寄せる戦略


作成日: 2023-11-28 16:12:09 最終変更日: 2023-11-28 16:12:09
コピー: 1 クリック数: 613
1
フォロー
1621
フォロワー

月を通る雲1つと星2つでお金を引き寄せる戦略

概要

一雲穿月双星吸金戦略は,市場技術分析指標一雲と範囲フィルタを組み合わせた定量化取引戦略である.この戦略は,市場傾向と重要なサポート,レジスタンス位,およびK線形状を判断するために一雲指標を使用して取引信号を生成する.同時に,範囲フィルタを組み合わせて取引頻度とリスクを制御する.

戦略原則

この戦略は,主に1つの雲指標とK線形状に基づいて市場の動きを判断する. 1つの雲指標は,前回転線,基準線,雲線を含む.それらの交差関係は,市場の傾向を判断することができる.同時に,雲線は,サポートとレジスタンスとして機能する. この戦略は,異なるパラメータの組み合わせを設定することによって,1つの雲線の感性を調整する.

さらに,戦略は,指定された日付の範囲内でのみ取引を行う日程範囲フィルターを設定し,戦略の取引頻度を制御します.同時に,ストップロスの設定は,価格が不利な方向に走るときのストップロスのオプションが損失を停止するリスクを軽減します.

優位分析

  • 市場動向を判断するために,インディケーターのパラメータを調整するインディケーターのパラメータ
  • K線形状識別,取引信号が明確
  • 日時範囲のフィルタを設定し,取引頻度を制御します.
  • 損失を一時停止し,リスクを低減する設定

リスク分析

  • 雲の指標は遅滞しており,急速に変化する傾向を逃している可能性がある
  • 日付範囲のフィルターで,取引の機会を逃している可能性があります.
  • ストップダメージの設定が不適切で,損失を拡大する可能性があります.

クラウド指標のパラメータを調整し,日付範囲を最適化し,ストップポイントを修正するなどの方法によってリスクを改善し制御することができます.

最適化の方向

  • 異なるパラメータの組み合わせをテストし,最適な 1 クラウド指標配置を選択できます.
  • 他の指標と組み合わせて判断できれば,一雲指標の遅れを回避できる.
  • 追溯により最適化された日付の範囲を設定できます.
  • 条件付きダイナミックスライドストップを設定できます.

要約する

一雲穿月双星吸金戦略は,一雲指標,K線識別,範囲フィルターなどの方法を総合的に適用して市場の動きを判断し,トレンド方向をより明確に把握することができる.パラメータ調整,リスク管理などの手段によって,より良い戦略効果を得ることができる.しかし,まだ一雲指標の遅れの問題に注意し,継続的な最適化調整を行う必要がある.

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

//@version=3
strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true)

xlowest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := min(x, v)
    x

xlowest(src, len) =>
    na(src[len]) ? xlowest_(src, len) : lowest(src, len)

xhighest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := max(x, v)
    x

xhighest(src, len) =>
    na(src[len]) ? xhighest_(src, len) : highest(src, len)

dropn(src, n) =>
    na(src[n]) ? na : src

ichiConversionPeriods(presets) =>
    if presets == "Cpt 20 60 120 30"
        20
    else
        if presets == "Cpt 10 30 60 30"
            10
        else
            if presets == "Std 18 52 104 26"
                18
            else
                9

ichiBasePeriods(presets) =>
    if presets == "Cpt 20 60 120 30"
        60
    else
        if presets == "Cpt 10 30 60 30"
            30
        else
            if presets == "Std 18 52 104 26"
                52
            else
                26

ichiLaggingSpan2Periods(presets) =>
    if presets == "Cpt 20 60 120 30"
        120
    else
        if presets == "Cpt 10 30 60 30"
            60
        else
            if presets == "Std 18 52 104 26"
                104
            else
                52

ichiDisplacement(presets) =>
    if presets == "Cpt 20 60 120 30"
        30
    else
        if presets == "Cpt 10 30 60 30"
            30
        else
            if presets == "Std 18 52 104 26"
                26
            else
                26

scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear")
presets = input(title="Presets", options=["Cpt 20 60 120 30", "Cpt 10 30 60 30", "Std 18 52 104 26", "Std 9 26 52 26"], defval="Cpt 20 60 120 30")
dropCandles = input(1, minval=0, title="Drop first N candles")
showClouds = input(false, "Show Clouds")
stoploss = input(true, title="Stop Loss")

conversionPeriods = ichiConversionPeriods(presets)
basePeriods = ichiBasePeriods(presets)
laggingSpan2Periods = ichiLaggingSpan2Periods(presets)
displacement = ichiDisplacement(presets)
logScaling = scaling == "Log"

lows = dropn(low, dropCandles)
highs = dropn(high, dropCandles)

lowsp = logScaling ? log(lows) : lows
highsp = logScaling ? log(highs) : highs

donchian(len) =>
    avg(xlowest(lowsp, len), xhighest(highsp, len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

// === BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1)
FromDay   = input(defval = 3, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

golong = crossover(leadLine1, leadLine2)
goshort = crossunder(leadLine1, leadLine2)

strategy.entry("Buy", strategy.long, when=(golong and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.entry("Sell", strategy.short, when=(goshort and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

conversionLinep = logScaling ? exp(conversionLine) : conversionLine
baseLinep = logScaling ? exp(baseLine) : baseLine
leadLine1p = logScaling ? exp(leadLine1) : leadLine1
leadLine2p = logScaling ? exp(leadLine2) : leadLine2

plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line")
plot(showClouds ? baseLinep : na, color=#991515, title="Base Line")

p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1")
p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2")
fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)