仕事が完了した
指定
The code that has been provided calculates the value at risk for the entire portfolio (opened trades on MT5). I would like to understand what this comprises of on a per Symbol basis.
1) Calculate the Value at Risk for Each of the 10 Symbols (for Buy & Sells) and then for the Whole Symbol:
Line 51 of Account Manager Part 1:
input string CHART_MANAGEMNET1= "====== CHART MANAGEMENT ======"; input string symbol1 = "US30"; // Symbol - Other input string symbol2 = "XAUUSD"; // Symbol 2 - Other input string symbol3 = "AUDCAD"; // Symbol 3 - Forex input string symbol4 = "AUDUSD"; // Symbol 4 - Forex input string symbol5 = "AUDNZD"; // Symbol 5 - Forex input string symbol6 = "EURUSD"; // Symbol 6 - Forex input string symbol7 = "EURGBP"; // Symbol 7 - Forex input string symbol8 = "USDCHF"; // Symbol 8 - Forex input string symbol9 = "USDCAD"; // Symbol 9 - Forex input string symbol10 = "GBPCHF"; // Symbol 10 - Forex
Suggested Process:
//Calculate the Value at Risk for Buy & Sell Side - Note Repeat Process fro Symbols 2 - 10 /* double ValueAtRiskB1 double ValueAtRiskS1 //Used to Calculate the Total Value at Risk of the Symbol - Note Repeat the Process for Symbols 2 - 10 if((ValueAtRiskB1 - ValueAtRiskS1) > 0) { double ValueAtRisk1 = (ValueAtRiskB1 - ValueAtRiskS1) } else { double ValueAtRisk1 = (ValueAtRiskB1 - ValueAtRiskS1)*-1 }
2) Show the Relevant Weightings of the Currently Open Trades (in terms of Value at Risk):
Divide the current Value at Risk of the Symbol by the Total Value at Risk & Convert to a Percentage
Line 173 of Account Manager Part 1
// Portfolio Weighting double Weighting1 = ValueAtRisk1/currValueAtRisk double Weighting2 = ValueAtRisk2/currValueAtRisk double Weighting3 = ValueAtRisk3/currValueAtRisk double Weighting4 = ValueAtRisk4/currValueAtRisk double Weighting5 = ValueAtRisk5/currValueAtRisk double Weighting6 = ValueAtRisk6/currValueAtRisk double Weighting7 = ValueAtRisk7/currValueAtRisk double Weighting8 = ValueAtRisk8/currValueAtRisk double Weighting9 = ValueAtRisk9/currValueAtRisk double Weighting10 = ValueAtRisk10/currValueAtRisk
3) Display Information in Dashboard:
Comment( " RISK MANAGEMENT: ", "\n\n", "Symbol 1: VaR: " + DoubleToString(ValueAtRisk1, 2) + "Weighting:" + DoubleToString(Weighting1, 2) + "\n\n", "Symbol 2: VaR: " + DoubleToString(ValueAtRisk2, 2) + "Weighting:" + DoubleToString(Weighting2, 2) + "\n\n", "Symbol 3: VaR: " + DoubleToString(ValueAtRisk3, 2) + "Weighting:" + DoubleToString(Weighting3, 2) + "\n\n", "Symbol 4: VaR: " + DoubleToString(ValueAtRisk4, 2) + "Weighting:" + DoubleToString(Weighting4, 2) + "\n\n", "Symbol 5: VaR: " + DoubleToString(ValueAtRisk5, 2) + "Weighting:" + DoubleToString(Weighting5, 2) + "\n\n", "Symbol 6: VaR: " + DoubleToString(ValueAtRisk6, 2) + "Weighting:" + DoubleToString(Weighting6, 2) + "\n\n", "Symbol 7: VaR: " + DoubleToString(ValueAtRisk7, 2) + "Weighting:" + DoubleToString(Weighting7, 2) + "\n\n", "Symbol 8: VaR: " + DoubleToString(ValueAtRisk8, 2) + "Weighting:" + DoubleToString(Weighting8, 2) + "\n\n", "Symbol 9: VaR: " + DoubleToString(ValueAtRisk9, 2) + "Weighting:" + DoubleToString(Weighting9, 2) + "\n\n", "Symbol 10: VaR: " + DoubleToString(ValueAtRisk10, 2) + "Weighting:" + DoubleToString(Weighting10, 2) + "\n\n", "Total Value at Risk: $" + DoubleToString(currValueAtRisk, 2) + "\n\n", "Standard Deviation: " + DoubleToString(currportfolioStdDev, 6) + "\n\n" );
Note: Account Manager Part 2 - will likely need to be adapted. To fetch values from it make these values a double in the following code (this worked beforehand).
class CPortfolioRiskMan { public: double portfolioStdDev; double MultiPositionVaR;
Make sure to add the MPH file in the includes folder for decompiling.