Cette stratégie utilise une combinaison d'indicateurs multiples pour déterminer la direction de la tendance et les opportunités de négociation, en adoptant une approche de l'équilibre de pression pour augmenter le taux de gain des transactions.
Utilisez l'EMA pour calculer la moyenne mobile afin de déterminer la direction générale de la tendance.
Utilisez le MACD pour calculer la différence entre les moyennes mobiles rapides et lentes. Lorsque la différence est supérieure à 0, elle indique une tendance haussière, lorsqu'elle est inférieure à 0, elle indique une tendance baissière.
Utilisez le PSAR pour calculer le point de variation continue. Lorsque la valeur du PSAR est importante, elle indique une tendance à la baisse, lorsque la valeur du PSAR est faible, elle indique une tendance à la hausse.
Lorsque les jugements des trois indicateurs sont cohérents, il s'agit d'une tendance claire qui permet des transactions d'entrée.
Entrez des transactions basées sur des critères d'achat et de vente, et définissez des points de stop loss et de take profit.
Les règles spécifiques sont les suivantes:
L'utilisation de plusieurs indicateurs pour déterminer la tendance améliore la précision.
L'ouverture de transactions basée sur des tendances déterminées par le biais de la balance de pression augmente le taux de gain.
La mise en place d'un stop loss et d'un take profit peut limiter les pertes et bloquer les bénéfices.
Des règles de négociation claires et systématiques le rendent adapté au trading algorithmique.
Les paramètres peuvent être optimisés pour s'adapter à différents produits et délais.
Le jugement de la tendance peut être erroné, ce qui entraîne une orientation commerciale incorrecte.
Les mouvements extrêmes du marché peuvent générer de faux signaux des indicateurs.
La perte d'arrêt est trop grande, incapable de sortir à temps.
Un réglage incorrect des paramètres conduit à des transactions excessives ou manquantes.
Les produits non liquides ne peuvent pas remplir les plans stop loss et take profit.
Les risques peuvent être réduits en optimisant les paramètres, en ajustant les arrêts et en sélectionnant des produits liquides.
Ajustez la période EMA pour optimiser la précision de la tendance.
Ajustez la période rapide et lente du MACD pour améliorer la sensibilité.
Optimisez les taux de stop loss et de profit pour trouver l'équilibre idéal.
Ajouter d'autres indicateurs auxiliaires pour améliorer le calendrier d'entrée.
Sélectionnez des produits avec une bonne liquidité et de grandes fluctuations.
Adaptez les délais aux différentes caractéristiques du produit.
Cette stratégie intègre plusieurs indicateurs pour l'analyse des tendances et entre dans les transactions basées sur des tendances précises, avec un stop loss et un profit prédéfinis, qui peuvent capturer efficacement les mouvements du marché et obtenir de bons rendements tout en assurant une certaine rentabilité.
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 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/ // © exlux99 //@version=4 strategy(title = "Crypto Scalper", overlay = true, pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03) len = input(60, minval=1, title="Length EMA") src = input(close, title="Source") out = ema(src, len) // fast_length = input(title="Fast Length MACD", type=input.integer, defval=12) slow_length = input(title="Slow Length MACD", type=input.integer, defval=26) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Oscillator MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"]) sma_signal = input(title="Signal Line MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"]) // Calculating fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal start = input(0.02) increment = input(0.02) maximum = input(0.2) var bool uptrend = na var float EP = na var float SAR = na var float AF = start var float nextBarSAR = na if bar_index > 0 firstTrendBar = false SAR := nextBarSAR if bar_index == 1 float prevSAR = na float prevEP = na lowPrev = low[1] highPrev = high[1] closeCur = close closePrev = close[1] if closeCur > closePrev uptrend := true EP := high prevSAR := lowPrev prevEP := high else uptrend := false EP := low prevSAR := highPrev prevEP := low firstTrendBar := true SAR := prevSAR + start * (prevEP - prevSAR) if uptrend if SAR > low firstTrendBar := true uptrend := false SAR := max(EP, high) EP := low AF := start else if SAR < high firstTrendBar := true uptrend := true SAR := min(EP, low) EP := high AF := start if not firstTrendBar if uptrend if high > EP EP := high AF := min(AF + increment, maximum) else if low < EP EP := low AF := min(AF + increment, maximum) if uptrend SAR := min(SAR, low[1]) if bar_index > 1 SAR := min(SAR, low[2]) else SAR := max(SAR, high[1]) if bar_index > 1 SAR := max(SAR, high[2]) nextBarSAR := SAR + AF * (EP - SAR) tplong=input(0.245, step=0.005) sllong=input(1.0, step=0.005) tpshort=input(0.055, step=0.005) slshort=input(0.03, step=0.005) if (uptrend and hist >0 and close < out) strategy.entry("short", strategy.short, stop=nextBarSAR, comment="short") strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT', alert_message = 'closeshort') if (not uptrend and hist <0 and close > out) strategy.entry("long", strategy.long, stop=nextBarSAR, comment="long") strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT', alert_message = 'closelong')