
Die Strategie ist ein Trend-Tracking-Trading-System, basierend auf einer doppelten Gleichgewichtskreuzung. Die Strategie nutzt die klassische Theorie der technischen Analyse in Verbindung mit modernen quantitativen Handelsmethoden, um einen vollautomatischen Handelsentscheidungsprozess zu ermöglichen.
Die Kernlogik der Strategie basiert auf dem Kreuzungssignal zweier unterschiedlicher periodischer Moving Averages. Wenn die kurzfristige Durchschnittslinie (9. Tag) aufwärts über die langfristige Durchschnittslinie ( 21. Tag) geht, wird die Marktdynamik als aufwärts betrachtet und ein Mehrfachsignal ausgelöst. Wenn die kurzfristige Durchschnittslinie nach unten über die langfristige Durchschnittslinie geht, wird die Marktdynamik als nach unten betrachtet und der Handel endet.
Dies ist eine klassische und praktische Trend-Tracking-Strategie, die die Marktdynamik durch eine doppelte Gleichgewichtskreuzung erfasst. Obwohl es ein gewisses Risiko von Rückstand und Falschsignalen gibt, ist es aufgrund seiner einfachen und stabilen Eigenschaften ein wichtiges Instrument im Bereich des quantitativen Handels. Durch die vorgeschlagene Optimierungsrichtung werden die Stabilität und die Profitabilität der Strategie voraussichtlich weiter verbessert.
/*backtest
start: 2024-05-20 00:00:00
end: 2024-12-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Simple MA Crossover Strategy", overlay=true)
// Input parameters
shortMA = ta.sma(close, 9)
longMA = ta.sma(close, 21)
// Buy/Sell conditions
buyCondition = ta.crossover(shortMA, longMA)
sellCondition = ta.crossunder(shortMA, longMA)
// Plot moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
// Execute trades
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")
// Track trades, wins, and losses
var int totalTrades = 0
var int totalWins = 0
var int totalLosses = 0
if (strategy.opentrades > 0)
totalTrades := totalTrades + 1
if (strategy.opentrades == 0 and strategy.opentrades[1] > 0)
if (strategy.netprofit > 0)
totalWins := totalWins + 1
else
totalLosses := totalLosses + 1
// Plot trade statistics
var label tradeStats = na
if (not na(tradeStats))
label.delete(tradeStats)
tradeStats := label.new(bar_index, high, text="Trades: " + str.tostring(totalTrades) + "\nWins: " + str.tostring(totalWins) + "\nLosses: " + str.tostring(totalLosses), style=label.style_label_down, color=color.white, textcolor=color.black)