Vibration Box Quantitative Handelsstrategie


Erstellungsdatum: 2023-12-27 14:45:41 zuletzt geändert: 2023-12-27 14:45:41
Kopie: 0 Klicks: 956
1
konzentrieren Sie sich auf
1623
Anhänger

Vibration Box Quantitative Handelsstrategie

Überblick

Die Shake-Treasure-Quantitative-Trading-Strategie ist eine Short-Line-Trading-Strategie, die den Darvas-Box-Kanal nutzt, um Markttrends zu erfassen. Die Strategie hängt hauptsächlich von den Shake-Treasure-Indikatoren ab, um die Marktentwicklung zu beurteilen und nach Handelsmöglichkeiten zu suchen.

Strategieprinzip

  • Setzen Sie die Länge der Schwingungskiste mit dem length-Parameter. Die Standardlänge in dieser Strategie ist 5 K-Streifen.
  • Der Trend wird anhand von Breakouts und Breakouts beurteilt, und entsprechend wird mehr Kauf und Verkauf vorgenommen.
  • Wenn der Preis die Schatzkiste durchbricht, wird eine grüne TopBox-Linie auf der Grafik gezeichnet.
  • Wenn der Preis unterhalb der Schatzkiste fällt, wird eine rote BottomBox-Linie auf der Grafik gezeichnet.
  • Das Mehrwertsteigersystem wird als Hilfsindikator verwendet. Wenn der Preis höher als die Mehrwertsteigerschaft und niedriger als die Leerwertsteigerschaft ist.
  • Der RVI-Indikator wird verwendet, um Überkauf-Überverkaufszonen zu ermitteln. Wenn der RVI über der Signallinie liegt, ist dies ein Überkaufsignal. Wenn der RVI unter der Signallinie liegt, ist dies ein Leerlaufsignal.

Eintritt nach einer Kombination der oben genannten Indikatoren. Der Stop-Loss-Preis ist die gegenüberliegende Seite der Treasure Box. Der Stop-Exit nutzt die Richtung des RVI, um den Auftrag zu schließen.

Analyse der Stärken

  • Der Markt ist in der Lage, sich über die Trends zu informieren, die sich auf den Markt auswirken, um nicht die großen Trends zu verpassen.
  • Die Schatzkastenkanäle sind leicht zu bilden, die Frequenz des Signals ist hoch.
  • Die Stop-Loss-Einstellungen sind vernünftig und ermöglichen eine gute Kontrolle des Einzelschutzes.
  • Die Mehrwertspiegel- und RVI-Unterstützung kann die Genauigkeit der Entscheidung verbessern.

Risikoanalyse

  • Die Stop-Loss-Position der Schwingungskiste ist relativ breit, die Gefahr eines Einzelschadens ist höher.
  • Bei mehreren Händlern können kurzfristige Anpassungen verlustbehaftet werden.
  • Die Richtung der Schatzkastenkanalbildung ist nicht immer richtig, es gibt falsche Signale.
  • Die Parameter müssen entsprechend angepasst werden, damit die Hilfsindikatoren mit dem Schatzkasten verwendet werden können.

Das Risiko kann durch eine angemessene Verschärfung des Stop-Loss-Niveaus verringert werden. Zusätzlich müssen die Parameter der Hilfsindikatoren getestet und angepasst werden, damit sie die beste Filterfunktion haben.

Optimierungsrichtung

  • Testen Sie die Parameter der Schatzboxen mit unterschiedlichen Längen, um die optimale Länge zu finden.
  • Optimierung der Parameter für die Hilfsindikatoren, damit sie optimal mit der Schatzkammer kombiniert werden können.
  • Versuchen Sie, andere Hilfsindikatoren zu verwenden, um das Signal weiter zu verifizieren, z. B. KDJ, MACD usw.
  • Tests der Stop-Loss- und Stop-Out-Bedingungen, um die Strategie zu stabilisieren.

Zusammenfassen

Die Quantifizierungs-Trading-Strategie der Schwingungskiste ist insgesamt eine eher aktive Short-Line-Trading-Strategie. Sie kann die Trendveränderungen des Marktes rechtzeitig erfassen und die Position mit dem Schubladenkanal eröffnen. Die Kombination mit Hilfsindikatoren kann die Entscheidungsgenauigkeit verbessern.

Strategiequellcode
/*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)