Cette stratégie utilise des moyennes mobiles pour former un canal de prix et générer des signaux lorsque le prix sort des bandes de canaux.
Calculer les moyennes mobiles, avec des options comme SMA/EMA/WMA/RMA.
La bande supérieure est un certain pourcentage d'augmentation de la moyenne mobile.
Options pour le trading long, court ou bidirectionnel.
Le point de prise de profit est un certain pourcentage d'augmentation du prix d'entrée.
Il est facile de déterminer la tendance en utilisant des moyennes mobiles.
Les paramètres réglables sont adaptés aux différentes périodes de détention et aux différentes préférences de risque.
Les orientations longues/courtes facultatives s'adaptent aux différentes conditions du marché.
Un pourcentage fixe de stop loss et de take profit permet une maîtrise.
Ils sont enclins à être piégés quand la tendance change brusquement.
Une régulation incorrecte des paramètres risque d'entraîner une survente ou un retard.
Le pourcentage fixe d'arrêt des pertes/profits manque de flexibilité.
Augmentation de la fréquence des échanges et des coûts de commission avec les échanges bidirectionnels.
Optimiser les paramètres de la moyenne mobile pour équilibrer le retard et le bruit.
Optimiser la bande passante du canal pour correspondre à la fréquence de volatilité du marché.
Testez différentes configurations de stop loss et de profit.
Ajouter des indicateurs de tendance et d'oscillation pour évaluer les conditions générales du marché.
Mettre en place des filtres de temps pour éviter les impacts d'événements importants.
La stratégie permet de suivre une tendance simple à travers les canaux de moyenne mobile, mais nécessite une optimisation plus forte des paramètres et un contrôle des risques.
/*backtest start: 2023-08-17 00:00:00 end: 2023-09-16 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/ // © TaylorTneh //@version=4 // strategy("Moving Average Band Taylor V1",shorttitle="MA Band+",overlay=true,default_qty_type=strategy.cash,default_qty_value=1000,initial_capital=1000,currency=currency.USD,commission_value=.1) price = input(close, title="Source") mabtype = input(title="Moving Average Type", defval="RMA", options=["SMA", "EMA", "RMA", "WMA"]) malen = input(10, "MA Period : 10") magap = input(0.6, "Band Gap : 0.6", minval = -10, maxval = 10, step = 0.1) mabup = if mabtype == "SMA" sma(high, malen) else if mabtype == "EMA" ema(high, malen) else if mabtype == "WMA" wma(high, malen) else if mabtype == "RMA" rma(high, malen) mabdn = if mabtype == "SMA" sma(low, malen) else if mabtype == "EMA" ema(low, malen) else if mabtype == "WMA" wma(low, malen) else if mabtype == "RMA" rma(low, malen) upex = mabup * (1 + magap/100) dnex = mabdn * (1 - magap/100) plot(upex, "Upper MA Band", color.orange) plot(dnex, "Lower MA Band", color.orange) //-------------------------------------------- (Strategy) strategy.entry("Long", strategy.long, stop = upex) strategy.entry("Short", strategy.short, stop = dnex) //Long Only//strategy.entry("Long", strategy.long, stop = upex) //Long Only//strategy.exit("Short", stop = dnex) //Short Only//strategy.entry("Short", strategy.short, stop = dnex) //Short Only//strategy.exit("Long", stop = upex) //-------------------------------------------- (Take Profit & Stop Lose) stopPer = input(500.0, title='# Stop Loss %', type=input.float) / 100 takePer = input(500.0, title='# Take Profit %', type=input.float) / 100 //Determine where you've entered and in what direction longStop = strategy.position_avg_price * (1 - stopPer) shortStop = strategy.position_avg_price * (1 + stopPer) shortTake = strategy.position_avg_price * (1 - takePer) longTake = strategy.position_avg_price * (1 + takePer) if strategy.position_size > 0 strategy.exit(id="L-TP/SL", stop=longStop, limit=longTake) if strategy.position_size < 0 strategy.exit(id="S-TP/SL", stop=shortStop, limit=shortTake) //-------------------------------------------- (Sample Time Filter Strategy) //fromyear = input(2018, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") //toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") //frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") //tomonth = input(10, defval = 10, minval = 01, maxval = 12, title = "To Month") //fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") //today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //strategy.entry("Long", strategy.long, stop = upex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) //strategy.entry("Short", strategy.short, stop = dnex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) //--------------------------------------------