Пример #1
0
        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;
 }