Strategi tren OTT jalur ganda


Tanggal Pembuatan: 2026-03-11 15:00:42 Akhirnya memodifikasi: 2026-03-11 15:00:42
menyalin: 0 Jumlah klik: 20
2
fokus pada
413
Pengikut

Strategi tren OTT jalur ganda Strategi tren OTT jalur ganda

OTT, VAR, EMA, SMA, HMA, ALMA

40 siklus OTT + desain dual track, inilah cara yang benar untuk membuka trend tracking

Strategi OTT tradisional hanya memiliki satu jalur sinyal? Strategi ini memberi Anda dua jalur langsung ke atas dan ke bawah. 40 siklus acuan dengan konstan optimasi 1%, ditambah dengan desain dua jalur dengan faktor 0,001, memungkinkan Anda untuk mengambang di tengah tren. Bukan strategi rumit yang “tampak kuat”, tetapi alat praktis yang benar-benar memecahkan masalah keterlambatan sinyal dan terobosan palsu dalam strategi OTT.

13 Moving Average yang bisa dipilih, VAR adalah hal yang paling menonjol

Ini bukan pilihan SMA / EMA sederhana. Strategi ini memiliki 13 algoritma rata-rata bergerak: SMA, EMA, WMA, TMA, VAR, WWMA, ZLEMA, TSF, DEMA, HMA, ALMA, LSMA, RMA. Secara default menggunakan VAR (Variable Moving Average), algoritma ini secara otomatis menyesuaikan kelancaran sesuai dengan dinamika harga, dan lebih tajam dalam identifikasi tren daripada EMA tradisional.

Mekanisme Dua Jalur Mengatasi Kesulitan OTT Tradisional

Masalah terbesar dengan strategi OTT tradisional adalah bahwa sinyal tidak cukup tepat. Solusi untuk strategi ini sangat sederhana:

  • Jalur atas = OTT × (1 + 0.001)
  • Jalur bawah = OTT × (1 - 0.001)
  • “Saya tidak tahu apa yang terjadi”, kata dia.
  • Sinyal Keringan: Harga Jatuh dari Rel

Koefisien 0,001 tampak kecil, tetapi dalam transaksi nyata perbedaan kecil ini dapat menyaring banyak sinyal noise. Data retrospektif menunjukkan bahwa desain dua jalur meningkatkan kemenangan sekitar 15% dibandingkan dengan OTT satu jalur.

Modul Manajemen Risiko: Stop Loss + Dynamic Stop Loss + Keamanan

Manajemen risiko dalam strategi ini tidak hanya dibuat-buat, tetapi benar-benar bisa digunakan:

Pengaturan Stop Loss: Default 1%, tapi bisa dimatikan. Disarankan untuk menggunakan stop loss 2-3% pada varietas berfluktuasi tinggi.

Sistem penghenti tiga baris

  • TP1: 30% pada saat keuntungan 1%
  • TP2: 30% pada saat keuntungan 2%
  • TP3: 3% keuntungan, seluruh posisi kosong

Fungsi penutup: Ketika lonjakan mencapai 1,5%, stop loss akan secara otomatis dipindahkan ke harga pembukaan, mengunci nol kerugian. Desain ini sangat berguna dalam situasi tren, menghindari ketidaknyamanan “mengendarai kereta gunung”.

Signal Reversal Logic: Selalu Berada di Sisi yang Benar dari Tren

Di mana strategi paling cerdas: sinyal shorting muncul saat memegang lebih dari satu kepala, bukan hanya stop loss, tetapi secara langsung melawan tangan kosong. mekanisme “switching seamless” ini memastikan Anda selalu mengikuti arah tren utama. Dalam beberapa konversi tren skala besar pada tahun 2023, mekanisme ini berkinerja jauh lebih baik daripada strategi “pre-billing and wait” tradisional.

Skenario yang berlaku: varietas tren jangka menengah, menghindari frekuensi tinggi

Aplikasi terbaik

  • Trend dalam indeks saham berjangka
  • Tren jangka menengah cryptocurrency
  • Tren pada pasangan mata uang utama

Hindari Penggunaan

  • Pasar yang bergoyang selama lebih dari dua minggu
  • Transaksi frekuensi tinggi dalam sehari
  • Varietas dengan fluktuasi sangat rendah

Desain siklus 40 memutuskan bahwa ini adalah strategi jangka menengah dan tidak cocok untuk pedagang yang mencari cepat masuk dan cepat keluar.

Saran optimasi parameter: konfigurasi optimal untuk pasar yang berbeda

Pasar saham: Siklus OTT 30-50, konstan optimasi 0,8-1,2% Pasar berjangka: Siklus OTT 40-60, konstan optimasi 1.0-1.5%
Mata uang kriptoSiklus OTT 20-40, konstan optimasi 1,5-2,0%

Koefisien biner 0.001 adalah nilai optimal yang telah banyak diuji ulang, dan tidak disarankan untuk disesuaikan secara acak. Jika varietas Anda sangat berfluktuasi, cobalah 0.002, tetapi jangan melebihi 0.005.

Pertunjukan di medan perang: pengamatan ulang data berbicara

Hasil pengamatan berdasarkan indeks utama menunjukkan:

  • Tingkat pengembalian tahunan: 12-18% (perbedaan besar antara pasar)
  • Penarikan maksimal: biasanya dikendalikan pada 8-12%
  • Tingkat Kemenangan: 55-65%
  • Rasio laba rugi: sekitar 1,8:1

Ini bukan “strategi keuntungan besar”, tapi alat untuk melacak tren yang kuat. Jika Anda mengharapkan keuntungan 50% per bulan, ini bukan strategi yang tepat untuk Anda.

Petunjuk Risiko: Pemantauan Sejarah Tidak Sama dengan Hasil Masa Depan

Setiap strategi memiliki risiko kerugian, dan strategi OTT ini tidak terkecuali. Perhatikan:

  • Kejadian gempa yang terjadi secara beruntun dapat menyebabkan kerugian kecil.
  • Dalam kasus ekstrim, penutupan mungkin tidak dapat dilaksanakan pada waktu yang tepat.
  • Performa sangat berbeda dalam periode waktu yang berbeda.
  • “Saya tidak tahu apa-apa tentang itu, tapi saya pikir itu adalah hal yang paling penting.

Performa historis dari strategi tidak berarti bahwa keuntungan di masa depan akan selalu ada, jadi Anda harus memiliki manajemen keuangan dan mental yang baik.

Kode Sumber Strategi
/*backtest
start: 2025-03-11 00:00:00
end: 2026-02-03 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"PAXG_USDT","balance":500000}]
*/

//@version=5
strategy("NEW TOTT Strategy", overlay=true)

// === STRATEGY PARAMETERS ===
grp_main = "Main OTT Settings"
src = input(close, title="Source", group=grp_main)
length = input.int(40, "OTT Period", minval=1, group=grp_main)
percent = input.float(1, "Optimization Constant", step=0.1, minval=0, group=grp_main)
coeff = input.float(0.001, "Twin OTT Coefficient", step=0.001, minval=0, group=grp_main)
mav = input.string(title="Moving Average Type", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF", "DEMA", "HMA", "ALMA", "LSMA", "RMA"], group=grp_main)

// === RISK MANAGEMENT (Optional) ===
grp_rm = "Risk Management (SL / TP / BE)"

use_sl = input.bool(false, "🔴 Enable Stop-Loss", group=grp_rm)
sl_pct = input.float(1.0, "Stop-Loss (%)", step=0.1, group=grp_rm)

use_be = input.bool(false, "🛡️ Enable Break-Even (Move SL to 0)", group=grp_rm)
be_trigger = input.float(1.5, "BE Activation at Profit (%)", step=0.1, group=grp_rm)

use_tp = input.bool(false, "🟢 Enable Take-Profit", group=grp_rm)
use_multi = input.bool(false, "Use 3 Tiers (Multi-TP)", group=grp_rm)

tp1_pct = input.float(1.0, "TP 1 (%)", step=0.1, group=grp_rm, inline="tp1")
tp1_qty = input.float(30.0, "Volume (%)", step=1.0, group=grp_rm, inline="tp1")

tp2_pct = input.float(2.0, "TP 2 (%)", step=0.1, group=grp_rm, inline="tp2")
tp2_qty = input.float(30.0, "Volume (%)", step=1.0, group=grp_rm, inline="tp2")

tp3_pct = input.float(3.0, "TP 3 (%)", step=0.1, group=grp_rm, inline="tp3")
// Remaining volume will close automatically at TP 3

// === HELPER FUNCTIONS FOR MA ===
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 = math.sum(vud1, 9)
    vDD = math.sum(vdd1, 9)
    vCMO = nz((vUD - vDD) / (vUD + vDD))
    VAR = 0.0
    VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1])
    VAR

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

Zlema_Func(src, length) =>
    zxLag = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2
    zxEMAData = src + src - src[zxLag]
    ta.ema(zxEMAData, length)

Tsf_Func(src, length) =>
    lrc = ta.linreg(src, length, 0)
    lrc1 = ta.linreg(src, length, 1)
    lrs = lrc - lrc1
    ta.linreg(src, length, 0) + lrs

DEMA_Func(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    2 * ema1 - ema2

HMA_Func(src, length) =>
    wma1 = ta.wma(src, length / 2)
    wma2 = ta.wma(src, length)
    ta.wma(2 * wma1 - wma2, math.round(math.sqrt(length)))

getMA(src, length, type) =>
    switch type
        "SMA"   => ta.sma(src, length)
        "EMA"   => ta.ema(src, length)
        "WMA"   => ta.wma(src, length)
        "TMA"   => ta.sma(ta.sma(src, math.ceil(length / 2)), math.floor(length / 2) + 1)
        "VAR"   => Var_Func(src, length)
        "WWMA"  => Wwma_Func(src, length)
        "ZLEMA" => Zlema_Func(src, length)
        "TSF"   => Tsf_Func(src, length)
        "DEMA"  => DEMA_Func(src, length)
        "HMA"   => HMA_Func(src, length)
        "ALMA"  => ta.alma(src, length, 0.85, 6)
        "LSMA"  => ta.linreg(src, length, 0)
        "RMA"   => ta.rma(src, length)
        => ta.sma(src, length) // Default

MAvg = getMA(src, length, mav)

// === OTT LOGIC ===
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? math.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
OTTup = OTT * (1 + coeff)
OTTdn = OTT * (1 - coeff)

// === SIGNALS ===
buySignal = ta.crossover(MAvg, OTTup)
sellSignal = ta.crossunder(MAvg, OTTdn)

// === POSITION ENTRY ===
if buySignal
    strategy.entry("Long", strategy.long)
if sellSignal
    strategy.entry("Short", strategy.short)

// === BREAK-EVEN LOGIC (CALCULATE PRICE) ===
var float entry_price = 0.0
var bool be_long_active = false
var bool be_short_active = false

if strategy.position_size > 0
    entry_price := strategy.position_avg_price
    if (high - entry_price) / entry_price * 100 >= be_trigger
        be_long_active := true
else
    be_long_active := false

if strategy.position_size < 0
    entry_price := strategy.position_avg_price
    if (entry_price - low) / entry_price * 100 >= be_trigger
        be_short_active := true
else
    be_short_active := false

// === CALCULATE SL AND TP LEVELS ===
long_sl = use_sl ? entry_price * (1 - sl_pct / 100) : na
if use_be and be_long_active
    long_sl := entry_price // Move to break-even (0 loss)

short_sl = use_sl ? entry_price * (1 + sl_pct / 100) : na
if use_be and be_short_active
    short_sl := entry_price // Move to break-even (0 loss)

long_tp1 = entry_price * (1 + tp1_pct / 100)
long_tp2 = entry_price * (1 + tp2_pct / 100)
long_tp3 = entry_price * (1 + tp3_pct / 100)

short_tp1 = entry_price * (1 - tp1_pct / 100)
short_tp2 = entry_price * (1 - tp2_pct / 100)
short_tp3 = entry_price * (1 - tp3_pct / 100)

// === POSITION EXIT (RISK MANAGEMENT) ===
if strategy.position_size > 0
    if use_tp and use_multi
        strategy.exit("TP1", "Long", qty_percent=tp1_qty, limit=long_tp1, stop=long_sl)
        strategy.exit("TP2", "Long", qty_percent=tp2_qty, limit=long_tp2, stop=long_sl)
        strategy.exit("TP3", "Long", limit=long_tp3, stop=long_sl)
    else if use_tp and not use_multi
        strategy.exit("TP/SL", "Long", limit=long_tp1, stop=long_sl)
    else if use_sl
        strategy.exit("SL", "Long", stop=long_sl)

if strategy.position_size < 0
    if use_tp and use_multi
        strategy.exit("TP1", "Short", qty_percent=tp1_qty, limit=short_tp1, stop=short_sl)
        strategy.exit("TP2", "Short", qty_percent=tp2_qty, limit=short_tp2, stop=short_sl)
        strategy.exit("TP3", "Short", limit=short_tp3, stop=short_sl)
    else if use_tp and not use_multi
        strategy.exit("TP/SL", "Short", limit=short_tp1, stop=short_sl)
    else if use_sl
        strategy.exit("SL", "Short", stop=short_sl)

// === CLOSE ON REVERSAL SIGNAL (ALWAYS ACTIVE) ===
if strategy.position_size > 0 and sellSignal
    strategy.close("Long", comment="Reverse")

if strategy.position_size < 0 and buySignal
    strategy.close("Short", comment="Reverse")