Strategi Pelacakan Kotak Persen Dinamis


Tanggal Pembuatan: 2023-11-23 10:32:39 Akhirnya memodifikasi: 2023-11-23 10:32:39
menyalin: 1 Jumlah klik: 605
1
fokus pada
1617
Pengikut

Strategi Pelacakan Kotak Persen Dinamis

Ringkasan

Strategi ini menggunakan persentase perubahan harga untuk menetapkan garis beli dan stop loss, untuk membangun posisi sesuai dengan harga menerobos garis beli dan melakukan stop loss di bawah garis stop loss. Karakteristik utamanya adalah mengambil hanya satu unit risiko, yaitu hanya setelah posisi sebelumnya mencapai target keuntungan yang ditentukan.

Prinsip Strategi

Strategi ini pertama-tama menetapkan harga acuan dengan 10% dari harga ini sebagai kisaran harga, dengan batas atas sebagai garis beli dan batas bawah sebagai garis stop loss. Ketika harga menembus garis beli, beli dalam jumlah tetap.

Kunci lain dari strategi ini adalah hanya mengambil risiko satu unit. Artinya, hanya setelah posisi saat ini telah mencapai target keuntungan, posisi baru akan ditempatkan. Posisi baru juga akan diatur dengan garis beli baru dan garis stop loss.

Analisis Keunggulan

Strategi ini menggabungkan keunggulan dari tracking stop loss dan manajemen penimbunan, yang memungkinkan pengendalian risiko yang efektif dan keuntungan yang sama.

  1. Dengan menggunakan persentase interval untuk mengatur garis beli dan stop loss, Anda dapat secara otomatis melacak tren berjalan
  2. Pengendalian risiko dalam satu digit, pengendalian kerugian
  3. Investasi hanya setelah keuntungan, hindari mengejar kekalahan
  4. Setelah menang, stop loss line ditransfer dan profit dikunci.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Perbedaan persentase terlalu besar, jarak antara garis beli dan garis stop loss terlalu jauh, risiko meningkat
  2. Perbedaan persentase terlalu kecil, garis beli terlalu dekat dengan garis stop loss, dan ruang untuk keuntungan terbatas
  3. Stop loss yang tidak disetel dengan benar dapat menyebabkan stop loss prematur.
  4. Investasi yang terlalu radikal dapat memperbesar kerugian

Risiko ini dapat dihindari dengan penyesuaian parameter, seperti penyesuaian ukuran kisaran persentase, penyesuaian kondisi kenaikan saham, dan sebagainya.

Arah optimasi

Strategi ini masih bisa dioptimalkan lebih jauh:

  1. Investor dapat membangun posisi setelah mengidentifikasi arah tren dengan mengkombinasikan indikator tren.
  2. Anda dapat menambahkan model pembelajaran mesin untuk membuat baris masuk dan baris berhenti lebih cerdas.
  3. Anda dapat mengatur berbagai kondisi penambahan untuk mengurangi risiko lebih jauh.
  4. Anda dapat menguji periode yang berbeda untuk menemukan periode yang optimal.

Meringkaskan

Ini adalah strategi untuk melakukan perdagangan dengan menggunakan persentase. Ini sederhana, praktis, dan efektif dalam mengendalikan risiko. Dengan penyesuaian parameter dan pengoptimalan model, strategi ini dapat menjadi sistem pelacakan tren yang andal dan menghasilkan keuntungan ekstra yang stabil bagi investor.

Kode Sumber Strategi
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HermanBrummer 4 April 2021

strategy ("The Box Percent Strat", shorttitle="The Box", overlay = true)

///     Designed for LONG only on Daily, 2D or 3D Charts
///     Uses fixed investment risk amount, meaning you're willing to lose that amount per trade
///     Limit buy to not overpay

RiskPerTrade            = input(10000, "Risk losing this much per trade", tooltip="This calculates how much you will lose based on difference between the entry price and stop loss price")
TradeAboveMAFilterPer   = input(50, "The System won't trade if price is below this MA")

UpBoxSize               = (input(10, "Box size in %") * 0.01)+1 // 1.1 == 10% up
DnBoxSize               = 1-(input(10, "Box size in %") * 0.01) // 0.9 == 10% dn


var FirstBar            = close > 0 ? close : na
var FirstTop            = FirstBar * UpBoxSize
var FirstBot            = FirstBar * DnBoxSize


var top                 = sma(FirstTop, 1)
var bot                 = sma(FirstBot, 1)

///     The Box Calcs
if  high[2] > top
    top                 := top * UpBoxSize
    bot                 := bot * UpBoxSize
if  low[1]  < bot
    top                 := top * DnBoxSize
    bot                 := bot * DnBoxSize

 
plot(bot,   "Bot",      #ff0000) // Green
plot(top,   "Top",      #00ff00) // Red

mid                     = ((top-bot)/2)+bot 
plot(mid,   "Mid", color.gray)

TradeAboveMAFilter      = sma(close, TradeAboveMAFilterPer)
plot(TradeAboveMAFilter, "Trade AboveMAF Filter", color.yellow, 3, style=plot.style_circles)

// col = high[1] < top and high >= top ? color.white : na
// bgcolor(col)


///     Shares
RiskRange                   = close * abs(DnBoxSize - 1) // 0.9 - 1 == 1.10 // 10% abs so you don't get a neg number NB NB
Shares                      = RiskPerTrade / RiskRange 
//plot(close-RiskRange, "RiskRange", color.fuchsia)

Enter   =   high >= top
             and close[1] > TradeAboveMAFilter
             and strategy.opentrades[0] == strategy.opentrades[1]
             and strategy.opentrades[1] == strategy.opentrades[2] 
             and strategy.opentrades[2] == strategy.opentrades[3]
             and strategy.opentrades[3] == strategy.opentrades[4] 
             and strategy.opentrades[4] == strategy.opentrades[5]
             and strategy.opentrades[5] == strategy.opentrades[6]
             // won't enter if new positon was taken in the last 6 bars
             // need better code for this.

///     Buy & Sell
//  (new highs)    and  (Close above moving average filter) and (No new trades were taken receently)
if  Enter //(high >= top)  and  (close[1] > TradeAboveMAFilter) and strategy.opentrades[0] == strategy.opentrades[1] 
    strategy.order("En", strategy.long, qty=Shares, limit=top)//, stop=top)
    
//barcolor(strategy.position_size != 0 ? #00ff00 : color.gray)


// ///     If ONE Position THEN this Stop Because: 
// if  strategy.position_size == 1
//     strategy.exit("Ex", "En", stop=bot)
///     If it has more than one trad OPEN
if  strategy.position_size > 0
    strategy.exit("Ex", "En", stop=bot[2] )   // puts stop on old bot

//plot(strategy.position_avg_price, "Avg Price", color.yellow)