Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Modifier un Robot sur martingale

  • khutsishvili

    bonjour,
    je sais que ce sujet doit pas être posté ici mais je n'arrive pas créer ce sujet à bon endroit (si qlq'un pourrait le déplacer ...)

    je suis nul en programmation et c'est pour ça que je vous demande votre aide

    donc j'ai un robot basé sur le système de martingale mais il a un petit défaut. le premier trade qu'il fait est choisi au hasard, mais si le trade est perdant le deuxième n'est plus choisi au hasard, donc si premier trade (ex: achat) est perdant son deuxième trade sera aussi un achat.
    et c'est ça ce que je veux modifier, je voudrais que à chaque fois qu'il perd, il fasse son deuxième trade aussi au hasard.

    merci bcp

    Code
    using System; using cAlgo.API; namespace cAlgo.Robots { [Robot()] public class Martingal : Robot { [Parameter("Initial Volume", DefaultValue = 10000, MinValue = 0)] public int InitialVolume { get; set; } [Parameter("Stop Loss", DefaultValue = 40)] public int StopLoss { get; set; } [Parameter("Take Profit", DefaultValue = 40)] public int TakeProfit { get; set; } private Random random = new Random(); private Position position; protected override void OnStart() { ExecuteOrder(InitialVolume, GetRandomTradeCommand()); } private void ExecuteOrder(int volume, TradeType tradeType) { Trade.CreateMarketOrder(tradeType, Symbol, volume); } protected override void OnPositionOpened(Position openedPosition) { position = openedPosition; Trade.ModifyPosition(openedPosition, GetAbsoluteStopLoss(openedPosition, StopLoss), GetAbsoluteTakeProfit(openedPosition, TakeProfit)); } protected override void OnPositionClosed(Position closedPosition) { if (closedPosition.Profit > 0) { ExecuteOrder(InitialVolume, GetRandomTradeCommand()); } else { ExecuteOrder((int)position.Volume * 2, position.TradeType); } } protected override void OnError(Error error) { if (error.Code == ErrorCode.BadVolume) Stop(); } private TradeType GetRandomTradeCommand() { return random.Next(2) == 0 ? TradeType.Buy : TradeType.Sell; } private double GetAbsoluteStopLoss(Position position, int stopLossInPips) { return position.TradeType == TradeType.Buy ? position.EntryPrice - Symbol.PipSize * stopLossInPips : position.EntryPrice + Symbol.PipSize * stopLossInPips; } private double GetAbsoluteTakeProfit(Position position, int takeProfitInPips) { return position.TradeType == TradeType.Buy ? position.EntryPrice + Symbol.PipSize * takeProfitInPips : position.EntryPrice - Symbol.PipSize * takeProfitInPips; } } }
    Modifié le 2013-09-04 14:13:05 par AliX