
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.
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.
Strategi ini menggabungkan keunggulan dari tracking stop loss dan manajemen penimbunan, yang memungkinkan pengendalian risiko yang efektif dan keuntungan yang sama.
Strategi ini juga memiliki beberapa risiko:
Risiko ini dapat dihindari dengan penyesuaian parameter, seperti penyesuaian ukuran kisaran persentase, penyesuaian kondisi kenaikan saham, dan sebagainya.
Strategi ini masih bisa dioptimalkan lebih jauh:
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.
/*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)