Strategie für die tatsächliche Kreuzperiode basierend auf dem gewichteten gleitenden Durchschnitt

Schriftsteller:ChaoZhang, Datum: 2024-01-17 15:09:28
Tags:

img

Übersicht

Diese Strategie verwendet True Range und den gewichteten gleitenden Durchschnitt (WMA), um einen Querschnittszeitrahmenindikator für das Trendbeurteilen zu erstellen. Gleichzeitig verfügt sie über einen Pyramiden-Positionsakkumulationsmechanismus mit mehreren Stop-Loss-Mechanismen, um stabile Gewinne zu erzielen.

Strategieprinzip

Die Strategie berechnet zunächst die Amplitude nach oben (sube) und die Amplitude nach unten (baja), und berechnet dann die WMA des schnellen Linienzyklus (corto) und des langsamen Linienzyklus (largo) beziehungsweise. Die Differenz zwischen den schnellen und langsamen Linien wird erneut durch WMA berechnet, um den Indikator (ind) zu erhalten. Wenn der Indikator über 0 geht, wird ein Kaufsignal generiert. Wenn er unter 0 geht, wird ein Verkaufssignal generiert.

Nach dem Markteintritt setzt die Strategie 5 Positionen vor, die sich in einer Pyramiden- (verdoppelten) Art und Weise ansammeln. Gleichzeitig wird ein Stop-Loss-Mechanismus eingerichtet, so dass die nachfolgend eröffneten Positionen beurteilt werden, ob der aktuelle schwebende Gewinn unter der Stop-Loss-Linie liegt, um Risiken zu kontrollieren.

Analyse der Vorteile

Die Strategie integriert Mechanismen wie Kreuzzyklus-Urteil, Pyramiden-Positionsakkumulation und mehrfache Stop-Losses, die Risiken wirksam kontrollieren und stabile Gewinne erzielen können.

Durch die Kombination von schnellen und langsamen Linien wird ein Trendbeurteilungssystem erstellt, das Marktlärm effektiv filtern und Trendwendepunkte identifizieren kann. Pyramidenpositionen können am Anfang des Trends mehr profitieren, und mehrere Stop-Loss-Mechanismen können einen einzelnen Verlust effektiv kontrollieren.

Risikoanalyse

Das Hauptrisiko dieser Strategie ist die Möglichkeit eines plötzlichen Ereignisses, das eine schnelle Umkehr des Marktes verursacht, die eine Stop-Loss-Schnittgrenze auslöst und Verluste verursacht.

Das Risiko einer Umkehr des Marktes kann durch eine angemessene Lockerung der Stop-Loss-Linie abgewendet werden.

Optimierungsrichtung

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Erhöhung der statistischen Indikatoren für die Beurteilung, Verwendung von Indikatoren wie Volatilität und Volumen zur Korrektur von Parametern und Anpassung der Strategie.

  2. Erhöhen Sie das Modell des maschinellen Lernens für das Urteilen, verwenden Sie LSTM und andere Deep Learning-Modelle, um das Urteilen zu unterstützen und die Strategiegenauigkeit zu verbessern.

  3. Optimierung der Positionsmanagementmechanismen, Anpassung der Positionserhöhung an den variablen Gewinnprozentsatz, um das Positionswachstum vernünftiger zu gestalten.

  4. Einbeziehung von Futures-Hedging-Modellen zur weiteren Kontrolle von Risiken durch Spot- und Futures-Arbitrage.

Zusammenfassung

Zusammenfassend ist dies eine Kreuzzyklus-Trendstrategie, die auf True Range-Indikatoren mit Pyramiden-Positionsakkumulation und mehreren Stop-Loss-Mechanismen basiert, die Risiken effektiv kontrollieren und stabile Gewinne erzielen können.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 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/
// © MaclenMtz

//@version=5
strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false )

//------WINDOW----------

i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window")
i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time")
window = true

//-----------------------------

sube = close>close[1] ? ta.tr : 0
baja = close<close[1] ? ta.tr : 0

corto = input(10)
largo = input(30)
suavizado = input(10)

fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto)
slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo)
ind = ta.wma(fastDiff - slowDiff, suavizado)

iColor = ind>0 ? color.green : ind<0 ? color.red : color.black
plot(ind, color=iColor)
plot(0, color=color.white)

long = ind[1]<ind and ind[2]<ind[1] and ind<0
short = ind[1]>ind and ind[2]>ind[1] and ind>0

plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny)
plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny)

//Contratos
contrato1 = input(50000)/(16*close)
c1 = contrato1
c2 = contrato1
c3 = contrato1*2
c4 = contrato1*4
c5 = contrato1*8

//cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0
openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2)

porc_tp = input.float(6.5)
safe = input(-6)

//----------------Strategy---------------------------

if strategy.opentrades == 0
    strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window)

if strategy.opentrades == 1
    strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 2
    strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 3
    strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 4
    strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe)

min_prof = strategy.openprofit>0

strategy.close_all(when=short and min_prof)

plot(openprofit_porc)


Mehr