Stratégie d'équilibre de la fente du lion

Auteur:ChaoZhang est là., Date: 2023-11-02 16h55
Les étiquettes:

img

Résumé

La stratégie de balance de la fissure du lion est une stratégie de trading à court terme simple basée sur des croisements de moyennes mobiles. Elle utilise principalement deux moyennes mobiles - lorsque le MA rapide traverse au-dessus du MA lent depuis le bas, allez long; lorsque le MA rapide traverse au-dessous du MA lent depuis le haut, fermez la position.

La logique de la stratégie

La stratégie utilise deux moyennes mobiles: un MA rapide (smallMAPeriod) et un MA lent (bigMAPeriod). Les deux MA forment un canal de prix, avec le MA rapide comme base du canal et le MA lent comme plafond du canal. Lorsque le prix dépasse la base du canal vers le haut, passez long; lorsque le prix dépasse le plafond du canal vers le bas, fermez la position.

Plus précisément, la stratégie calcule d'abord le MA rapide (smallMA) et le MA lent (bigMA). Elle calcule ensuite la ligne d'achat (buyMA), qui est (100 - percentBelowToBuy) % du MA lent. Lorsque le MA rapide franchit le niveau de la ligne d'achat vers le haut, passez long; lorsque vous atteignez 1% de profit ou que vous détenez 7 barres sans profit, fermez la position.

En résumé, la stratégie vise à capturer la "fissure du lion" entre les MAs pour les bénéfices à court terme.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. Un concept simple, facile à comprendre et à mettre en œuvre, les croisements à double MA sont la stratégie d'indicateur technique la plus élémentaire.

  2. La stratégie utilise directement le backtester intégré de TradingView sans mise en œuvre supplémentaire.

  3. TradingView peut afficher directement les signaux commerciaux et les données statistiques sur les graphiques.

  4. Risque contrôlable: la stratégie définit les conditions de prise de profit et de stop loss pour contrôler efficacement les pertes par transaction.

  5. Les utilisateurs peuvent ajuster les paramètres MA et d'autres indicateurs pour s'adapter à différents produits et styles de trading.

Analyse des risques

La stratégie comporte également les risques suivants:

  1. Les stratégies à double MA ont tendance à générer de faux signaux lors des consolidations.

  2. L'utilisation de seuls croisements MA ignore d'autres facteurs, ce qui peut entraîner une mauvaise qualité du signal.

  3. L'optimisation des paramètres est difficile.

  4. Les stratégies simples à double MA sont souvent plus performantes dans les backtests que dans le trading en direct.

  5. Les niveaux fixes de stop loss peuvent ne pas s'adapter aux conditions changeantes du marché.

Directions d'optimisation

La stratégie peut être améliorée par les aspects suivants:

  1. Ajouter d'autres filtres comme le volume et la volatilité pour éviter des signaux inefficaces lors des consolidations.

  2. Incorporer le biais de tendance pour éviter les transactions contre-tendance.

  3. Utilisez l'apprentissage automatique pour trouver des paramètres optimaux, comme l'optimisation séquentielle des paramètres ou des algorithmes génétiques.

  4. Améliorer les stratégies de stop-loss, comme le stop-loss de suivi et le stop-loss adaptatif pour une meilleure flexibilité.

  5. Optimiser le calendrier d'entrée en utilisant d'autres indicateurs pour identifier les points d'entrée à plus grande probabilité.

  6. Effectuer des recherches quantitatives et des tests antérieurs pour améliorer la stabilité des ensembles de paramètres optimisés.

  7. Développer des systèmes de négociation automatisés pour optimiser et évaluer systématiquement les combinaisons de paramètres.

Conclusion

La stratégie du Lion Fissure Balance est une excellente stratégie de démarrage à apprendre pour les débutants. Elle applique la logique simple du double MA crossover et définit des règles de prise de profit et d'arrêt de perte pour capturer les fluctuations de prix à court terme. La stratégie est facile à comprendre et à mettre en œuvre, et montre de bons résultats de backtest. Cependant, elle souffre de difficultés d'optimisation et de performances en direct douteuses. Nous pouvons améliorer la stratégie en incorporant d'autres indicateurs, en optimisant les paramètres et en développant des systèmes de trading automatisés.


/*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 --- ///////////////

Plus de