Hello,
I have developed a strategy but I'm struggling to write the MQL5 code and it's easier for me to get some help rather than continue struggling.
I will explain the part of the strategy I need help with in basic code but I need help writing this in MQL5 as 1. I can't figure out how to calculate the moving average of a source that isnt OHLC, and 2. I cant think how to store that as an array. I have commented the sections below:
lookback_period = 50 //------ Get RSI Values for all 28 Pairs double audcad = rsi("AUDCAD",lookback_period) double audchf = rsi("AUDCHF",lookback_period) double audjpy = rsi("AUDJPY",lookback_period) double audnzd = rsi("AUDNZD",lookback_period) double audusd = rsi("AUDUSD",lookback_period) double cadchf = rsi("CADCHF",lookback_period) double cadjpy = rsi("CADJPY",lookback_period) double chfjpy = rsi("CHFJPY",lookback_period) double euraud = rsi("EURAUD",lookback_period) double eurcad = rsi("EURCAD",lookback_period) double eurchf = rsi("EURCHF",lookback_period) double eurgbp = rsi("EURGBP",lookback_period) double eurjpy = rsi("EURJPY",lookback_period) double eurnzd = rsi("EURNZD",lookback_period) double eurusd = rsi("EURUSD",lookback_period) double gbpaud = rsi("GBPAUD",lookback_period) double gbpcad = rsi("GBPCAD",lookback_period) double gbpchf = rsi("GBPCHF",lookback_period) double gbpjpy = rsi("GBPJPY",lookback_period) double gbpnzd = rsi("GBPNZD",lookback_period) double gbpusd = rsi("GBPUSD",lookback_period) double nzdcad = rsi("NZDCAD",lookback_period) double nzdchf = rsi("NZDCHF",lookback_period) double nzdjpy = rsi("NZDJPY",lookback_period) double nzdusd = rsi("NZDUSD",lookback_period) double usdcad = rsi("USDCAD",lookback_period) double usdchf = rsi("USDCHF",lookback_period) double usdjpy = rsi("USDJPY",lookback_period) //----- Find Individual Currency Strength double aud = (audcad+audchf+(100-euraud)+(100-gbpaud)+audjpy+audnzd+audusd)/7; double cad = ((100-audcad)+cadchf+(100-eurcad)+(100-gbpcad)+cadjpy+(100-nzdcad)+(100-usdcad))/7; double chf = ((100-audchf)+(100-cadchf)+(100-eurchf)+(100-gbpchf)+chfjpy+(100-nzdchf)+(100-usdchf))/7; double eur = (euraud,eurcad+eurchf+eurgbp+eurjpy+eurnzd+eurusd)/7; double gbp = (gbpaud,gbpcad+gbpchf+(100-eurgbp)+gbpjpy+gbpnzd+gbpusd)/7; double jpy = ((100-audjpy)+(100-cadjpy)+(100-chfjpy),(100-eurjpy)+(100-gbpjpy)+(100-nzdjpy)+(100-usdjpy))/7; double nzd = ((100-audnzd)+nzdcad+nzdchf+(100-eurnzd)+(100-gbpnzd)+nzdjpy+nzdusd)/7; double usd = ((100-audusd)+usdcad+usdchf+(100-eurusd)+(100-gbpusd)+usdjpy+(100-nzdusd))/7; //---- Now I need a function to take one of the individual currency strengths and calculate 2 moving averages, subtracting the smaller moving average from the larger one. The problem is 1. finding the moving average of a source that isnt OHLC, and 2. storing that as an array to be able to identify crossovers etc: int signal(double data_currency) { int signal_output = 0; delta[] = ema(data_currency,50) - ema(data_currency,200) // This needs to be an array so that I can calculate when delta crosses above or below 0. This is the entry criteria if(delta[0] > 0 && delta[1] < 0) //delta crosses above 0 signal_output = 1; if(delta[0] < 0 && delta[1]) > 0 //delta below above 0 signal_output = -1; return(signal_output); }
This should be a simple fix for someone who knows the solution!