
Die Strategie kombiniert einen Stochastic Oscillator mit einem Moving Average, um ein Handelssignal zu erzeugen, indem man den Überkauf und Überverkauf von Zufallsindikatoren und die Tendenz der Moving Averages beobachtet. Wenn der Zufallsindikator in der Überkaufzone und unterhalb der Moving Average-Linie ein Leerlaufsignal erzeugt, werden mehrere Signale erzeugt, wenn er in der Überverkaufszone und oberhalb der Moving Average ist.
Berechnen Sie die Zufallsschwankungen und erhalten Sie die K- und D-Linien. Die Parameter sind anpassbar, einschließlich Zufallsschwankungen, K- und D-Gleichung, Überkauf- und Überverkaufszonen.
Berechnung von Moving Averages, standardmäßig mit Schlusskurs, periodisch einstellbar.
Berechnung eines Zufallsindikatorfilters. Es erzeugt ein Filtersignal, wenn die K-Linie unter 50 gehalten wird. Die Periode ist einstellbar.
Die Bedingungen für die Erzeugung eines Mehrkopfsignals sind: ein zufälliger Indikator, der in einer Überverkaufszone nach oben kreuzt, oder ein zufälliger Indikator, der ein Filtersignal erzeugt und den Moving Average nach oben bewegt.
Die Bedingungen für die Erzeugung eines leeren Signals sind: Der Zufallsindikator kreuzt in der Überkaufszone nach unten oder der Zufallsindikator filtert das Signal und der Moving Average geht nach unten.
Multiple-Plating-Bedingungen: Durchschnittsbewegung auf einer zufälligen K-Linie, die sich nach unten dreht.
Leerstandsbedingungen: Zufälliger Durchschnitt unterhalb der K-Linie, der sich nach oben dreht.
Die Positionsverwaltung nutzt den Fixed-Funds-Anteil, der Standard ist 10%. Gleichzeitig wird ein Stop-Loss festgelegt, der Standard ist 2%.
In Kombination mit Überkaufen und Überverkaufen und Trend-Eigenschaften kann man in einem Trend nach unten schlagen.
Der Zufallsindikator-Filter verhindert häufige Transaktionen bei einem Erschütterungsschub.
Die Stop-Loss-Einstellung hilft bei der Kontrolle des Rückzugs.
Die Code-Struktur ist klar, die Parameter sind einstellbar und für weitere Optimierungen geeignet.
Der Zufallsindikator hat eine gewisse Verzögerung und kann die besten Kauf- und Verkaufspunkte verpassen.
Bei Trendwechseln ist die Schreibgenauigkeit schwach und die Stop-Loss-Frequenz kann höher sein.
Die Vermögensverwaltung mit festen Anteilen wird bei anhaltenden Verlusten stärker zurückgezogen.
Durch die Einführung weiterer Filterbedingungen, wie z. B. Preisverhalten und andere Hilfsindikatoren, wird die Signalgenauigkeit verbessert.
Die Signalstärken werden unterteilt und bei starken Signalen die Positionen erhöht.
Die Analyse der Trendwendepunkte wurde optimiert, um mehr zu erfassen.
Optimierung der Positionsverwaltung durch Berücksichtigung von Floating Gains/Losses im Vergleich zu Positionsanpassungen usw.
Versuche verschiedene Parameterkombinationen und suche nach dem optimalen.
Die Strategie basiert auf einem Trendbeurteilungsmodell, das sich auf einen Trend in Kombination mit einem beweglichen Durchschnitt stützt und gleichzeitig die Filterfunktion des Zufallsindikators selbst nutzt, um ein relativ zuverlässiges Handelssignal zu erzeugen. Die Strategie ist klar konzipiert und eignet sich für den Trend.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pablo_2uc
//@version=5
strategy("Estrategia Estocástico + MA con Stop Loss y Filtro Estocástico", overlay=true)
// Parámetros del Estocástico
length = input.int(14, title="Longitud Estocástico")
smoothK = input.int(3, title="Suavizado K")
smoothD = input.int(3, title="Suavizado D")
oversold = input.int(20, title="Sobreventa")
overbought = input.int(80, title="Sobrecompra")
// Parámetros de la Media Móvil
maLength = input.int(9, title="Longitud MA")
maSource = input(close, title="Fuente MA")
// Capital inicial
capital = 5000
// Tamaño de posición (10% del capital)
positionSize = capital * 0.10
// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100
// Número de ruedas para el filtro estocástico
filterPeriods = input.int(12, title="Ruedas de Filtro Estocástico")
// Cálculo del Estocástico
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)
// Cálculo de la Media Móvil
ma = ta.sma(maSource, maLength)
// Filtro estocástico
stochasticFilter = ta.sma(k > 50 ? 1 : 0, filterPeriods)
// Condiciones de entrada en largo y corto
longCondition = (ta.crossunder(k, oversold) or ta.crossover(stochasticFilter, 1)) and ma > ma[1]
shortCondition = (ta.crossover(k, overbought) or ta.crossover(stochasticFilter, 1)) and ma < ma[1]
// Condiciones de salida
exitLongCondition = ta.crossover(k, ma) and ma < ma[1]
exitShortCondition = ta.crossunder(k, ma) and ma > ma[1]
// Estrategia
if (longCondition)
strategy.entry("Long", strategy.long, qty=positionSize)
strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent))
if (shortCondition)
strategy.entry("Short", strategy.short, qty=positionSize)
strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent))
// Cierre de posiciones
if (exitLongCondition)
strategy.close("Long")
if (exitShortCondition)
strategy.close("Short")