Cette stratégie est basée sur les principes de la croix d'or et de la croix de la mort des moyennes mobiles simples, prenant des décisions d'achat et de vente basées sur le croisement des moyennes mobiles de 7 jours et de 14 jours. Elle génère un signal d'achat lorsque le MA de 7 jours dépasse le MA de 14 jours depuis le bas, et un signal de vente lorsque le MA de 7 jours dépasse le MA de 14 jours depuis le haut.
La logique de trading de base de cette stratégie est basée sur les principes de croisement des moyennes mobiles de 7 jours et 14 jours. Le MA de 7 jours reflète les tendances à court terme des prix, tandis que le MA de 14 jours reflète les tendances à moyen terme. Lorsque le MA à court terme franchit le dessus du MA à moyen terme depuis le bas, cela indique que la tendance à court terme se renforce, ce qui en fait un bon moment pour aller long. Inversement, lorsque le MA à court terme franchit le bas du MA à moyen terme depuis le haut, cela indique que la tendance à court terme s'affaiblit, il faut donc fermer des positions ou faire du short.
Plus précisément, cette stratégie calcule les moyennes mobiles simples de 7 jours et de 14 jours en utilisant l'indicateur SMA. Après chaque forme de chandelier, elle compare les valeurs actuelles de la ligne de 7 jours et de la ligne de 14 jours. Si la ligne de 7 jours traverse au-dessus de la ligne de 14 jours, un signal long est généré pour aller long. Si la ligne de 7 jours traverse au-dessous de la ligne de 14 jours, un signal court est généré pour aller court.
En outre, la stratégie définit également les fonctions stop loss, take profit et trailing stop pour verrouiller les bénéfices et contrôler les risques.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte également certains risques:
Pour faire face à ces risques, les contre-mesures suivantes peuvent être envisagées:
Cette stratégie peut être optimisée dans les aspects suivants:
En conclusion, cette stratégie est très adaptée aux débutants. La logique est simple et facile à comprendre et à mettre en œuvre. Elle a également une adaptation relativement bonne au marché, avec une large marge d'ajustement et d'optimisation des paramètres pour réaliser des profits stables. Il est utile pour les débutants du trading quantitatif de l'utiliser pour commencer et apprendre.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © bensonsuntw strategy("Strategy Template[Benson]", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100) backtest_year = input(2019, type=input.integer, title='backtest_year') backtest_month = input(01, type=input.integer, title='backtest_month', minval=1, maxval=12) backtest_day = input(01, type=input.integer, title='backtest_day', minval=1, maxval=31) start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) stop_loss_and_tp = input(title="Enable Stop Loss and Take Profit", type=input.bool, defval=true) trail_stop = input(title="Enable Trail Stop", type=input.bool, defval=true) buy_stop_loss = input(0.2, type=input.float, title='buy_stop_loss') sell_stop_loss = input(0.1, type=input.float, title='sell_stop_loss') buy_tp = input(0.4, type=input.float, title='buy_tp') sell_tp =input(0.2, type=input.float, title='sell_tp') trail_stop_long = input(1.1, type=input.float, title='trail_stop_long') trail_stop_short = input(0.9, type=input.float, title='trail_stop_short') trail_stop_long_offset = input(0.05, type=input.float, title='trail_stop_long_offset') trail_stop_short_offset = input(0.05, type=input.float, title='trail_stop_short_offset') // you can set your own logic here shortCondition = crossunder(sma(close,7),sma(close,14)) longCondition = crossover(sma(close,7),sma(close,14)) strategy.entry("Buy", strategy.long, when=longCondition ) strategy.close("Buy", when=shortCondition) strategy.exit("Close Buy","Buy", limit= stop_loss_and_tp?strategy.position_avg_price * (1+buy_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1-buy_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_long:na,trail_offset=trail_stop?-strategy.position_avg_price *trail_stop_long_offset:na) strategy.entry("Sell", strategy.short, when=shortCondition) strategy.close("Sell", when=longCondition) strategy.exit("Close Sell","Sell", limit= stop_loss_and_tp?strategy.position_avg_price * (1-sell_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1+sell_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_short:na,trail_offset=trail_stop?strategy.position_avg_price *trail_stop_short_offset:na) net_profit = strategy.netprofit + strategy.openprofit plot(net_profit, title="Net Profit", linewidth=2, style=plot.style_area, transp=50, color=net_profit >= 0 ? #26A69A : color.red)