Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using cAlgo.API;
- using cAlgo.API.Indicators;
- using cAlgo.API.Internals;
- using cAlgo.Indicators;
- namespace cAlgo.Robots
- {
- [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
- public class MartingaleRobot : Robot
- {
- [Parameter("Initial Volume", DefaultValue = 1000, MinValue = 0)]
- public int InitialVolume { get; set; }
- [Parameter("Stop Loss", DefaultValue = 10)]
- public int StopLoss { get; set; }
- [Parameter("Take Profit", DefaultValue = 25)]
- public int TakeProfit { get; set; }
- private Random random = new Random();
- protected override void OnStart()
- {
- Positions.Closed += OnPositionsClosed;
- ExecuteOrder(InitialVolume, GetRandomTradeType());
- }
- private void ExecuteOrder(long volume, TradeType tradeType)
- {
- var result = ExecuteMarketOrder(tradeType, Symbol, volume, "Martingale", StopLoss, TakeProfit);
- if (result.Error == ErrorCode.NoMoney)
- Stop();
- }
- private void OnPositionsClosed(PositionClosedEventArgs args)
- {
- Print("Closed");
- var position = args.Position;
- if (position.Label != "Martingale" || position.SymbolCode != Symbol.Code)
- return;
- if (position.GrossProfit > 0)
- {
- ExecuteOrder(InitialVolume, GetRandomTradeType());
- }
- else
- {
- ExecuteOrder((int)position.Volume * 2, position.TradeType);
- }
- }
- private TradeType GetRandomTradeType()
- {
- return random.Next(2) == 0 ? TradeType.Buy : TradeType.Sell;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement