
Bei der Strategie handelt es sich um ein Trendverfolgungssystem, das auf doppelten gleitenden Durchschnittskreuzungssignalen basiert und mit einem dynamischen Stop-Profit- und Stop-Loss-Mechanismus kombiniert ist. Die Strategie verwendet 5- und 12-Perioden-einfache gleitende Durchschnitte (SMAs) zur Generierung von Handelssignalen und optimiert das Risiko-Rendite-Verhältnis durch dynamische Anpassung der Take-Profit- und Stop-Loss-Niveaus. Der anfängliche Take-Profit wird auf 10 % und der Stop-Loss auf 5 % festgelegt. Wenn sich der Preis in eine günstige Richtung bewegt, wird das Take-Profit-Niveau auf 20 % angepasst und der Stop-Loss auf 2,5 % verschärft. um Gewinne zu schützen.
Die Kernlogik der Strategie basiert auf der Crossover-Beziehung zwischen dem schnellen gleitenden Durchschnitt (5 Perioden) und dem langsamen gleitenden Durchschnitt (12 Perioden). Wenn die schnelle Linie die langsame Linie von unten nach oben kreuzt, generiert das System ein Long-Signal und eröffnet eine Position; wenn die schnelle Linie die langsame Linie von oben nach unten kreuzt, schließt das System die Position. Die Einzigartigkeit der Strategie liegt in ihrem dynamischen Risikomanagementmechanismus: Sobald eine Position etabliert ist, überwacht das System die Preistrends in Echtzeit und passt die Take-Profit- und Stop-Loss-Niveaus dynamisch entsprechend den Preisänderungen an, um den Gewinn zu maximieren und gleichzeitig die Risiken zu kontrollieren. .
Mit dieser Strategie erreichen Sie ein effektives Erfassen von Trends und eine dynamische Kontrolle der Risiken durch die Kombination klassischer gleitender Durchschnitts-Crossover-Signale mit innovativen dynamischen Risikomanagementmechanismen. Das Konzept des Strategiedesigns ist klar, die Implementierungsmethode ist präzise und effektiv und es weist eine gute Praktikabilität und Skalierbarkeit auf. Durch kontinuierliche Optimierung und Verbesserung soll mit dieser Strategie eine stabile Gewinnentwicklung bei tatsächlichen Transaktionen erzielt werden.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("My Moving Average Crossover Strategy with Take Profit and Stop Loss", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
//risk_free_rate = float(request.security("IRUS", "D", close)/request.security("IRUS", "D", close[1]) - 1 ))
// MA periods
fastLength = input.int(5, title="Fast MA Length")
slowLength = input.int(12, title="Slow MA Length")
// Take Profit and Stop Loss
takeProfitLevel = input(10, title="Take Profit (пункты)") // Take profit % from the last price
stopLossLevel = input(5, title="Stop Loss (пункты)") // Stop loss % from the last price
takeProfitLevel_dyn = input(20, title="Dynamic Take Profit (пункты)") // Move TP if current_price higher buy_px
stopLossLevel_dyn = input(2.5, title="Dynamic Stop Loss (пункты)") // S Move SL if current_price higher buy_px
// Вычисление скользящих средних
fastMA = ta.sma(close, fastLength)
slowMA= ta.sma(close, slowLength)
// Conditions for Sell and Buy
longCondition = ta.crossover (fastMA, slowMA) // покупаем, если короткая MA персекает длинную снизу-вверх
shortCondition = ta.crossunder(fastMA, slowMA) // продаем, если короткая MA персекает длинную сверху-вниз
// Buy position condition
if (longCondition)
strategy.entry("Buy", strategy.long)
// Dynamic TP SL leveles
takeProfitPrice = strategy.position_avg_price * (1+ takeProfitLevel / 100)
stopLossPrice = strategy.position_avg_price * (1-stopLossLevel / 100)
entryPrice = strategy.position_avg_price
if (strategy.position_size > 0) // если есть открытая позиция
// takeProfitPrice := entryPrice * (1+ takeProfitLevel / 100)
// stopLossPrice := entryPrice * (1-stopLossLevel / 100)
// // Перемещение Stop Loss и Take Profit
if (close > entryPrice)
takeProfitPrice := close * (1+ takeProfitLevel_dyn / 100)
stopLossPrice := close * (1- stopLossLevel_dyn/ 100)
if (shortCondition)
strategy.close("Buy")
strategy.exit("Take Profit/Stop loss", "Buy", limit=takeProfitPrice, stop=stopLossPrice)
// Drawing MA lines
plot(fastMA, color=color.blue, title="Fast Moving Average")
plot(slowMA, color=color.orange, title="Slow Moving Average")
// Визуализация
plot(longCondition ? na : takeProfitPrice, title="Take Profit Level", color=color.green, linewidth=1, style=plot.style_line)
plot(longCondition ? na: stopLossPrice, title="Stop Loss Level", color=color.red, linewidth=1, style=plot.style_line)