Adaptive Bullwinkle-Indikator Long-Short-Strategie


Erstellungsdatum: 2024-01-04 16:09:30 zuletzt geändert: 2024-01-04 16:09:30
Kopie: 0 Klicks: 651
1
konzentrieren Sie sich auf
1621
Anhänger

Adaptive Bullwinkle-Indikator Long-Short-Strategie

Übersicht

Die Strategie basiert auf der Entwicklung von Buchinko-Indikatoren, um automatisch Markttrends zu erkennen und leere Positionen zu erstellen. Sie integriert technische Indikatoren wie Buchinko-Indikatoren, Moving Averages und Horizontale Unterstützungslinien, um automatisch Durchbruchsignale zu erkennen und Positionen zu erstellen.

Strategieprinzip

Der zentrale Indikator dieser Strategie ist der Buchinko-Indikator, der die Markttrends und wichtige Unterstützungs-/Widerstandsplätze ermittelt, indem er die logische Differenz der Schlusskosten für verschiedene Handelstage berechnet.

Darüber hinaus integriert die Strategie die EMA-Sicherheitsbänder, die aus mehreren Moving Averages wie 21 und 55 Tagen bestehen. Nach den Reihenfolgebeziehungen dieser Einheitslinien wird der aktuelle Markt als Mehrkopfmarkt, Leerkopfmarkt oder Fundierungsmarkt beurteilt und entsprechend auf Leerlauf oder Mehrhandel beschränkt.

Die Verwendung von Buchinko-Indikatoren zur Identifizierung von Handelssignalen und von Moving Averages zur Bestimmung der Marktphase in Kombination mit diesen kann eine unangemessene Positionserrichtung verhindern.

Vorteilsanalyse

Der größte Vorteil dieser Strategie besteht darin, dass sie automatisch die hohen Tendenzen des Marktes identifizieren kann. Der Buchinko-Indikator ist sehr empfindlich auf die Unterschiede zwischen den Preisen der beiden Zeiträume und kann schnell die wichtigsten Unterstützungswiderstände ausfindig machen. Gleichzeitig kann die Sortierung der Moving Averages effektiv beurteilen, ob die aktuelle Situation über- oder überbewertet ist.

Diese Kombination von Schnellindikatoren und Trendindikatoren ermöglicht es der Strategie, schnell Kauf- und Verkaufspunkte zu finden und gleichzeitig unangemessene Käufe zu verhindern. Dies ist der größte Vorteil der Strategie.

Das ist eine sehr wichtige Aufgabe.

Die Risiken dieser Strategie entstehen hauptsächlich aus zwei Aspekten: Erstens ist der Buchinko-Indikator selbst sehr empfindlich auf Preisänderungen und kann viele unnötige Handelssignale erzeugen; Zweitens ordnet der Moving Average in der Querkurve chaotisch ab, was zu chaotischen Positionen führt.

Für das erste Risiko kann man die Buchinko-Indikatorparameter entsprechend anpassen, um die Indikatorberechnungsphase zu erhöhen und unnötige Transaktionen zu reduzieren. Für das zweite Risiko kann man mehr Moving Averages hinzufügen, um die Trends genauer zu beurteilen.

Optimierungsrichtungen

Die wichtigste Optimierung dieser Strategie ist die Anpassung der Parameter und die Erhöhung der Filterbedingungen.

Für den Buchinko-Indikator können Sie verschiedene Periodensätze ausprobieren, um die beste Kombination zu finden. Für den Moving Average können Sie weitere Durchschnittslinien hinzufügen, um ein vollständigeres Trendsystem zu bilden. Darüber hinaus können Sie Filterbedingungen wie die Volatilitätsrate-Indikator, den Handelsvolumen-Indikator und andere hinzufügen, um falsche Signale zu verringern.

Durch die umfassende Anpassung der Parameter und Bedingungen kann die Stabilität und Profitabilität der Strategie weiter verbessert werden.

Zusammenfassung

Die Adaptive Bouvinco-Strategie kombiniert erfolgreich Schnellindikatoren mit Trendindikatoren, um automatisch Marktkritikpunkte zu identifizieren und die richtige Position zu erstellen. Der Vorteil besteht in der Fähigkeit, sich schnell zu positionieren und unangemessene Positionen zu verhindern. Der nächste Schritt kann durch Parameter- und Konditionsoptimierung erfolgen, um die Strategie weiter zu stabilisieren und die Profitabilität zu erhöhen.

Strategiequellcode
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
basePeriod: 1m
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/
// © boftei

//@version=5

strategy("Boftei's Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, margin_long = 100, margin_short = 100, slippage=0, commission_type=strategy.commission.percent, commission_value = 0, initial_capital = 40, precision = 6)
strat_dir_input = input.string("all", "strategy direction", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
//////////////////////////////////////////////////////////////////////
//DATA
testStartYear = input(2005, "Backtest Start Year")
testStartMonth = input(7, "Backtest Start Month")
testStartDay = input(16, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
//////////////////////////////////////////////////////////////////////
sell = input.float(0.0065, "sell level")
buy = input.float(0, "buy level")
long1 = input.float(-0.493, "long retry - too low")
long2 = input.float(2, "long close up")
long3 = input.float(-1.5, "long close down")
short1 = input.float(1.26, "short retry - too high")
short2 = input.float(-5, "dead - close the short")
///< botvenko script
nn = input(60, "Histogram Period")
float x = 0
float z = 0
float k = 0



y = math.log(close[0]) - math.log(close[nn])
if y>0
    x := y
else
    k := y
//---------------------------------------------
        
plot(y > 0 ? x: 0, color = color.green, linewidth = 4)
plot(y <= 0 ? k: 0, color = color.maroon, linewidth = 4)
plot(y, color = color.yellow, linewidth = 1)

co = ta.crossover(y, buy)
cu = ta.crossunder(y, sell)
retry_long = ta.crossunder(y, long1)
deadline_long_up = ta.crossover(y, long2)
deadline_long_down = ta.crossunder(y, long3)
retry_short = ta.crossover(y, short1)
deadline_short = ta.crossunder(y, short2)


hline(buy, title='buy', color=color.green, linestyle=hline.style_dotted, linewidth=2)
hline(0, title='zero', color=color.white, linestyle=hline.style_dotted, linewidth=1)
hline(sell, title='sell', color=color.red, linestyle=hline.style_dotted, linewidth=2)
hline(long1, title='long retry', color=color.blue, linestyle=hline.style_dotted, linewidth=2)
hline(long2, title='overbought', color=color.teal, linestyle=hline.style_dotted, linewidth=2)
hline(long3, title='oversold', color=color.maroon, linestyle=hline.style_dotted, linewidth=2)
hline(short1, title='short retry', color=color.purple, linestyle=hline.style_dotted, linewidth=2)
hline(short2, title='too low to short - an asset may die', color=color.navy, linestyle=hline.style_dotted, linewidth=2)


////////////////////////////////////////////////////////////EMAprotectionBLOCK
ema_21 = ta.ema(close, 21)
ema_55 = ta.ema(close, 55)
ema_89 = ta.ema(close, 89)
ema_144 = ta.ema(close, 144)
//ema_233 = ta.ema(close, 233)
// ema_377 = ta.ema(close, 377)

long_st = ema_21>ema_55 and ema_55>ema_89 and ema_89>ema_144 //and ema_144>ema_233 and ema_233>ema_377
short_st = ema_21<ema_55 and ema_55<ema_89 and ema_89<ema_144 //and ema_144<ema_233 and ema_233<ema_377 

g_v = long_st == true?3:0
r_v = short_st == true?-2:0
y_v = long_st != true and short_st != true?2:0

plot(math.log(ema_21), color = color.new(#ffaf5e, 50))
plot(math.log(ema_55), color = color.new(#b9ff5e, 50))
plot(math.log(ema_89), color = color.new(#5eff81, 50))
plot(math.log(ema_144), color = color.new(#5effe4, 50))
//plot(math.log(ema_233), color = color.new(#5e9fff, 50))
//plot(math.log(ema_377), color = color.new(#af5eff, 50))

plot(long_st == true?3:0, color = color.new(color.green, 65), linewidth = 5)
plot(short_st == true?-2:0, color = color.new(color.red, 65), linewidth = 5)
plot(long_st != true and short_st != true?2:0, color = color.new(color.yellow, 65), linewidth = 5)
////////////////////////////////////////////////////////////EMAprotectionBLOCK




if (co and testPeriod() and (g_v == 3 or y_v == 2))
    strategy.close("OH BRO", comment = "EXIT-SHORT")
    strategy.close("OH DUDE", comment = "EXIT-SHORT")
	strategy.entry("OH DAMN", strategy.long, comment="ENTER-LONG 'co'")
if (retry_long and testPeriod() and (g_v == 3 or y_v == 2))
    strategy.close("OH DAMN", comment = "EXIT-LONG")
    strategy.entry("OH BRUH", strategy.long, comment="ENTER-LONG 'retry_long'")
	
if (cu and testPeriod() and (r_v == -2 or y_v == 2))
    strategy.close("OH DAMN", comment = "EXIT-LONG")
    strategy.close("OH BRUH", comment = "EXIT-LONG")
	strategy.entry("OH BRO", strategy.short, comment="ENTER-SHORT 'cu'")
if (retry_short and testPeriod() and (r_v == -2 or y_v == 2))
    strategy.close("OH BRO", comment = "EXIT-SHORT")
    strategy.entry("OH DUDE", strategy.short, comment="ENTER-SHORT 'retry_short'")
	
    
if (deadline_long_up and testPeriod() or r_v == -2 and testPeriod())
    strategy.close("OH DAMN", comment = "EXIT-LONG 'deadline_long_up'")
if (deadline_long_down and testPeriod())
    strategy.close("OH DAMN", comment = "EXIT-LONG 'deadline_long_down'")
if (deadline_short and testPeriod() or g_v == 3 and testPeriod())
    strategy.close("OH BRO", comment = "EXIT-SHORT 'deadline_short'")
    // (you can use strategy.close_all(comment = "close all entries") here)