Example #1
0
        public double iMA(string symbol, string timeframe, int ma_period, int ma_shift, int ma_method, int applied_price, int shift)
        {
            RetryConnecting();
            ENUM_TIMEFRAMES enumTimeframe = (ENUM_TIMEFRAMES)Enum.Parse(typeof(ENUM_TIMEFRAMES), timeframe);

            return(mtApiClient.iMA(symbol, (int)enumTimeframe, ma_period, ma_shift, ma_method, applied_price, shift));
        }
Example #2
0
        private void CandleAddition(string symbol, ENUM_TIMEFRAMES pERIOD_CURRENT = ENUM_TIMEFRAMES.PERIOD_CURRENT)
        {
            var Form = forms.Where(m => m.symbol == symbol).FirstOrDefault();

            if (Form != null)
            {
                var formCandle = Form.form.candleDataMT as BindingList <CandleDataMT>;
                var rates      = apiClient.CopyRates(symbol, pERIOD_CURRENT, 0, 1);
                if (rates != null)
                {
                    foreach (var rate in rates)
                    {
                        CandleDataMT candleData = new CandleDataMT();
                        candleData.Symbol = symbol;
                        candleData.Close  = rate.Close;
                        candleData.High   = rate.High;
                        candleData.Low    = rate.Low;
                        candleData.MTS    = rate.Time;
                        candleData.Open   = rate.Open;
                        candleData.Volume = rate.RealVolume;
                        formCandle.Add(candleData);
                    }
                    var max = formCandle.Max(m => m.High);
                    var min = formCandle.Min(m => m.Low);
                    frmChart.Invoke((Action) delegate()
                    {
                        frmChart.chart1.ChartAreas["ChartArea1"].AxisY.Minimum = Convert.ToDouble(min);
                        frmChart.chart1.ChartAreas["ChartArea1"].AxisY.Maximum = Convert.ToDouble(max);
                        frmChart.chart1.DataSource = formCandle;
                    });
                }
            }
        }
        private Candle[] GetCandles(string symbol, ENUM_TIMEFRAMES timeFrame, int count)
        {
            double[]   closes;
            double[]   openings;
            double[]   highs;
            double[]   lows;
            long[]     volumes;
            DateTime[] dates;

            this._mtApiClient.CopyClose(symbol, timeFrame, 0, count, out closes);
            this._mtApiClient.CopyOpen(symbol, timeFrame, 0, count, out openings);
            this._mtApiClient.CopyHigh(symbol, timeFrame, 0, count, out highs);
            this._mtApiClient.CopyLow(symbol, timeFrame, 0, count, out lows);
            this._mtApiClient.CopyTickVolume(symbol, timeFrame, 0, count, out volumes);
            this._mtApiClient.CopyTime(symbol, timeFrame, 0, count, out dates);

            List <Candle> retorno = new List <Candle>();

            for (int i = 0; i < count; i++)
            {
                retorno.Add(new Candle()
                {
                    Open   = (decimal)openings[i],
                    Close  = (decimal)closes[i],
                    High   = (decimal)highs[i],
                    Low    = (decimal)lows[i],
                    Volume = volumes[i],
                    Time   = dates[i]
                });
            }
            return(retorno.ToArray());
        }
Example #4
0
        public long ChartOpen(string symbol, string timeframe)
        {
            RetryConnecting();
            ENUM_TIMEFRAMES enumTimeframe = (ENUM_TIMEFRAMES)Enum.Parse(typeof(ENUM_TIMEFRAMES), timeframe);

            return(mtApiClient.ChartOpen(symbol, enumTimeframe));
        }
Example #5
0
        public List <FXModes.MqlRates> RatesByPositions(string symbol, string timeframe, int startPosition, int count)
        {
            RetryConnecting();
            if (count <= 0 || startPosition < 0)
            {
                return(new List <FXModes.MqlRates>());
            }
            ENUM_TIMEFRAMES enumTimeframe = (ENUM_TIMEFRAMES)Enum.Parse(typeof(ENUM_TIMEFRAMES), timeframe);
            var             candles       = mtApiClient.CopyRates(symbol, enumTimeframe, startPosition, count);

            //This is done so that time is not ignored from xml
            var newCandles = new List <FXModes.MqlRates>();

            foreach (var m in candles)
            {
                newCandles.Add(new FXModes.MqlRates
                {
                    mt_time     = m.MtTime,
                    close       = m.Close,
                    high        = m.High,
                    low         = m.Low,
                    open        = m.Open,
                    real_volume = m.RealVolume,
                    spread      = m.Spread,
                    tick_volume = m.TickVolume,
                    time        = m.Time
                });
            }
            return(newCandles);
        }
Example #6
0
        private async void ExecuteICustom(object o)
        {
            const string          symbol    = "EURUSD";
            const ENUM_TIMEFRAMES timeframe = ENUM_TIMEFRAMES.PERIOD_H1;
            const string          name      = @"Examples\Custom Moving Average";

            int[] parameters = { 0, 21, (int)ENUM_APPLIED_PRICE.PRICE_CLOSE };

            var retVal = await Execute(() => _mtApiClient.iCustom(symbol, timeframe, name, parameters));

            AddLog($"Custom Moving Average: result - {retVal}");
        }
Example #7
0
        public double iMAOnArray(string symbol, string timeframe, string candleDateString, int numberOfCandles, int total, int ma_period, int ma_shift, int ma_method, int shift)
        {
            RetryConnecting();
            var             candleDate    = DateTime.ParseExact(candleDateString, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
            ENUM_TIMEFRAMES enumTimeframe = (ENUM_TIMEFRAMES)Enum.Parse(typeof(ENUM_TIMEFRAMES), timeframe);

            var candles = mtApiClient.CopyRates(symbol, enumTimeframe, candleDate, numberOfCandles).ToArray();
            var data    = new double[candles.Length];

            for (var i = 0; i < candles.Length; i++)
            {
                data[i] = candles[i].Close;
            }
            return(mtApiClient.iMAOnArray(data, total, ma_period, ma_shift, ma_method, shift));
        }
Example #8
0
        // </summary>
        // <param name="timeframe">Timeframe to do scanning on</param>
        // <param name="startDateString">Lower bound date in format yyyyMMddHHmmss</param>
        // <param name="endDateString">Upper bound date in format yyyyMMddHHmmss</param>
        // <returns>List of Engulfings</returns>
        public List <FXModes.MqlRates> RatesByDates(string symbol, string timeframe, string startDateString, string endDateString)
        {
            RetryConnecting();
            var startDate = DateTime.ParseExact(startDateString, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
            var endDate   = DateTime.ParseExact(endDateString, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);

            if ((endDate - startDate).TotalMinutes <= TimeframeHelper.GetMinutesFromForTimeframe(timeframe))
            {
                return(new List <FXModes.MqlRates>());
            }
            if ((mtApi5Client.TimeCurrent() - startDate).TotalMinutes <= TimeframeHelper.GetMinutesFromForTimeframe(timeframe))
            {
                return(new List <FXModes.MqlRates>());
            }

            ENUM_TIMEFRAMES enumTimeframe = (ENUM_TIMEFRAMES)Enum.Parse(typeof(ENUM_TIMEFRAMES), timeframe);
            int             size          = (int)((endDate - startDate).TotalMinutes / (TimeframeHelper.GetMinutesFromForTimeframe(timeframe)));
            var             candles       = new MqlRates[size];

            mtApi5Client.CopyRates(symbol, enumTimeframe, startDate, endDate, out candles);
            //This is done so that time is not ignored from xml
            var newCandles = new List <FXModes.MqlRates>();

            foreach (var m in candles)
            {
                newCandles.Add(new FXModes.MqlRates
                {
                    time        = m.time,
                    close       = m.close,
                    high        = m.high,
                    low         = m.low,
                    mt_time     = m.mt_time,
                    open        = m.open,
                    real_volume = m.real_volume,
                    spread      = m.spread,
                    tick_volume = m.tick_volume
                });
            }
            return(newCandles);
        }
Example #9
0
        private BindingList <CandleDataMT> RequestHistoricalCandles(string symbol, ENUM_TIMEFRAMES pERIOD_CURRENT)
        {
            var listCandles = new BindingList <CandleDataMT>();
            var rates       = apiClient.CopyRates(symbol, pERIOD_CURRENT, DateTime.Now.AddDays(-15), DateTime.Now);

            if (rates != null)
            {
                foreach (var rate in rates)
                {
                    CandleDataMT candleData = new CandleDataMT();
                    candleData.Symbol = symbol;
                    candleData.Close  = rate.Close;
                    candleData.High   = rate.High;
                    candleData.Low    = rate.Low;
                    candleData.MTS    = rate.Time;
                    candleData.Open   = rate.Open;
                    candleData.Volume = rate.RealVolume;
                    listCandles.Add(candleData);
                }
            }
            return(listCandles);
        }
Example #10
0
        public FXModes.MqlRates CurrentIncompleteCandle(string symbol, string timeframe)
        {
            RetryConnecting();
            ENUM_TIMEFRAMES enumTimeframe = (ENUM_TIMEFRAMES)Enum.Parse(typeof(ENUM_TIMEFRAMES), timeframe);
            var             candles       = new MqlRates[1];

            mtApi5Client.CopyRates(symbol, enumTimeframe, 0, 1, out candles);

            var m = candles[0];

            //This is done so that time is not ignored from xml
            return(new FXModes.MqlRates
            {
                time = m.time,
                close = m.close,
                high = m.high,
                low = m.low,
                mt_time = m.mt_time,
                open = m.open,
                real_volume = m.real_volume,
                spread = m.spread,
                tick_volume = m.tick_volume
            });
        }
        public async Task <TrenderTradeOperation> GetTradeOperation(iTrenderMtApiService trenderMtApiService, string symbol, ENUM_TIMEFRAMES timeframes, int startpos, int count)
        {
            List <MqlRates> rates = await trenderMtApiService.GetRates(symbol, timeframes, startpos, count);

            if (!rates.Any())
            {
                return(TrenderTradeOperation.OpStayAside);
            }
            return(Task.FromResult(Calculate(rates)).Result);
        }
Example #12
0
 public Task <double> GetATR(string symbol, ENUM_TIMEFRAMES timeframes, int period, int shift)
 {
     return(Task.FromResult(_MtApiClient.iATR(symbol, (int)timeframes, period, shift)));
 }
Example #13
0
 public Task <double> GetMA(string symbol, ENUM_TIMEFRAMES timeframes, int period, int mashift, int mamethod, int appliedprice, int shift)
 {
     return(Task.FromResult(_MtApiClient.iMA(symbol, (int)timeframes, period, mashift, mamethod, appliedprice, shift)));
 }
Example #14
0
 /// <summary>
 /// Function: ChartSetSymbolPeriod
 /// Description: Changes the symbol and period of the specified chart. The function is asynchronous, i.e. it sends the command and does not wait for its execution completion. The command is added to chart message queue and executed only after all previous commands have been processed.
 /// URL: http://docs.mql4.com/chart_operations/chartsetsymbolperiod.html
 /// </summary>
 /// <param name="chart_id">[in] Chart ID. 0 means the current chart.</param>
 /// <param name="symbol">[in] Chart symbol. value means the current chart symbol (Expert Advisor is attached to)</param>
 /// <param name="period">[in] Chart period (timeframe). Can be one of the values. 0 means the current chart period.</param>
 public bool ChartSetSymbolPeriod (long chart_id, string symbol, ENUM_TIMEFRAMES period)
 {
     List<Object> parameters = new List<Object>();
     parameters.Add(chart_id);
     parameters.Add(symbol);
     parameters.Add(period.ToString());
     MQLCommandManager.getInstance().ExecCommand(MQLCommand.ChartSetSymbolPeriod_1, parameters); // MQLCommand ENUM = 89
     while (MQLCommandManager.getInstance().IsCommandRunning())
     {
         //Thread.Sleep(1);
     }
     MQLCommandManager.getInstance().throwExceptionIfErrorResponse();
     return (bool) MQLCommandManager.getInstance().GetCommandResult();
 }
Example #15
0
 public Task <List <MqlRates> > GetRates(string symbol, ENUM_TIMEFRAMES timeframes, int startpos, int count)
 {
     return(Task.FromResult(_MtApiClient.CopyRates(symbol, timeframes, startpos, count)));
 }
Example #16
0
 /// <summary>
 /// Function: Bars
 /// Description: Returns the number of bars count in the history for a specified symbol and period. There are 2 variants of functions calls.
 /// URL: http://docs.mql4.com/series/barsfunction.html
 /// </summary>
 /// <param name="symbol_name">[in] Symbol name.</param>
 /// <param name="timeframe">[in] Period.</param>
 /// <param name="start_time">[in] Bar time corresponding to the first element.</param>
 /// <param name="stop_time">[in] Bar time corresponding to the last element.</param>
 public int Bars (string symbol_name, ENUM_TIMEFRAMES timeframe, DateTime start_time, DateTime stop_time)
 {
     List<Object> parameters = new List<Object>();
     parameters.Add(symbol_name);
     parameters.Add(timeframe.ToString());
     parameters.Add(start_time);
     parameters.Add(stop_time);
     MQLCommandManager.getInstance().ExecCommand(MQLCommand.Bars_2, parameters); // MQLCommand ENUM = 56
     while (MQLCommandManager.getInstance().IsCommandRunning())
     {
         //Thread.Sleep(1);
     }
     MQLCommandManager.getInstance().throwExceptionIfErrorResponse();
     return (int) MQLCommandManager.getInstance().GetCommandResult();
 }
 public Task <double> GetATR(string symbol, ENUM_TIMEFRAMES timeframes, int period, int shift)
 {
     throw new NotImplementedException();
 }
 public Task <double> GetMA(string symbol, ENUM_TIMEFRAMES timeframes, int period, int mashift, int mamethod, int appliedprice, int shift)
 {
     throw new NotImplementedException();
 }
 public Task <List <MqlRates> > GetRates(string symbol, ENUM_TIMEFRAMES timeframes, int startpos, int count)
 {
     return(Task.FromResult(CommonFunctions.DeserializeObject <List <MqlRates> >(@"C:\MqlRates\PERIOD_M1_100")));
 }
Example #20
0
 public TradeParameters(string symbol, ENUM_TIMEFRAMES timeframes)
 {
     this.Symbol     = symbol;
     this.timeframes = timeframes;
 }