La stratégie de Martin est une stratégie de trading fréquente qui combine des croisements de moyennes mobiles et des signaux de rebond pour générer des signaux d'entrée et de sortie.
La stratégie utilise des moyennes mobiles simples de 3 jours et 8 jours et leurs signaux de croisement. Un signal long est généré lorsque le MA de 3 jours franchit le MA de 8 jours, et un signal court est généré lorsque le MA de 3 jours franchit le MA de 8 jours.
Si aucune position n'existe, la stratégie déterminera l'entrée en fonction des signaux de croisement. Après l'entrée, le prix de stop loss et le prix de prise de profit seront calculés en fonction du dernier prix de clôture, du pourcentage de stop loss et du pourcentage de prise de profit. Par exemple, lors de la tenue d'une position longue, le prix de stop loss est le dernier prix de clôture moins le pourcentage de stop loss multiplié par le MA de 8 jours; le prix de prise de profit est le dernier prix de clôture plus le pourcentage de prise de profit multiplié par le MA de 8 jours.
S'il y a une position longue existante, lorsque le prix déclenche le take profit ou le stop loss, si un signal de rebond du MA de 8 jours se produit, la position sera fermée.
La stratégie trace également les points d'entrée et de sortie sur le graphique. Par exemple, une longue entrée est tracée comme un triangle ascendant et une longue sortie comme un triangle descendant. Cela aide à juger visuellement les entrées et les sorties.
Les avantages de cette stratégie sont les suivants:
Les principaux risques de cette stratégie sont les suivants:
Les risques peuvent être réduits en augmentant raisonnablement le pourcentage de stop-loss, en optimisant les paramètres de MA, en introduisant des conditions de filtrage supplémentaires, etc. Il est également important d'évaluer correctement la tolérance personnelle et d'éviter les surtrades.
Cette stratégie peut être optimisée par les aspects suivants:
La stratégie Martin est une stratégie de trading à court terme. Elle capture les tendances à court terme formées par des croisements de moyennes mobiles, et gère les risques avec des arrêts et des bénéfices appropriés.
/*backtest start: 2022-11-17 00:00:00 end: 2023-11-23 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/ // © blackcat1402 //@version=5 strategy('[blackcat] L1 MartinGale Scalping Strategy', overlay=true, pyramiding = 5) // Define input variables takeProfit = input(1.03, title='Take Profit') stopLoss = input(0.95, title='Stop Loss') inputTradingMode = input.string(defval='Long', options=['Long', 'Short', 'BiDir'], title='Trading Mode') //The purpose of this rule is to forbid short entries, only long etries will be placed. The rule affects the following function: 'entry'. strategy.risk.allow_entry_in(inputTradingMode == 'Long' ? strategy.direction.long : inputTradingMode == 'Short' ? strategy.direction.short : strategy.direction.all) // Define strategy logic entryPrice = 0.0 stopPrice = 0.0 takeProfitPrice = 0.0 stopLossPrice = 0.0 // Define SMA crossover and crossunder signals sma3 = ta.sma(close, 3) sma8 = ta.sma(close, 8) plot(sma3, color=color.yellow) plot(sma8, color=color.fuchsia) crossoverSignal = ta.crossover(sma3, sma8) crossunderSignal = ta.crossunder(sma3, sma8) crossoverState = sma3 > sma8 crossunderState = sma3 < sma8 if strategy.position_size == 0 if crossoverState strategy.entry('Buy', strategy.long) entryPrice := close stopPrice := close - stopLoss * sma8[1] takeProfitPrice := close + takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice if crossunderState strategy.entry('Sell', strategy.short) entryPrice := close stopPrice := close + stopLoss * sma8[1] takeProfitPrice := close - takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice if strategy.position_size > 0 if (close > takeProfitPrice or close < stopLossPrice) and crossunderState strategy.close('Buy') entryPrice := 0.0 stopPrice := 0.0 takeProfitPrice := 0.0 stopLossPrice := 0.0 stopLossPrice else strategy.entry('Buy', strategy.long) entryPrice := close stopPrice := close - stopLoss * sma8[1] takeProfitPrice := close + takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice if strategy.position_size < 0 if (close > takeProfitPrice or close < stopLossPrice) and crossoverState strategy.close('Sell') entryPrice := 0.0 stopPrice := 0.0 takeProfitPrice := 0.0 stopLossPrice := 0.0 stopLossPrice else strategy.entry('Sell', strategy.short) entryPrice := close stopPrice := close + stopLoss * sma8[1] takeProfitPrice := close - takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice // Plot entry and exit points plotshape(strategy.position_size > 0 and crossoverSignal, 'Buy Entry', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small) plotshape(strategy.position_size > 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Buy Exit', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small) plotshape(strategy.position_size < 0 and crossunderSignal, 'Sell Entry', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small) plotshape(strategy.position_size < 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Sell Exit', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small)