Shawrie
- Bibliotheken
- Kevin Kipkoech
- Version: 1.0
- Aktivierungen: 5
Dieses Pine Script implementiert eine Gaussian Channel + Stochastic RSI Strategie für TradingView. Es berechnet einen Gauß-gewichteten gleitenden Durchschnitt (GWMA) und seine Standardabweichung, um einen oberen und unteren Kanal zu bilden. Ein stochastischer RSI wird ebenfalls berechnet, um das Momentum zu bestimmen. Eine Long-Position wird eingegangen, wenn der Kurs über dem oberen Gaußschen Band schließt und die K-Linie des Stoch RSI die D-Linie überschreitet. Die Position wird geschlossen, wenn der Preis wieder unter das obere Band fällt. Das Skript umfasst Provisionen, Kapitalmanagement und Datumsfilterung.
Hier ist der Code
//@version=5 strategy("Gaussian Channel + Stoch RSI Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=1) // Benutzereingaben length = input.int(20, "Gaussian Length", minval=5) multiplier = input.float(2.0, "Channel Multiplier", step=0.1) rsiLength = input.int(14, "RSI-Länge", minval=1) stochLength= input.int(14, "Stoch RSI-Länge", minval=1) kLength = input.int(3, "Stoch K-Glättung", minval=1) dLength = input.int(3, "Stoch D-Glättung", minval=1) // Gaußsche gewichtete gleitende Mittelwertfunktion f_gauß(source, length) => half = (length - 1) / 2.0 sum = 0.0 norm = 0.0 // Gaußsche Standardabweichung als Länge/6 für eine glatte Kurve gewählt denom = (Länge / 6.0) * (Länge / 6.0) for i = 0 to Länge - 1 x = i - half w = math.exp(-(x * x) / (2 * denom)) sum += source[i] * w norm += w sum / norm // Gaußsche gewichtete Standardabweichungsfunktion f_gaussian_std(source, length) => half = (length - 1) / 2.0 gavg = f_gaussian(source, length) sum = 0.0 norm = 0.0 denom = (length / 6.0) * (length / 6.0) for i = 0 to length - 1 x = i - half w = math.exp(-(x * x)/(2*denom)) diff = source[i] - gavg sum += diff * diff * w norm += w math.sqrt(sum/norm) // Gauß-Kanal berechnen gaussMid = f_gaussian(close, length) gaussStd = f_gaussian_std(close, length) gaussUpper = gaussMid + gaussStd * Multiplikator gaussLower = gaussMid - gaussStd * Multiplikator // Stochastische RSI-Berechnung rsi = ta.rsi(close, rsiLength) rsiLowest = ta.lowest(rsi, stochLength) rsiHighest = ta.highest(rsi, stochLength) stoch = 100 * (rsi - rsiLowest) / math.max(rsiHighest - rsiLowest, 1e-10) k = ta.sma(stoch, kLength) d = ta.sma(k, dLength) // Bedingungen // Long Einstieg: Kurs schließt oberhalb der oberen Gauß-Linie UND Stoch RSI K > D (Stochastik ist "aufwärts") longCondition = close > gaussUpper und k > d // Ausstiegsbedingung: Kurs schließt unterhalb der oberen Gauß-Linie exitCondition = close < gaussUpper // Nur im angegebenen Datumsbereich handeln inDateRange = time >= timestamp("2018-01-01T00:00:00") und time < timestamp("2069-01-01T00:00:00") // Orders einreichen if inDateRange if longCondition and strategy.position_size <= 0 strategy.entry("Long", strategy.long) if exitCondition und strategy.position_size > 0 strategy.close("Long") // Gaußkanal plotten plot(gaussMid, "Gauß-Mitte", color=color.new(color.yellow, 0)) plot(gaussUpper, "Gauß-Ober", color=color.new(color.green, 0)) plot(gaussLower, "Gauß-Unter", color=color.new(color.red, 0))
