Klonen Sie die quantitative Yin-Yang-Handelsstrategie


Erstellungsdatum: 2023-09-27 17:11:30 zuletzt geändert: 2023-09-27 17:11:30
Kopie: 0 Klicks: 733
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Cloning Quantity Trading Strategie ist eine Short-Line-Handelsstrategie, die auf den intraday-Preis-Quantität-Beziehungen basiert. Die Strategie nutzt die informationen über die Cloning-Richtung des intraday-Aktienhandels und kombiniert die quantitativen Bestätigungssignale, um einen risikoarmen Short-Line-Betrieb zu ermöglichen.

Strategieprinzip

Die Strategie erzeugt Renko-Blöcke durch Berechnung der täglichen Öffnungs-, Schlusskurs-, Höchst- und Tiefstpreise der Aktien in Verbindung mit dem ATR-Indikator.

Konkret berechnet die Strategie zunächst den Eröffnungspreis o2 und den Schließpreis c2 für Renko-Blöcke. Wenn o2 < c2 ist, bedeutet dies die Sonnenlinie, wenn o2 > c2 ist, bedeutet dies die Negation. Wenn die Sonnenlinie in die Negation umschaltet, wird ein Verkaufssignal erzeugt, und wenn die Negation in die Sonnenlinie umschaltet, wird ein Kaufsignal erzeugt.

Die Strategie berechnet auch die Anzahl der Zyklen der vorherigen Sonnen- und Sonnenleiter, um falsche Durchbrüche zu filtern. Wenn mehr Sonnenleiter-Zyklen vorhanden sind, ist das Signal zuverlässiger. Darüber hinaus setzt die Strategie eine Stop-Loss-Stop-Logik nach dem Kauf und dem Verkauf ein.

Strategische Vorteile

  1. Mit den Renko-Blöcken wird der Marktlärm gefiltert und die Handelssignale klarer.

  2. Die Kombination von Quantität und Energie verhindert die Gefahr von falschen Durchbrüchen.

  3. Das DAPM-Modell ist einfach und wirksam und eignet sich für kurze Einsätze innerhalb eines Tages.

  4. Die ATR-Parameter können die Frequenz des Handels anpassen.

  5. Anpassbare Stop Loss Strategien zur Optimierung des Risikomanagements.

Risikoanalyse

  1. Es besteht die Gefahr von “falschen Durchbrüchen” mit unklaren Trends.

  2. Wenn die Renko-Parameter nicht richtig eingestellt sind, kann es zu Trends kommen oder die Handelsfrequenz erhöhen.

  3. Eine zu kleine Einstellung des Stop-Loss-Punktes kann zu geringfügigen Verlusten führen.

Optimierungsrichtung

  1. Es kann in Kombination mit anderen technischen Indikatoren in Betracht gezogen werden, um Filtersignale zu filtern.

  2. Es kann in Erwägung gezogen werden, die Funktion “Mobile Stop Loss” oder “Tracking Stop Loss” hinzuzufügen.

  3. Optimierte Tests für verschiedene Sortenparameter.

  4. Es ist möglich, mehrere Zeitrahmen zu handeln, wobei die Kombination verschiedener Zeiträume berücksichtigt werden kann.

Zusammenfassen

Die Strategie ist insgesamt eine sehr praktische Short-Line-Trading-Strategie. Sie nutzt die Quantitäts- und Preisbeziehungen für eine effiziente Filterung und kann die Short-Line-Preise nach oben und nach unten zu erfassen. Es ist auch notwendig, auf eine vernünftige Parameter-Einstellung, angemessene Risikomanagement und Stop-Loss-Strategie zu achten, die die Stabilität und Profitabilität der Strategie erheblich verbessern kann.

Strategiequellcode
/*backtest
start: 2022-09-26 00:00:00
end: 2023-09-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License https://creativecommons.org/licenses/by-sa/4.0/
// © dman103
strategy(title="Renko Strategy V2", shorttitle="Renko Strategy V2", overlay=true,precision=3, commission_value=0.025, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)
// Version 2.0 of my previous renko strategy using Renko calculations, this time without Tilson T3 and without using security with Renko to remove repaints!
// Seems to work nicely on cryptocurrencies on higher time frames.

//== Description ==
// Strategy gets Renko values and uses renko close and open to trigger signals.
// Base on these results the strategy triggers a long and short orders, where green is uptrending and red is downtrending.
// This Renko version is based on ATR, you can Set ATR (in settings) to adjust it.

// == Notes ==
// Supports alerts.
// Supports backtesting time ranges.
// Shorts are disabled by default (can be enabled in settings).
// Link to previous Renko strategy V1: https://www.tradingview.com/script/KeWBWLGT-Renko-Strategy-T3-V1/
//
// Stay tuned for version V3 in the future as i have an in progress prototype, Follow to get updated: https://www.tradingview.com/u/dman103/#published-scripts

// === INPUT BACKTEST RANGE ===
useDate = input(true,     title='---------------- Trade Range ----------------', type=input.bool)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2017, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2099, title = "To Year", minval = 2010)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create 

settings = input(true,     title='---------------- Settings ----------------', type=input.bool)

allow_short = input(false,title="Allow Short")
atr_len = input(10,"ATR Length")

atr = atr(atr_len)
// Thanks to renko snippet calculations from @RafaelZioni  https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/
Renko1() =>
    p1 = 0.0
    p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1])
    p1
Renko2() =>
    p2 = 0.0
    Br_1 = Renko1()
    p2 := Renko1() != Renko1()[1] ? Br_1[1] : nz(p2[1])
    p2

Renko3() =>
    p3 = 0.0
    p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1])
    p3

Renko4() =>
    open_v = 0.0
    Br_2 = Renko3()
    open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1])
    open_v

o2 = Renko4()
c2 = Renko1()
l2 =low
h2 = high

//=== Plotting ===

crossPlot= 0.0
if (o2 < c2)
    crossPlot :=o2
else 
    crossPlot := o2

// Used to make sure that even if o2 and c2 are equal, the result (short or long) will be based on previous trend.
bars_since_up=barssince(o2 < c2)
bars_since_down=barssince(o2 > c2)
go_long= (bars_since_up<bars_since_down) and  o2<c2
go_short = (bars_since_up>bars_since_down) and o2>c2
plotColor = go_long and  o2<c2 ? color.green : go_short and o2>c2?  color.red : color.white 
plot(crossPlot, color = plotColor, style = plot.style_circles, linewidth = 2,join=true)
changeCond = plotColor != plotColor[1]

//=== Buy/Sell ===
closeStatus =  strategy.openprofit > 0 ? "win" : "lose"
long_entry = plotColor == color.green and window()  and changeCond
long_exit_entry = plotColor == color.red //or (allow_alternative_sl and close < low_result  )
short_entry = plotColor == color.red  and window() and changeCond
short_exit_entry = plotColor == color.green   // or (allow_alternative_sl and close > high_result )

strategy.entry("long", true, when = long_entry)
strategy.close("long",when=long_exit_entry,comment=closeStatus)

if (allow_short)
    strategy.entry("short",false, when = short_entry)
strategy.close("short",when=short_exit_entry,comment=closeStatus)
//=== Alerts ===
alertcondition(go_long and changeCond , title='Renko Buy Signal', message='Renko Revered to Buy Signal')
alertcondition(go_short and changeCond , title='Renko Sell Signal', message='Renko Revered to Sell Signal')