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); }
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()); } }