
La estrategia de comercio cuantitativo de la caja del tesoro es una estrategia de comercio en línea corta que utiliza el canal de la caja de Darvas para capturar las tendencias del mercado. La estrategia se basa principalmente en el indicador de la caja del tesoro para juzgar el movimiento del mercado y buscar oportunidades de comercio.
La entrada se realiza después de que se juzga la combinación de varios indicadores anteriores. El precio de parada es el lado opuesto de la caja de oro. El EXIT de parada utiliza la orientación de RVI para cerrar el pedido.
Se puede reducir el riesgo mediante el ajuste adecuado de los puntos de parada. Además, los parámetros de los indicadores auxiliares también necesitan ser ajustados para que actúen de la mejor manera posible.
La estrategia de comercio cuantitativo de la caja de oro es una estrategia de comercio de línea corta más activa en general. Puede capturar los cambios de tendencia en el mercado a tiempo, aprovechando el canal de la caja de oro para abrir posiciones; y la combinación de indicadores auxiliares puede mejorar la precisión de la toma de decisiones. La estrategia tiene un carácter positivo de riesgo-beneficio, que vale la pena adoptar y optimizar continuamente.
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © xxy_theone
// https://www.youtube.com/watch?v=YYxlnFOX9sQ
// This strategy script has been made to backtest the strategy explained in the video above
//@version=5
strategy(shorttitle = "Darvas Box Test", title="TradeIQ Darvas Box Test", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, currency=currency.USD)
// === INPUT BACKTEST RANGE ===
var GRP1 = "Backtest Range"
fromDate = input(timestamp("7 Mar 2022 00:00 +0000"), "From", group=GRP1)
toDate = input(timestamp("19 Mar 2022 23:59 +0000"), "To", group=GRP1)
window() => true
var GRP3 = "Darvas Box"
boxp=input(5, "Box Length", group=GRP3)
LL = ta.lowest(low,boxp)
k1=ta.highest(high,boxp)
k2=ta.highest(high,boxp-1)
k3=ta.highest(high,boxp-2)
NH = ta.valuewhen(high>k1[1],high,0)
box1 =k3<k2
TopBox = ta.valuewhen(ta.barssince(high>k1[1])==boxp-2 and box1, NH, 0)
BottomBox = ta.valuewhen(ta.barssince(high>k1[1])==boxp-2 and box1, LL, 0)
plot(TopBox, linewidth=3, color=color.green, title="TBbox")
plot(BottomBox, linewidth=3, color=color.red, title="BBbox")
var GRP4 = "MavilimW"
fmal=input(3,"First Moving Average length", group=GRP4)
smal=input(5,"Second Moving Average length", group=GRP4)
tmal=fmal+smal
Fmal=smal+tmal
Ftmal=tmal+Fmal
Smal=Fmal+Ftmal
M1= ta.wma(close, fmal)
M2= ta.wma(M1, smal)
M3= ta.wma(M2, tmal)
M4= ta.wma(M3, Fmal)
M5= ta.wma(M4, Ftmal)
MAVW= ta.wma(M5, Smal)
col1= MAVW>MAVW[1]
col3= MAVW<MAVW[1]
colorM = col1 ? color.blue : col3 ? color.red : color.yellow
plot(MAVW, color=colorM, linewidth=2, title="MAVW")
var GRP5 = "Relative Vigor Index"
len = input.int(10, title="Length", minval=1, group=GRP5)
rvi = math.sum(ta.swma(close-open), len)/math.sum(ta.swma(high-low),len)
sig = ta.swma(rvi)
offset = input.int(0, "Offset", minval = -500, maxval = 500, group=GRP5)
//plot(rvi, color=#008000, title="RVGI", offset = offset)
//plot(sig, color=#FF0000, title="Signal", offset = offset)
var longStopSet = false
long = ta.crossover(close,TopBox) and close > MAVW ? true : false
longClose = strategy.opentrades.profit(strategy.opentrades-1)>0 and ta.crossunder(rvi,sig) ? true : false
strategy.entry("Long Position", strategy.long, when = long and window() and strategy.position_size==0 and strategy.closedtrades<100)
if(longStopSet==false and strategy.position_size > 0)
strategy.exit("exit", "Long Position", stop=BottomBox)
longStopSet := true
if(strategy.position_size==0)
longStopSet := false
strategy.close("Long Position", when = longClose)
var shortStopSet = false
short = ta.crossunder(close,BottomBox) and close < MAVW ? true : false
shortClose = strategy.opentrades.profit(strategy.opentrades-1)>0 and ta.crossover(rvi,sig) ? true : false
strategy.entry("Short Position", strategy.short, when = short and window() and strategy.position_size==0 and strategy.closedtrades<100)
if(shortStopSet==false and strategy.position_size < 0)
strategy.exit("exit", "Short Position", stop=TopBox)
shortStopSet := true
if(strategy.position_size==0)
shortStopSet := false
strategy.close("Short Position", when = shortClose)