Achetez bas et prenez des bénéfices à prix élevé


Date de création: 2023-11-23 11:03:18 Dernière modification: 2023-11-23 11:03:18
Copier: 1 Nombre de clics: 667
1
Suivre
1617
Abonnés

Achetez bas et prenez des bénéfices à prix élevé

Aperçu

La stratégie est basée sur la conception de l’idée d’acheter au bas et de vendre au haut du marché. Elle suit les prix les plus élevés et les plus bas des périodes précédentes, établit des positions multiples lorsque les prix dépassent les prix les plus bas, et plafonne lorsque les prix sont inférieurs aux prix les plus élevés ou atteignent les conditions de stop.

Principe de stratégie

Calcul des prix minimum et maximum

  • Le prix le plus bas (<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  • Highcriteria: la fonction ta.highest est appelée pour calculer les prix les plus élevés sur une période donnée et tracer la ligne de prix la plus élevée.

Signaux d’entrée

Lorsque le cours actuel franchit la ligne de basse, un signal d’achat est émis pour établir une position à plusieurs niveaux.

Signaux de sortie

Il y a deux possibilités de sortie:

  1. Stop fixe: Lorsque le prix atteint le niveau de stop fixé (excédant 8% du prix d’entrée), le arbitrage de la position est effacé.

  2. Dépassement du sommet: lorsque le prix dépasse le sommet de la ligne de prix, il est jugé que la tendance s’est inversée et que la position est stoppée.

Filtre de tendance

L’ajout d’un filtre EMA permettant de déterminer la direction de la tendance n’est effectué que si le prix est supérieur à la moyenne EMA (appelée tendance haussière). Ce filtre peut être activé ou désactivé.

Analyse des avantages

  • Les stratégies d’achat et de vente sont conformes aux règles fondamentales du marché.

  • Il a ajouté un mécanisme de jugement des tendances pour éviter de prendre des positions fréquentes en cas de fluctuation des prix.

  • Il offre deux possibilités de sortie, à la fois pour atteindre des buts élevés et pour réduire les pertes.

  • Les paramètres peuvent être personnalisés pour s’adapter à un environnement de marché plus large.

  • Il y a beaucoup de place pour l’optimisation de la stratégie, qui peut être améliorée par l’ajustement des paramètres, la conception des filtres, etc.

Analyse des risques

  • Les stop-loss fixes ne peuvent pas être ajustés en fonction de l’évolution réelle du marché, ce qui peut entraîner un stop-loss prématuré ou un stop-loss trop faible.

  • Il est possible qu’il y ait eu des pertes importantes au moment de la rupture du prix le plus élevé et que les pertes ne puissent pas être contrôlées efficacement.

  • L’EMA ne juge les tendances qu’à partir d’une certaine période historique et peut être en retard par rapport à la tendance réelle.

  • Les données de la détection ne peuvent pas être représentatives de l’avenir, et l’efficacité du disque dur est incertaine.

Direction d’optimisation

  • Augmentation de l’arrêt: comme l’arrêt mobile, l’arrêt de la différence de niveau, etc., le niveau de l’arrêt peut être ajusté en temps réel en fonction de la tendance du marché.

  • Optimiser les signaux de sortie: par exemple, modifier les sorties par lots ou ajouter d’autres indicateurs de jugement.

  • Optimiser les jugements de tendance: ajouter plus d’indicateurs ou des jugements d’apprentissage automatique.

  • Paramètres d’optimisation: trouvez la meilleure combinaison de paramètres grâce à un retour plus large.

  • L’augmentation des méthodes de prévention des pertes: rendre le contrôle des pertes plus flexible et efficace.

Résumer

Cette stratégie utilise généralement le principe classique de bas prix, qui peut avoir de meilleurs résultats dans certaines conditions. Cependant, la stratégie elle-même a encore de la place pour l’optimisation, grâce à l’ajustement des paramètres, à l’optimisation de la sortie, à l’amélioration de la méthode de stop-loss, etc. Des gains plus stables peuvent être obtenus.

Code source de la stratégie
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-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/
// @version=5
// Author = TradeAutomation


strategy(title="Low-High-Trend Strategy", shorttitle="Low-High-Trend Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_order, commission_value=1, slippage=3, initial_capital = 25000, margin_long=50, margin_short=50, default_qty_type=strategy.percent_of_equity, default_qty_value=110)


// Backtest Date Range Inputs // 
StartTime = input(defval=timestamp('01 Jan 2000 05:00 +0000'), title='Start Time')
EndTime = input(defval=timestamp('01 Jan 2099 00:00 +0000'), title='End Time')
InDateRange = true

// Strategy Calculations //
lowcriteria = ta.lowest(close, input(20, "Lowest Price Lookback", tooltip="The strategy will BUY when the price crosses over the lowest it has been in the last X amount of bars"))[1]
highcriteria = ta.highest(close, input(10, "Highest Price Lookback", tooltip="If Take-Profit is not checked, the strategy will SELL when the price crosses under the highest it has been in the last X amount of bars"))[1]
plot(highcriteria, color=color.green)
plot(lowcriteria, color=color.red)

// Take Profit //
TakeProfitInput = input(true, "Sell with Take-Profit % intead of highest price cross?")
TakeProfit = ta.crossover(close,strategy.position_avg_price*(1+(.01*input.float(8, title="Take Profit %", step=.25))))

// Operational Functions //
TrendFilterInput = input(true, "Only buy when price is above EMA trend?")
ema = ta.ema(close, input(200, "EMA Length"))
TrendisLong = (close>ema)
plot(ema)

// Entry & Exit Functions//
if (InDateRange and TrendFilterInput==true)
    strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria) and TrendisLong)
if (InDateRange and TrendFilterInput==false)
    strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria))
if (InDateRange and TakeProfitInput==true)
    strategy.close("Long", when = TakeProfit)
if (InDateRange and TakeProfitInput==false)
    strategy.close("Long", when = ta.crossunder(close, highcriteria))
if (not InDateRange)
    strategy.close_all()