public static double CalculateRisk(double p_PriceLine, double p_StopLossLine, double p_Percentage, AdditionalData p_AdditionalData, CrossCurrencyData p_CrossCurrencyData) { if (p_AdditionalData == null) return 0; int l_risk = (int)(p_AdditionalData.AccountBalance * p_Percentage / 100); int l_volumeOnRisk = 0; if (p_AdditionalData.SymbolCurrency.EndsWith(p_AdditionalData.AccountCurrency)) { l_volumeOnRisk = (int)(l_risk / (Math.Abs(p_StopLossLine - p_PriceLine))); } else if (p_AdditionalData.SymbolCurrency.StartsWith(p_AdditionalData.AccountCurrency)) { l_volumeOnRisk = (int)(l_risk / (Math.Abs(p_StopLossLine - p_PriceLine)) * p_PriceLine); } else { if (p_CrossCurrencyData == null) { //throw new Exception("No cross currency data provided"); return 0; } if (p_CrossCurrencyData.CurrencyPair.StartsWith(p_AdditionalData.AccountCurrency)) { l_volumeOnRisk = (int)(l_risk * p_CrossCurrencyData.Ask / (Math.Abs(p_StopLossLine - p_PriceLine))); } else { l_volumeOnRisk = (int)(l_risk / p_CrossCurrencyData.Ask / (Math.Abs(p_StopLossLine - p_PriceLine))); } } l_volumeOnRisk = (int)(l_volumeOnRisk / 1000) * 1000; return l_volumeOnRisk; }
public CrossCurrencyData GetCrossCurrencyData() { StreamReader l_FileReader = null; string l_SubSymbol = Symbol.Code.Substring(3); CrossCurrencyData l_Result = new CrossCurrencyData(); if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\CAlgo\\" + Account.Currency + l_SubSymbol + ".txt")) { l_FileReader = File.OpenText(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\CAlgo\\" + Account.Currency + l_SubSymbol + ".txt"); l_Result.CurrencyPair = Account.Currency + l_SubSymbol; } else if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\CAlgo\\" + l_SubSymbol + Account.Currency + ".txt")) { l_FileReader = File.OpenText(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\CAlgo\\" + l_SubSymbol + Account.Currency + ".txt"); l_Result.CurrencyPair = l_SubSymbol + Account.Currency; } else { return null; } string l_DataString = l_FileReader.ReadLine(); l_FileReader.Close(); string[] l_DataArray = l_DataString.Split(';'); l_Result.Ask = double.Parse(l_DataArray[0]); l_Result.Bid = double.Parse(l_DataArray[1]); l_Result.PipSize = double.Parse(l_DataArray[2]); l_Result.PointSize = double.Parse(l_DataArray[3]); return l_Result; }