
Cette stratégie vise à identifier les opportunités de retraits potentiels dans le marché. La stratégie utilise un système bi-linéaire: les moyennes mobiles à long terme ((MA1) et les moyennes mobiles à court terme ((MA2)). L’objectif principal est d’indiquer une opportunité de retraits potentiels dans une grande tendance lorsque le prix de clôture est inférieur à MA1 mais supérieur à MA2.
La stratégie utilise deux moyennes mobiles: MA1 (longue ligne) et MA2 (courte ligne). Le principe est que si le prix à court terme recule et teste le support de la tendance à long terme, cela peut être une occasion de faire plus. Plus précisément, si le prix de clôture est supérieur au support à long terme (MA1), cela indique que la tendance est bonne.
Cette stratégie présente les avantages suivants:
La stratégie présente également les risques suivants:
En conséquence, il est possible d’optimiser et d’améliorer les choses dans les domaines suivants:
Cette stratégie peut être optimisée dans les domaines suivants:
Cette stratégie est généralement une stratégie de retrait de ligne courte simple et pratique. Elle utilise une ligne d’équilibre pour identifier les occasions de reprise et établit des arrêts mobiles pour contrôler les risques. La stratégie est facile à comprendre et à mettre en œuvre, les paramètres sont flexibles et peuvent être ajustés pour répondre aux différentes préférences de risque.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy",
overlay=true,
initial_capital=50000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100, // 100% of balance invested on each trade
commission_type=strategy.commission.cash_per_contract,
commission_value=0.005) // Interactive Brokers rate
// Get user input
i_ma1 = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2 = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")
// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)
// Check filter(s)
f_dateFilter =true
// Check buy/sell conditions
var float buyPrice = 0
buyCondition = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent
// Enter positions
if buyCondition
strategy.entry(id="Long", direction=strategy.long)
if buyCondition[1]
buyPrice := open
// Exit positions
if sellCondition or stopCondition
strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
buyPrice := na
// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)