Satu awan melalui bulan dan dua bintang untuk menarik strategi uang


Tanggal Pembuatan: 2023-11-28 16:12:09 Akhirnya memodifikasi: 2023-11-28 16:12:09
menyalin: 1 Jumlah klik: 610
1
fokus pada
1619
Pengikut

Satu awan melalui bulan dan dua bintang untuk menarik strategi uang

Ringkasan

Strategi penarikan bintang ganda adalah strategi perdagangan kuantitatif yang menggabungkan indikator analisis teknis pasar awan dan filter rentang. Strategi ini menggunakan indikator awan untuk menilai tren pasar dan dukungan penting, titik perlawanan, dan bentuk garis K untuk menghasilkan sinyal perdagangan.

Prinsip Strategi

Strategi ini terutama didasarkan pada indikator awan dan bentuk garis K untuk menilai tren pasar. Indikator awan terdiri dari pivot depan, garis dasar dan garis awan, hubungan silang mereka dapat menentukan tren pasar; dan garis awan dapat berfungsi sebagai titik dukungan dan resistensi. Strategi ini menyesuaikan sensitivitas garis awan dengan mengatur kombinasi parameter yang berbeda.

Selain itu, strategi juga mengatur filter rentang tanggal, yang hanya akan diperdagangkan dalam rentang tanggal yang ditentukan, yang dapat mengontrol frekuensi perdagangan strategi. Selain itu, pengaturan stop loss juga dapat mengurangi risiko, dan opsi stop loss akan menghentikan kerugian ketika harga berjalan ke arah yang tidak menguntungkan.

Analisis Keunggulan

  • Menggunakan indikator cloud untuk menilai tren pasar, parameter indikator dapat disesuaikan dengan sensitivitas
  • Identifikasi K-Line, sinyal transaksi jelas
  • Setting date range filter, untuk mengontrol frekuensi transaksi
  • Pengaturan Stop Loss, yang dapat menghentikan kerugian tepat waktu dan mengurangi risiko

Analisis risiko

  • Indikator awan terbelakang, mungkin melewatkan tren perubahan cepat
  • Filter rentang tanggal mungkin melewatkan beberapa peluang perdagangan
  • Stop loss yang tidak tepat dapat memperbesar kerugian

Risiko dapat ditingkatkan dan dikendalikan dengan cara seperti menyesuaikan parameter indikator awan, mengoptimalkan rentang tanggal, dan memodifikasi titik berhenti.

Arah optimasi

  • Anda dapat menguji kombinasi parameter yang berbeda untuk memilih konfigurasi metrik terbaik dari satu awan.
  • Pertimbangan dapat dikombinasikan dengan indikator lain untuk menghindari masalah keterlambatan indikator awan
  • Bisa diatur dengan optimasi tanggal dengan pengembalian
  • Anda dapat mengatur stop loss conditional dynamic slip

Meringkaskan

Menggunakan indikator awan, K-line identifikasi, dan filter rentang untuk menentukan arah tren pasar, Anda dapat memahami arah tren dengan lebih jelas. Dengan penyesuaian parameter, pengendalian risiko, dan lain-lain, Anda bisa mendapatkan efek strategi yang lebih baik. Namun, Anda masih perlu memperhatikan masalah keterlambatan indikator awan, dan melakukan penyesuaian optimasi berkelanjutan.

Kode Sumber Strategi
/*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)