Strategie zur Optimierung des gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 14.9.2023 Uhr
Tags:

Strategie Logik

Diese Strategie optimiert die Einstiegspunkte nach Signalen aus einem grundlegenden gleitenden Durchschnittssystem.

Die Hauptlogik lautet:

  1. Berechnung des gleitenden Durchschnitts über einen Zeitraum (z. B. 20 Tage)

  2. Crossovers erzeugen lange/kurze Signale

  3. Nach dem Signal, nicht sofort eintreten, sondern warten auf bessere Ebenen

  4. Wenn innerhalb bestimmter Tage (z. B. 3 Tage) bessere Niveaus auftreten, werden Trades eingegeben.

  5. Wenn nicht, gehen Sie am 5. Tag zum Schlusskurs ein, um nicht zu verpassen.

Dies soll auf die Wiederaufnahme von Trends nach Konsolidierungen statt auf sofort eingegangene Signale abzielen und Positionen auf verbesserten Niveaus etablieren.

Vorteile

  • Einstiegsoptimierung für bessere Einstiegsgrade

  • Maximale Wartezeiten verhindern vollständig fehlende Trades

  • Einfache und klare Regeln leicht umzusetzen

Risiken

  • Wartezeiten und Schwellenwerte müssen optimiert werden

  • Kann einige kurzfristige Trendchancen verpassen

  • Notwendigkeit der Überwachung der zeitlichen und preislichen Bedingungen

Zusammenfassung

Diese Strategie zielt darauf ab, durch einfache Einstiegsoptimierung bessere Einstiegsniveaus zu erzielen und gleichzeitig zu gewährleisten, dass Trends nicht verpasst werden.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 1h
basePeriod: 15m
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/
// © dongyun

//@version=4
strategy("等待一个更好的入场机会", overlay=true)

period = input(20,'')
maxwait = input(3,'')
threshold = input(0.01,'')

signal = 0
trend = 0.0
newtrend = 0.0
wait = 0.0
initialentry = 0.0

trend := sma(close,period)
signal := nz(signal[1])
if trend > nz(trend[1])
	signal := 1
else
	if trend < nz(trend[1])
		signal := -1

wait := nz(wait[1])
initialentry := nz(initialentry[1])

if signal != signal[1]
	if strategy.position_size > 0
		strategy.close('long',comment='trend sell')
		signal := -1
	else
		if strategy.position_size < 0
    		strategy.close('short',comment='trend buy')
    		signal := 1
	wait := 0
	initialentry := close
else
	if signal != 0 and strategy.position_size == 0
		wait := wait + 1

// test for better entry
if strategy.position_size == 0
	if wait >= maxwait
		if signal > 0
			strategy.entry('long',strategy.long, comment='maxtime Long')
		else
			if signal < 0
				strategy.entry('short',strategy.short, comment='maxtime Short')
	else
		if signal > 0 and close < initialentry - threshold
			strategy.entry('long',strategy.long, comment='delayed Long')
		else
			if signal < 0 and close > initialentry + threshold
				strategy.entry('short',strategy.short, comment='delayed short')


Mehr