Help update three outdated parameters in this Cbot code
            
                 25 May 2020, 21:30
            
                    
Hi there,
This is a Cbot to copy trades from a .csv file which was created by an MT4 EA
This Cbot was written about 6 years back and has few obsolete parameters and i simply need someone to update these parameters
This code gave just three errors when i tried to compile. The errors are as follows;
Error CS0618: 'cAlgo.API.Robot.ExecuteMarketOrder(cAlgo.API.TradeType, cAlgo.API.Internals.Symbol, long, string, double?, double?, double?)' is obsolete: 'Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/whats-new/#ToBeReplace'
Error CS0618: 'cAlgo.API.Internals.MarketData.GetSymbol(string)' is obsolete: 'Use Symbols.GetSymbol instead'
Error CS0103: The name 'Print' does not exist in the current context
This is the code below;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;
namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)]
    //AccessRights.FullAccess
    public class MT2cTrader : Robot
    {
        [Parameter("Orders Input File Path", DefaultValue = "C:\\Users\\trader\\AppData\\Roaming\\MetaQuotes\\Terminal\\69420FB8433504FEA0FA029C390238DB\\MQL4\\Files\\TradeCopy.csv")]
        // C:\\Users\\trader\\CSV\\TradeCopy.csv
        public string orders_input_file { get; set; }
        [Parameter("Slippage", DefaultValue = 3.5)]
        public double slippage { get; set; }
        [Parameter("Delimiter", DefaultValue = ";")]
        public string delimiter { get; set; }
        protected override void OnStart()
        {
        }
        private bool debug = true;
        protected override void OnTick()
        {
            //todo, check M.D.
            //price = marketDepth.AskEntries[0].Price; 
            //volume = marketDepth.AskEntries[0].Volume;
            string[] lines = new String[0];
            try
            {
                lines = File.ReadAllLines(orders_input_file);
            } catch (Exception e)
            {
                Print("Exception: " + e.Message);
                return;
            }
            List<string> existing_positions = new List<string>();
            foreach (string line in lines)
            {
                OrderData order = new OrderData(line.Split(delimiter.Length > 0 ? delimiter[0] : ','), MarketData);
                existing_positions.Add(order.label);
                if (debug)
                    Print(line);
                if (order.isCorrect() && (Positions.Find(order.label) == null))
                    ExecuteMarketOrder(order.type, order.symbol, order.lot, order.label, order.sl, order.tp, slippage);
            }
            for (int pos = 0; pos < Positions.Count; pos++)
                if (!existing_positions.Contains(Positions[pos].Label))
                    ClosePosition(Positions[pos]);
        }
    }
    public class OrderData
    {
        private const long mt_lot_coefficient = 100000;
        //corrected_100000_july1
        public Symbol symbol;
        public TradeType type;
        public long lot;
        public int sl;
        public int tp;
        public string label;
        private bool initialized_properly = true;
        public OrderData(string[] raw_pieces, MarketData market_data)
        {
            try
            {
                this.label = raw_pieces[0].Trim();
                this.symbol = market_data.GetSymbol(raw_pieces[1].Trim());
                this.setType(Convert.ToInt32(raw_pieces[2].Trim()));
                this.lot = Convert.ToInt64(this.parseDouble(raw_pieces[3]) * mt_lot_coefficient);
                double price = this.parseDouble(raw_pieces[4]);
                this.sl = this.getPipDistance(price, this.parseDouble(raw_pieces[5]));
                this.tp = this.getPipDistance(price, this.parseDouble(raw_pieces[6]));
            } catch (Exception e)
            {
                Print("Exception: " + e.Message);
                return;
            }
            {
                this.initialized_properly = false;
            }
        }
        public bool isCorrect()
        {
            return this.initialized_properly;
        }
        private double parseDouble(string value)
        {
            return double.Parse(value.Trim().Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture);
        }
        private void setType(int mt_type)
        {
            this.type = mt_type == 0 ? TradeType.Buy : TradeType.Sell;
        }
        private int getPipDistance(double basic_price, double close_price)
        {
            return Convert.ToInt32(Math.Round(Math.Abs(basic_price - close_price) / this.symbol.PipSize));
        }
    }
}
Replies
                     VHS10
                     26 May 2020, 09:14
                                    
RE:
PanagiotisCharalampous said:
Hi tobioluwatoki,
There was one build error which I fixed in the code below
using System; using System.Collections.Generic; using System.IO; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.Indicators; namespace cAlgo { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)] //AccessRights.FullAccess public class MT2cTrader : Robot { [Parameter("Orders Input File Path", DefaultValue = "C:\\Users\\trader\\AppData\\Roaming\\MetaQuotes\\Terminal\\69420FB8433504FEA0FA029C390238DB\\MQL4\\Files\\TradeCopy.csv")] // C:\\Users\\trader\\CSV\\TradeCopy.csv public string orders_input_file { get; set; } [Parameter("Slippage", DefaultValue = 3.5)] public double slippage { get; set; } [Parameter("Delimiter", DefaultValue = ";")] public string delimiter { get; set; } protected override void OnStart() { } private bool debug = true; protected override void OnTick() { //todo, check M.D. //price = marketDepth.AskEntries[0].Price; //volume = marketDepth.AskEntries[0].Volume; string[] lines = new String[0]; try { lines = File.ReadAllLines(orders_input_file); } catch (Exception e) { Print("Exception: " + e.Message); return; } List<string> existing_positions = new List<string>(); foreach (string line in lines) { OrderData order = new OrderData(line.Split(delimiter.Length > 0 ? delimiter[0] : ','), MarketData); existing_positions.Add(order.label); if (debug) Print(line); if (order.isCorrect() && (Positions.Find(order.label) == null)) ExecuteMarketOrder(order.type, order.symbol, order.lot, order.label, order.sl, order.tp, slippage); } for (int pos = 0; pos < Positions.Count; pos++) if (!existing_positions.Contains(Positions[pos].Label)) ClosePosition(Positions[pos]); } } public class OrderData { private const long mt_lot_coefficient = 100000; //corrected_100000_july1 public Symbol symbol; public TradeType type; public long lot; public int sl; public int tp; public string label; private bool initialized_properly = true; public OrderData(string[] raw_pieces, MarketData market_data) { try { this.label = raw_pieces[0].Trim(); this.symbol = market_data.GetSymbol(raw_pieces[1].Trim()); this.setType(Convert.ToInt32(raw_pieces[2].Trim())); this.lot = Convert.ToInt64(this.parseDouble(raw_pieces[3]) * mt_lot_coefficient); double price = this.parseDouble(raw_pieces[4]); this.sl = this.getPipDistance(price, this.parseDouble(raw_pieces[5])); this.tp = this.getPipDistance(price, this.parseDouble(raw_pieces[6])); } catch (Exception e) { return; } { this.initialized_properly = false; } } public bool isCorrect() { return this.initialized_properly; } private double parseDouble(string value) { return double.Parse(value.Trim().Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture); } private void setType(int mt_type) { this.type = mt_type == 0 ? TradeType.Buy : TradeType.Sell; } private int getPipDistance(double basic_price, double close_price) { return Convert.ToInt32(Math.Round(Math.Abs(basic_price - close_price) / this.symbol.PipSize)); } } }Best Regards,
Panagiotis
Panagiotis, You are very kind indeed.
Bless you.
@VHS10

PanagiotisCharalampous
26 May 2020, 08:14
Hi tobioluwatoki,
There was one build error which I fixed in the code below
Best Regards,
Panagiotis
Join us on Telegram
@PanagiotisCharalampous