Please Please can this be modified to work based on non static usdindex? once i run it it doesn't recalculate anymore
double USDCADOPEN, USDCHFOPEN, USDJPYOPEN, AUDUSDOPEN, EURUSDOPEN, GBPUSDOPEN, NZDUSDOPEN; double USDCAD, USDCHF, USDJPY, AUDUSD, EURUSD, GBPUSD, NZDUSD; double BufferUSDOPEN1, BufferUSDOPEN2; void OnTick() { // Update the opening prices USDCADOPEN = iOpen("USDCAD", PERIOD_D1, 0); USDCHFOPEN = iOpen("USDCHF", PERIOD_D1, 0); USDJPYOPEN = iOpen("USDJPY", PERIOD_D1, 0); AUDUSDOPEN = iOpen("AUDUSD", PERIOD_D1, 0); EURUSDOPEN = iOpen("EURUSD", PERIOD_D1, 0); GBPUSDOPEN = iOpen("GBPUSD", PERIOD_D1, 0); NZDUSDOPEN = iOpen("NZDUSD", PERIOD_D1, 0); // Update the current bid prices USDCAD = SymbolInfoDouble("USDCAD" + SymSuffix, SYMBOL_BID); USDCHF = SymbolInfoDouble("USDCHF" + SymSuffix, SYMBOL_BID); USDJPY = SymbolInfoDouble("USDJPY" + SymSuffix, SYMBOL_BID); AUDUSD = SymbolInfoDouble("AUDUSD" + SymSuffix, SYMBOL_BID); EURUSD = SymbolInfoDouble("EURUSD" + SymSuffix, SYMBOL_BID); GBPUSD = SymbolInfoDouble("GBPUSD" + SymSuffix, SYMBOL_BID); NZDUSD = SymbolInfoDouble("NZDUSD" + SymSuffix, SYMBOL_BID); // Calculate the indices double USDIndex = pow(((USDCHF * USDJPY * USDCAD) / (EURUSD * GBPUSD * AUDUSD)), 0.142857142857142855714285714); double AUDIndex = USDIndex * AUDUSD; double CADIndex = USDIndex / USDCAD; double CHFIndex = USDIndex / USDCHF; double EURIndex = USDIndex * EURUSD; double GBPIndex = USDIndex * GBPUSD; double NZDIndex = USDIndex * NZDUSD; double JPYIndex = USDJPY / USDIndex; // Update the BufferUSDOPEN1 and BufferUSDOPEN2 variables BufferUSDOPEN1 = USDHIGH(); BufferUSDOPEN2 = USDLOW(); // Add your additional code here } double USDHIGH() { double BufferUSDOPEN1 = pow(((USDCHFOPEN * USDJPYOPEN * USDCADOPEN) / (EURUSDOPEN * GBPUSDOPEN * AUDUSDOPEN)), 0.142857142857142855714285714); double USDINDEX = pow(((USDCHF * USDJPY * USDCAD) / (EURUSD * GBPUSD * AUDUSD)), 0.142857142857142855714285714); if (USDINDEX > BufferUSDOPEN1) BufferUSDOPEN1 = USDINDEX; return (BufferUSDOPEN1); } double USDLOW() { double BufferUSDOPEN2 = pow(((USDCHFOPEN * USDJPYOPEN * USDCADOPEN) / (EURUSDOPEN * GBPUSDOPEN * AUDUSDOPEN)), 0.142857142857142855714285714); double USDINDEX = pow(((USDCHF * USDJPY * USDCAD) / (EURUSD * GBPUSD * AUDUSD)), 0.142857142857142855714285714); if (USDINDEX < BufferUSDOPEN2) BufferUSDOPEN2 = USDINDEX; return (BufferUSDOPEN2); }NOTE: if you're using a script instead of an EA you'll need to replace the OnTick() function with the OnCalculate()
perfect, thank you, it's probably not possible for him to remember the highest and lowest value of low and high?
Zbynek Liska #:
perfect, thank you, it's probably not possible for him to remember the highest and lowest value of low and high?
perfect, thank you, it's probably not possible for him to remember the highest and lowest value of low and high?
Possible Zbynek possible:
double USDCADOPEN, USDCHFOPEN, USDJPYOPEN, AUDUSDOPEN, EURUSDOPEN, GBPUSDOPEN, NZDUSDOPEN; double USDCAD, USDCHF, USDJPY, AUDUSD, EURUSD, GBPUSD, NZDUSD; double BufferUSDOPEN1, BufferUSDOPEN2; double USDHighest, USDLowest; void OnTick() { // Update the opening prices USDCADOPEN = iOpen("USDCAD", PERIOD_D1, 0); // ... (update other opening prices) // Update the current bid prices USDCAD = SymbolInfoDouble("USDCAD" + SymSuffix, SYMBOL_BID); // ... (update other bid prices) // Calculate the indices double USDIndex = pow(((USDCHF * USDJPY * USDCAD) / (EURUSD * GBPUSD * AUDUSD)), 0.142857142857142855714285714); double AUDIndex = USDIndex * AUDUSD; // ... (calculate other indices) // Update the BufferUSDOPEN1 and BufferUSDOPEN2 variables BufferUSDOPEN1 = USDHIGH(); BufferUSDOPEN2 = USDLOW(); // Update the highest and lowest values of USDIndex USDHighest = MathMax(USDHighest, USDIndex); USDLowest = MathMin(USDLowest, USDIndex); // Add your additional code here } double USDHIGH() { double BufferUSDOPEN1 = pow(((USDCHFOPEN * USDJPYOPEN * USDCADOPEN) / (EURUSDOPEN * GBPUSDOPEN * AUDUSDOPEN)), 0.142857142857142855714285714); double USDINDEX = pow(((USDCHF * USDJPY * USDCAD) / (EURUSD * GBPUSD * AUDUSD)), 0.142857142857142855714285714); if (USDINDEX > BufferUSDOPEN1) BufferUSDOPEN1 = USDINDEX; return (BufferUSDOPEN1); } double USDLOW() { double BufferUSDOPEN2 = pow(((USDCHFOPEN * USDJPYOPEN * USDCADOPEN) / (EURUSDOPEN * GBPUSDOPEN * AUDUSDOPEN)), 0.142857142857142855714285714); double USDINDEX = pow(((USDCHF * USDJPY * USDCAD) / (EURUSD * GBPUSD * AUDUSD)), 0.142857142857142855714285714); if (USDINDEX < BufferUSDOPEN2) BufferUSDOPEN2 = USDINDEX; return (BufferUSDOPEN2); }
NOTE: if you wish to reset the highest and lowest values at the beginning of trading session or new day, you need to initialize USDHighest and USDLowest with appropriate values on start.
void OnTick() { USDCADOPEN = iOpen("USDCAD", PERIOD_D1, 0); USDCHFOPEN = iOpen("USDCHF", PERIOD_D1, 0); USDJPYOPEN = iOpen("USDJPY", PERIOD_D1, 0); AUDUSDOPEN = iOpen("AUDUSD", PERIOD_D1, 0); EURUSDOPEN = iOpen("EURUSD", PERIOD_D1, 0); GBPUSDOPEN = iOpen("GBPUSD", PERIOD_D1, 0); NZDUSDOPEN = iOpen("NZDUSD", PERIOD_D1, 0); // Update the current bid prices USDCAD = SymbolInfoDouble("USDCAD" + SymSuffix, SYMBOL_BID); USDCHF = SymbolInfoDouble("USDCHF" + SymSuffix, SYMBOL_BID); USDJPY = SymbolInfoDouble("USDJPY" + SymSuffix, SYMBOL_BID); AUDUSD = SymbolInfoDouble("AUDUSD" + SymSuffix, SYMBOL_BID); EURUSD = SymbolInfoDouble("EURUSD" + SymSuffix, SYMBOL_BID); GBPUSD = SymbolInfoDouble("GBPUSD" + SymSuffix, SYMBOL_BID); NZDUSD = SymbolInfoDouble("NZDUSD" + SymSuffix, SYMBOL_BID); // Calculate the indices double USDIndex = pow(((USDCHF * USDJPY * USDCAD) / (EURUSD * GBPUSD * AUDUSD)), 0.142857142857142855714285714); double AUDIndex = USDIndex * AUDUSD; // ... (calculate other indices) // Update the BufferUSDOPEN1 and BufferUSDOPEN2 variables BufferUSDOPEN1 = USDHIGH(); BufferUSDOPEN2 = USDLOW(); // Update the highest and lowest values of USDIndex USDHighest = MathMax(USDHighest, USDIndex); USDLowest = MathMin(USDLowest, USDIndex); // Add your additional code here ObjectCreate(0,"Test13",OBJ_LABEL,0,0,0,0,0,0,0); ObjectSetString(0,"Test13",OBJPROP_TEXT,"Low "+DoubleToString(USDLOW(),4)+" Bid "+DoubleToString(USDIndex,4)+" Lowest "+DoubleToString(USDLowest,4)); ObjectSetInteger(0,"Test13",OBJPROP_XDISTANCE,800); ObjectSetInteger(0,"Test13",OBJPROP_YDISTANCE,50); ObjectSetInteger(0,"Test13",OBJPROP_CORNER,CORNER_RIGHT_UPPER); ObjectSetInteger(0,"Test13",OBJPROP_COLOR,clrBlack); ObjectSetInteger(0,"Test13",OBJPROP_FONTSIZE,16); ObjectSetString(0,"Test13",OBJPROP_FONT,"Baskerville Old Face"); } double USDHIGH() { double BufferUSDOPEN1 = pow(((USDCHFOPEN * USDJPYOPEN * USDCADOPEN) / (EURUSDOPEN * GBPUSDOPEN * AUDUSDOPEN)), 0.142857142857142855714285714); double USDINDEX = pow(((USDCHF * USDJPY * USDCAD) / (EURUSD * GBPUSD * AUDUSD)), 0.142857142857142855714285714); if (USDINDEX > BufferUSDOPEN1) BufferUSDOPEN1 = USDINDEX; return (BufferUSDOPEN1); } double USDLOW() { double BufferUSDOPEN2 = pow(((USDCHFOPEN * USDJPYOPEN * USDCADOPEN) / (EURUSDOPEN * GBPUSDOPEN * AUDUSDOPEN)), 0.142857142857142855714285714); double USDINDEX = pow(((USDCHF * USDJPY * USDCAD) / (EURUSD * GBPUSD * AUDUSD)), 0.142857142857142855714285714); if (USDINDEX < BufferUSDOPEN2) BufferUSDOPEN2 = USDINDEX; return (BufferUSDOPEN2); }i got it right please? it shows this
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register