Souvent, les stratégies automatisées doivent prendre en compte les informations de différentes périodes avant de prendre une décision de trading. Heureusement, cTrader fournit de nombreux outils qui permettent aux algos d'accéder facilement aux données de plusieurs périodes. Dans cette vidéo et son article correspondant, nous expliquerons comment vous pouvez utiliser ces outils pour créer un cBot efficace.
Déclarer les paramètres du cBot
Nous commencerons par déclarer les paramètres nécessaires pour une moyenne mobile. Nous aurons besoin de la période, de la période du graphique et du type de moyenne mobile.
12345678
[Parameter("MA 1 Period", DefaultValue = 14, Group = "Moving Averages")]publicintMA1Period{get;set;}[Parameter("MA 1 Timeframe", DefaultValue = "Hour", Group = "Moving Averages")]publicTimeFrameMA1Timeframe{get;set;}[Parameter("MA 1 Type", Group = "Moving Averages")]publicMovingAverageTypeMA1Type{get;set;}
Ensuite, nous pouvons définir la moyenne mobile.
1
privateMovingAverage_ma1;
Nous pouvons initialiser la moyenne mobile dans la méthode OnStart(). Nous utiliserons la méthode MarketData.GetBars() pour obtenir les barres de la première moyenne mobile et les transmettre au constructeur de l'indicateur. La méthode GetBars() est utile pour obtenir des données de barres pour n'importe quelle période et n'importe quel symbole dont vous avez besoin.
Parameter("MA 1 Period",DefaultValue=14,Group="Moving Averages")]publicintMA1Period{get;set;}[Parameter("MA 1 Timeframe", DefaultValue = "Hour", Group = "Moving Averages")]publicTimeFrameMA1Timeframe{get;set;}[Parameter("MA 1 Type", Group = "Moving Averages")]publicMovingAverageTypeMA1Type{get;set;}[Parameter("MA 2 Period", DefaultValue = 14, Group = "Moving Averages")]publicintMA2Period{get;set;}[Parameter("MA 2 Timeframe", DefaultValue = "Hour2", Group = "Moving Averages")]publicTimeFrameMA2Timeframe{get;set;}[Parameter("MA 2 Type", Group = "Moving Averages")]publicMovingAverageTypeMA2Type{get;set;}[Parameter("MA 3 Period", DefaultValue = 14, Group = "Moving Averages")]publicintMA3Period{get;set;}[Parameter("MA 3 Timeframe", DefaultValue = "Hour4", Group = "Moving Averages")]publicTimeFrameMA3Timeframe{get;set;}[Parameter("MA 3 Type", Group = "Moving Averages")]publicMovingAverageTypeMA3Type{get;set;}privateMovingAverage_ma1;privateMovingAverage_ma2;privateMovingAverage_ma3;protectedoverridevoidOnStart(){_ma1=Indicators.MovingAverage(MarketData.GetBars(MA1Timeframe).ClosePrices,MA1Period,MA1Type);_ma2=Indicators.MovingAverage(MarketData.GetBars(MA2Timeframe).ClosePrices,MA2Period,MA2Type);_ma3=Indicators.MovingAverage(MarketData.GetBars(MA3Timeframe).ClosePrices,MA3Period,MA3Type);}
Implémenter la logique de trading
À ce stade, nous pouvons implémenter la logique de trading. Notre stratégie maintiendra une position longue lorsque toutes les moyennes mobiles sont en hausse et une position courte lorsque les moyennes mobiles sont en baisse. Voici le code pour toute la logique d'achat.
Enfin, nous devons backtester notre nouveau cBot. Nous pouvons voir que le cBot entre en position lorsque les moyennes mobiles sont synchronisées dans la même direction et reste hors du marché lorsque chaque indicateur pointe dans une direction différente.