public CandleStick GetLastCandleStick(string strSymbol, string strPeriod)
        {
            ChartPeriod TimeFrame = ChartPeriod.PERIOD_D1;

            switch (strPeriod)
            {
            case "1M":
                TimeFrame = ChartPeriod.PERIOD_M1;
                break;

            case "5M":
                TimeFrame = ChartPeriod.PERIOD_M5;
                break;

            case "15M":
                TimeFrame = ChartPeriod.PERIOD_M15;
                break;

            case "30M":
                TimeFrame = ChartPeriod.PERIOD_M30;
                break;

            case "1H":
                TimeFrame = ChartPeriod.PERIOD_H1;
                break;

            case "4H":
                TimeFrame = ChartPeriod.PERIOD_H4;
                break;

            case "1D":
                TimeFrame = ChartPeriod.PERIOD_D1;
                break;

            case "1W":
                TimeFrame = ChartPeriod.PERIOD_W1;
                break;

            case "MN":
                TimeFrame = ChartPeriod.PERIOD_MN1;
                break;
            }

            CandleStick stick = new CandleStick();

            stick.Low   = _apiClient.iLow(strSymbol, TimeFrame, 1);
            stick.High  = _apiClient.iHigh(strSymbol, TimeFrame, 1);
            stick.Open  = _apiClient.iOpen(strSymbol, TimeFrame, 1);
            stick.Close = _apiClient.iClose(strSymbol, TimeFrame, 1);
            return(stick);
        }
Exemplo n.º 2
0
        private void m_Timer_Tick(object sender, EventArgs e)
        {
            try
            {
                TitleCommand Command = m_GmailReader.ReadGmail();
                if (Command == null)
                {
                    return;
                }
                if (!m_Dic.ContainsKey(Command.OriginTitle))
                {
                    m_Dic.Add(Command.OriginTitle, 1);
                }
                else
                {
                    m_Dic[Command.OriginTitle]++;
                }

                string strLog = "================= EMAIL RECEIVED! =================\n";
                strLog += "Title : " + Command.OriginTitle +
                          "\nCount: " + m_Dic[Command.OriginTitle].ToString();
                Log(strLog);

                ShowEmailTitleCount();

                for (int i = 0; i < 3; i++)
                {
                    OrderParameter Param = m_XLSReader.ReadOrderParameters(Command.OriginTitle, m_Dic[Command.OriginTitle], i);
                    if (Param == null)
                    {
                        Log("################## Can't Search Information in Xls File! #####################");
                        return;
                    }

                    strLog  = "====================== INFORMATION FROM XLS FILE! ==========================\n";
                    strLog += "Price: " + Param.strPrice +
                              "\nLot: " + Param.dLot.ToString() +
                              "\nStopLoss: " + Param.dStopLoss.ToString() +
                              "\nTakeProfit: " + Param.dTakeProfit.ToString() +
                              "\nX: " + Param.dX.ToString() +
                              "\nExpireTime: " + Param.expireTime.ToString();
                    Log(strLog);

                    CandleStick Stick = m_MT4Controller.GetLastCandleStick(Command.Symbol, Command.Period);
                    if (Stick == null)
                    {
                        return;
                    }

                    strLog  = "=================== LASTEST CANDLE VALUES =====================\n";
                    strLog += "Low: " + Stick.Low.ToString() +
                              "\nHigh: " + Stick.High.ToString() +
                              "\nOpen: " + Stick.Open.ToString() +
                              "\nClose: " + Stick.Close.ToString();
                    Log(strLog);

                    double dPrice      = 0;
                    double dTakeProfit = 0;
                    double dStopLoss   = 0;
                    if (Param.strPrice == "Low")
                    {
                        dPrice = Stick.Low;
                    }
                    if (Param.strPrice == "High")
                    {
                        dPrice = Stick.High;
                    }
                    if (Param.strPrice == "Open")
                    {
                        dPrice = Stick.Open;
                    }
                    if (Param.strPrice == "Close")
                    {
                        dPrice = Stick.Close;
                    }

                    dPrice += Param.dX;

                    if (Command.Operation == "BUY")
                    {
                        dTakeProfit = dPrice + Param.dTakeProfit;
                        dStopLoss   = dPrice - Param.dStopLoss;
                    }
                    else if (Command.Operation == "SELL")
                    {
                        dTakeProfit = dPrice - Param.dTakeProfit;
                        dStopLoss   = dPrice + Param.dStopLoss;
                    }

                    DateTime expireTime = m_MT4Controller.GetCurrentMT4Time();
                    expireTime = expireTime.AddHours(Param.expireTime);

                    strLog  = "=================== ORDER PARAMETERS =====================\n";
                    strLog += "Symbol: " + Command.Symbol +
                              "\nOperation: " + Command.Operation +
                              "\nLot: " + Param.dLot.ToString() +
                              "\nPrice: " + dPrice.ToString() +
                              "\nExpireTime: " + expireTime.ToString() +
                              "\nTakeProfit: " + dTakeProfit.ToString() +
                              "\nStopLoss: " + dStopLoss.ToString() +
                              "\nSlippage: 20" +
                              "\nAskPrice: " + m_MT4Controller.GetAskPrice(Command.Symbol).ToString() +
                              "\nBidPrice: " + m_MT4Controller.GetBidPrice(Command.Symbol).ToString();
                    Log(strLog);

                    m_MT4Controller.SendOrder(Command.Symbol, Command.Operation, Param.dLot, dPrice, expireTime, dTakeProfit, dStopLoss);
                }
            }
            catch (Exception ex)
            {
                Log("############## SOME ERROR HAPPEND! ##############");
                Log(ex.ToString());
            }
        }