Die Strategie ist ein Trend-Tracking-Trading-System, das auf der Theorie des Albrooks-Preisverhaltens und den MACD-Indikatoren basiert. Es identifiziert Markttrends durch die Kombination von Moving Averages (SMA) und MACD-Indikatoren und handelt zu geeigneten Zeiten. Die Strategie verwendet ein festes Risiko-Gewinn-Verhältnis, um die Stop-Loss- und Stop-Out-Ebene für jeden Handel zu verwalten und die Risiken effektiv zu kontrollieren.
Die Kernlogik der Strategie umfasst die folgenden Schlüsselelemente:
Es ist ein vollständiges Handelssystem, das die klassische Theorie des Preisverhaltens mit technischen Indikatoren kombiniert. Die Strategie erzielt eine relativ robuste Handelswirkung durch strenge Signalbestätigungsmechanismen und Risikomanagementmethoden. Obwohl einige inhärente Risiken vorhanden sind, kann die Stabilität und Profitabilität der Strategie durch die empfohlene Optimierungsrichtung weiter verbessert werden.
/*backtest
start: 2024-11-15 00:00:00
end: 2025-02-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Abdulhossein
//@version=6
strategy(title="Al Brooks Price Action with MACD Signals", shorttitle="Al Brooks PA + MACD", overlay=true)
// Inputs
length = input.int(52, title="Moving Average Length", minval=1)
riskRewardRatio = input.float(2.0, title="Risk/Reward Ratio", minval=1.0)
stopLossBuffer = input.float(0.01, title="Stop Loss Buffer (in %)", minval=0.001)
candleType = input.string("Close", title="Candle Type", options=["Close", "Open"])
// Indicators
sma = ta.sma(close, length)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
price = candleType == "Close" ? close : open
// Trend Conditions
uptrend = price > sma
downtrend = price < sma
// Buy/Sell Signals
buySignal = price > sma and macdLine > 0 and macdLine > signalLine
sellSignal = price < sma and macdLine < 0 and macdLine < signalLine
// Trade Execution
if (buySignal)
longStopLoss = close * (1 - stopLossBuffer)
longTakeProfit = close + (close - longStopLoss) * riskRewardRatio
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit", "Buy", limit=longTakeProfit, stop=longStopLoss)
if (sellSignal)
shortStopLoss = close * (1 + stopLossBuffer)
shortTakeProfit = close - (shortStopLoss - close) * riskRewardRatio
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit", "Sell", limit=shortTakeProfit, stop=shortStopLoss)
// Plot Signals
plotarrow(buySignal[2] ? 1 : na, colorup=color.new(color.green, 50), title="Buy Signal Arrow", offset=-1)
plotarrow(sellSignal[2] ? -1 : na, colordown=color.new(color.red, 50), title="Sell Signal Arrow", offset=-1)
// Close Positions
if (not buySignal and not sellSignal)
strategy.close("Sell")
strategy.close("Buy")
// Support and Resistance
support = ta.lowest(low, length)
resistance = ta.highest(high, length)
plot(support, title="Support", color=color.green, linewidth=1, style=plot.style_stepline)
plot(resistance, title="Resistance", color=color.red, linewidth=1, style=plot.style_stepline)
plot(sma, title="SMA", color=color.blue, linewidth=2)
// Alerts
alertcondition(buySignal[2], title="Buy Alert", message="Buy Signal Triggered")
alertcondition(sellSignal[2], title="Sell Alert", message="Sell Signal Triggered")