Die Lion Fissure Balance Strategie ist eine einfache kurzfristige Handelsstrategie, die auf gleitenden Durchschnittskreuzungen basiert. Sie verwendet hauptsächlich zwei gleitende Durchschnitte - wenn der schnelle MA über den langsamen MA von unten überschreitet, gehen Sie lang; wenn der schnelle MA unter den langsamen MA von oben überschreitet, schließen Sie die Position.
Die Strategie verwendet zwei gleitende Durchschnitte: einen schnellen MA (smallMAPeriod) und einen langsamen MA (bigMAPeriod). Die beiden MA bilden einen Preiskanal, wobei der schnelle MA die Kanalbasis und der langsame MA die Kanalobergrenze darstellt. Wenn der Preis über die Kanalbasis nach oben bricht, gehen Sie lang; wenn der Preis die Kanalobergrenze nach unten bricht, schließen Sie die Position.
Spezifischerweise berechnet die Strategie zunächst den schnellen MA (smallMA) und den langsamen MA (bigMA). Anschließend berechnet sie die Kauflinie (buyMA), die (100 - ProzentBelowToBuy) % des langsamen MA beträgt. Wenn der schnelle MA über die Kauflinie nach oben geht, gehen Sie lang; wenn Sie 1% Gewinn erzielen oder 7 Bars ohne Gewinn halten, schließen Sie die Position.
Zusammenfassend soll die Strategie die "Löwenspalte" zwischen den MAs für kurzfristige Gewinne erfassen.
Die Strategie weist folgende Vorteile auf:
Einfaches Konzept, leicht zu verstehen und umzusetzen.
Die Strategie verwendet direkt den integrierten Backtester von TradingView ohne zusätzliche Implementierung.
TradingView kann Handelssignale und statistische Daten direkt auf Diagrammen anzeigen.
Die Strategie legt Gewinnnahme- und Stop-Loss-Bedingungen fest, um Verluste pro Handel effektiv zu kontrollieren.
Flexible Anpassung: Benutzer können die MA-Parameter und andere Indikatoren an unterschiedliche Produkte und Handelsstile anpassen.
Die Strategie birgt außerdem folgende Risiken:
Bei der Anwendung von Dual-MA-Strategien treten während der Konsolidierung tendenziell falsche Signale auf.
Die Verwendung von nur MA-Kreuzungen ignoriert andere Faktoren, was möglicherweise zu einer schlechten Signalqualität führt.
Schwierige Parameteroptimierung. Die optimale MA-Kombination erfordert umfangreiche Berechnungen.
Einfache Dual-MA-Strategien haben oft bessere Ergebnisse als Live-Trading.
Schwierige Stop-Loss-Verhältnisse: Festgelegte Stop-Loss-Level können sich möglicherweise nicht an veränderte Marktbedingungen anpassen.
Die Strategie kann in folgenden Aspekten verbessert werden:
Zusätzliche Filter wie Volumen und Volatilität werden hinzugefügt, um ineffiziente Signale während der Konsolidierung zu vermeiden.
Einbeziehung von Trendverzerrungen, um einen gegentrendischen Handel zu vermeiden.
Verwenden Sie maschinelles Lernen, um optimale Parameter zu finden, wie z.B. sequentielle Parameteroptimierung oder genetische Algorithmen.
Verbessern Sie Stop-Loss-Strategien, wie Trailing Stop-Loss und Adaptive Stop-Loss für eine bessere Flexibilität.
Optimieren Sie den Eintrittszeitpunkt unter Verwendung anderer Indikatoren, um Einstiegspunkte mit höherer Wahrscheinlichkeit zu identifizieren.
Durchführung quantitativer Forschung und Backtesting zur Verbesserung der Stabilität der optimierten Parametermengen.
Entwicklung automatisierter Handelssysteme zur systematischen Optimierung und Bewertung von Parameterkombinationen.
Die Strategie Lion Fissure Balance ist eine ausgezeichnete Starter-Strategie für Anfänger. Sie wendet die einfache doppelte MA-Crossover-Logik an und legt Gewinn- und Stop-Loss-Regeln fest, um kurzfristige Kursschwankungen zu erfassen. Die Strategie ist einfach zu verstehen und umzusetzen und zeigt gute Backtest-Ergebnisse. Sie leidet jedoch unter Optimierungsschwierigkeiten und fragwürdiger Live-Performance. Wir können die Strategie verbessern, indem wir andere Indikatoren einbeziehen, Parameter optimieren und automatisierte Handelssysteme entwickeln. Insgesamt bietet die Strategie Lion Fissure Balance eine großartige Lernplattform für quantitative Handelsanfänger.
/*backtest start: 2023-10-02 00:00:00 end: 2023-11-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © TraderHalai // This script was born out of my quest to be able to display strategy back test statistics on charts to allow for easier backtesting on devices that do not natively support backtest engine (such as mobile phones, when I am backtesting from away from my computer). There are already a few good ones on TradingView, but most / many are too complicated for my needs. // //Found an excellent display backtest engine by 'The Art of Trading'. This script is a snippet of his hard work, with some very minor tweaks and changes. Much respect to the original author. // //Full credit to the original author of this script. It can be found here: https://www.tradingview.com/script/t776tkZv-Hammers-Stars-Strategy/?offer_id=10&aff_id=15271 // // This script can be copied and airlifted onto existing strategy scripts of your own, and integrates out of the box without implementation of additional functions. I've also added Max Runup, Average Win and Average Loss per trade to the orignal script. // //Will look to add in more performance metrics in future, as I further develop this script. // //Feel free to use this display panel in your scripts and strategies. //Thanks and enjoy! :) //@version=5 // strategy("Strategy BackTest Display Statistics - TraderHalai", overlay=true, default_qty_value= 5, default_qty_type = strategy.percent_of_equity, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1) //DEMO basic strategy - Use your own strategy here - Jaws Mean Reversion from my profile used here source = input(title = "Source", defval = close) smallMAPeriod = input(title = "Small Moving Average", defval = 2) bigMAPeriod = input(title = "Big Moving Average", defval = 8) percentBelowToBuy = input(title = "Percent below to buy %", defval = 1) smallMA = ta.sma(source, smallMAPeriod) bigMA = ta.sma(source, bigMAPeriod) buyMA = ((100 - percentBelowToBuy) / 100) * ta.sma(source, bigMAPeriod)[0] buy = ta.crossunder(smallMA, buyMA) if(buy) strategy.entry("BUY", strategy.long) if(strategy.openprofit >= strategy.position_avg_price * 0.01) // 1% profit target strategy.close("BUY") if(ta.barssince(buy) >= 7) //Timed Exit, if you fail to make 1 percent in 7 candles. strategy.close("BUY") ///////////////////////////// --- BEGIN TESTER CODE --- //////////////////////// // COPY below into your strategy to enable display //////////////////////////////////////////////////////////////////////////////// // strategy.initial_capital = 50000 // // Declare performance tracking variables // drawTester = input.bool(true, "Draw Tester") // var balance = strategy.initial_capital // var drawdown = 0.0 // var maxDrawdown = 0.0 // var maxBalance = 0.0 // var totalWins = 0 // var totalLoss = 0 // // Prepare stats table // var table testTable = table.new(position.top_right, 5, 2, border_width=1) // f_fillCell(_table, _column, _row, _title, _value, _bgcolor, _txtcolor) => // _cellText = _title + "\n" + _value // table.cell(_table, _column, _row, _cellText, bgcolor=_bgcolor, text_color=_txtcolor) // // Custom function to truncate (cut) excess decimal places // truncate(_number, _decimalPlaces) => // _factor = math.pow(10, _decimalPlaces) // int(_number * _factor) / _factor // // Draw stats table // var bgcolor = color.new(color.black,0) // if drawTester // if barstate.islastconfirmedhistory // // Update table // dollarReturn = strategy.netprofit // f_fillCell(testTable, 0, 0, "Total Trades:", str.tostring(strategy.closedtrades), bgcolor, color.white) // f_fillCell(testTable, 0, 1, "Win Rate:", str.tostring(truncate((strategy.wintrades/strategy.closedtrades)*100,2)) + "%", bgcolor, color.white) // f_fillCell(testTable, 1, 0, "Starting:", "$" + str.tostring(strategy.initial_capital), bgcolor, color.white) // f_fillCell(testTable, 1, 1, "Ending:", "$" + str.tostring(truncate(strategy.initial_capital + strategy.netprofit,2)), bgcolor, color.white) // f_fillCell(testTable, 2, 0, "Avg Win:", "$"+ str.tostring(truncate(strategy.grossprofit / strategy.wintrades, 2)), bgcolor, color.white) // f_fillCell(testTable, 2, 1, "Avg Loss:", "$"+ str.tostring(truncate(strategy.grossloss / strategy.losstrades, 2)), bgcolor, color.white) // f_fillCell(testTable, 3, 0, "Profit Factor:", str.tostring(truncate(strategy.grossprofit / strategy.grossloss,2)), strategy.grossprofit > strategy.grossloss ? color.green : color.red, color.white) // f_fillCell(testTable, 3, 1, "Max Runup:", str.tostring(truncate(strategy.max_runup, 2 )), bgcolor, color.white) // f_fillCell(testTable, 4, 0, "Return:", (dollarReturn > 0 ? "+" : "") + str.tostring(truncate((dollarReturn / strategy.initial_capital)*100,2)) + "%", dollarReturn > 0 ? color.green : color.red, color.white) // f_fillCell(testTable, 4, 1, "Max DD:", str.tostring(truncate((strategy.max_drawdown / strategy.equity) * 100 ,2)) + "%", color.red, color.white) // // --- END TESTER CODE --- ///////////////