Help debug my custom currency strength meter based on my own algo

Tâche terminée

Temps d'exécution 4 jours
Commentaires de l'employé
wonderful client.. thank you for this.
Commentaires du client
Cleaned up my buggy indicator nicely.

Spécifications

So as the title suggest, I am looking for someone to debug and briefly explain my errors in my code.

The indicator looks like this on the chart

There are 4 bugs to fix

  1. Indicator applies to the chart fine but doesn't seem to run after initialization.
  2. Indicator only works on 1 hour charts and higher.
  3. Indicator "freezes" on start on new period.
  4. Graphic panel doesn't update to represent indicator value.

Examples of coding include the following

  • Custom strength algo 

   int   i,pos;

////---
   if(rates_total<=1)
      return(0);

////--- preliminary calculation
   if(prev_calculated>1) pos=prev_calculated-1;
   else  pos=1;

   for(i=pos-1; i<rates_total; i++)
     {double eg = 50 + (((iClose("EURGBP",0,i)-iClose("EURGBP",0,(i+Delta)))/(iHigh("EURGBP",0,(iHighest("EURGBP",0,MODE_HIGH,Delta,i)))-iLow("EURGBP",0,(iLowest("EURGBP",0,MODE_LOW,Delta,i)))))*100)/2;
      double ea = 50 + (((iClose("EURAUD",0,i)-iClose("EURAUD",0,(i+Delta)))/(iHigh("EURAUD",0,(iHighest("EURAUD",0,MODE_HIGH,Delta,i)))-iLow("EURAUD",0,(iLowest("EURAUD",0,MODE_LOW,Delta,i)))))*100)/2;
      double en = 50 + (((iClose("EURNZD",0,i)-iClose("EURNZD",0,(i+Delta)))/(iHigh("EURNZD",0,(iHighest("EURNZD",0,MODE_HIGH,Delta,i)))-iLow("EURNZD",0,(iLowest("EURNZD",0,MODE_LOW,Delta,i)))))*100)/2;
      double eu = 50 + (((iClose("EURUSD",0,i)-iClose("EURUSD",0,(i+Delta)))/(iHigh("EURUSD",0,(iHighest("EURUSD",0,MODE_HIGH,Delta,i)))-iLow("EURUSD",0,(iLowest("EURUSD",0,MODE_LOW,Delta,i)))))*100)/2;
      double ec = 50 + (((iClose("EURCAD",0,i)-iClose("EURCAD",0,(i+Delta)))/(iHigh("EURCAD",0,(iHighest("EURCAD",0,MODE_HIGH,Delta,i)))-iLow("EURCAD",0,(iLowest("EURCAD",0,MODE_LOW,Delta,i)))))*100)/2;
      double eh = 50 + (((iClose("EURCHF",0,i)-iClose("EURCHF",0,(i+Delta)))/(iHigh("EURCHF",0,(iHighest("EURGBP",0,MODE_HIGH,Delta,i)))-iLow("EURCHF",0,(iLowest("EURCHF",0,MODE_LOW,Delta,i)))))*100)/2;
      double ej = 50 + (((iClose("EURJPY",0,i)-iClose("EURJPY",0,(i+Delta)))/(iHigh("EURJPY",0,(iHighest("EURJPY",0,MODE_HIGH,Delta,i)))-iLow("EURJPY",0,(iLowest("EURJPY",0,MODE_LOW,Delta,i)))))*100)/2;



      EURBuffer[i] = (eg+ea+en+eu+ec+eh+ej)/7;

//--- and so

  • graphic panel 

//+------------------------------------------------------------------+
//|  Create Panel                                                    |
//+------------------------------------------------------------------+
void CreatePanel()
//+------------------------------------------------------------------+
  {
   string name="label_";

   for(int i=1;i<=24; i++)
     {
      string labelname=name+IntegerToString(i,3,'0');

      switch(i)
        {
         case   1:
            createBarGraph(labelname,264,43,30,2);
            break;
         case   2:
            createBarGraph(labelname,232,43,30,2);
            break;
         case   3:
            createBarGraph(labelname,200,43,30,2);
            break;
   //--- and so on     
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|  create Bar Graph                                                |
//+------------------------------------------------------------------+
void createBarGraph(string lname,int xdistance,int ydistance,int xsize,int ysize)
//+------------------------------------------------------------------+
  {
   int ypoint=ydistance;
   string name=lname+"_";

   for(int num=51; num>=1; num--)
     {
      createRectangleLabel(name+IntegerToString(num,2,'0'),xdistance,ypoint,xsize,ysize);
      ypoint+=2;
     }
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|  Create Rectangle Label                                          |
//+------------------------------------------------------------------+
void createRectangleLabel(string name,int xdist,int ydist,int xsize,int ysize,)
  {
   ObjectCreate(name,OBJ_RECTANGLE_LABEL,0,0,0);
   //--- and so on
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|  Create Edit                                                     |
//+------------------------------------------------------------------+
void createEdit(string name,int xdist,int ydist,int xsize,int ysize,string text,int fontsize,color clr)
//+------------------------------------------------------------------+
  {
   ObjectCreate(name,OBJ_EDIT,0,0,0);
   //--- and so on
  }
//+------------------------------------------------------------------+

  • graphic panel update 

      objectSetBlank("label_001");
      objectSetGraph("label_001_",EURBuffer[0],C'128,128,128',C'134,121,121',C'140,115,115',C'147,108,108',C'153,102,102',C'159,96,96',C'166,89,89',C'172,83,83',C'179,77,77',C'185,70,70',C'191,64,64',C'198,57,57',C'204,51,51',C'210,45,45',C'217,38,38',C'223,32,32',C'230,25,25',C'236,19,19',C'242,13,13',C'249,6,6',C'255,0,0');
      ObjectSetString(0,"label_017",OBJPROP_TEXT,DoubleToString(EURBuffer[0],0));

  • Set graph 

//+------------------------------------------------------------------+
//|  object Set Graph                                                |
//+------------------------------------------------------------------+
void objectSetGraph(string name,double value,color a,color b,color c,color d,color e,color f,color g,color h,color i,color j,color k,color l,color m,color n,color o,color p,color q,color r,color s,color t,color u)
  {
//---
   ObjectSet(name+"51",OBJPROP_COLOR,a);
   if(value > 2.0) ObjectSet(name + "50", OBJPROP_COLOR, a);
   if(value > 4.0) ObjectSet(name + "49", OBJPROP_COLOR, b);
   if(value > 6.0) ObjectSet(name + "48", OBJPROP_COLOR, b);
   if(value > 8.0) ObjectSet(name + "47", OBJPROP_COLOR, c);
   if(value > 10.0) ObjectSet(name + "46", OBJPROP_COLOR, c);
   if(value > 12.0) ObjectSet(name + "45", OBJPROP_COLOR, d);
   if(value > 14.0) ObjectSet(name + "44", OBJPROP_COLOR, d);
   if(value > 16.0) ObjectSet(name + "43", OBJPROP_COLOR, e);
   if(value > 18.0) ObjectSet(name + "42", OBJPROP_COLOR, e);
   if(value > 20.0) ObjectSet(name + "41", OBJPROP_COLOR, f);
   if(value > 22.0) ObjectSet(name + "40", OBJPROP_COLOR, f);

//--- and so on

The full code is 440 lines and will be provided upon expression of interest.

Thank you for your time

Bob

Répondu

1
Développeur 1
Évaluation
(365)
Projets
507
40%
Arbitrage
159
17% / 74%
En retard
99
20%
Chargé
2
Développeur 2
Évaluation
(130)
Projets
210
40%
Arbitrage
90
20% / 43%
En retard
85
40%
Gratuit
3
Développeur 3
Évaluation
(499)
Projets
744
56%
Arbitrage
48
31% / 31%
En retard
120
16%
Gratuit
Publié : 1 code
4
Développeur 4
Évaluation
(69)
Projets
93
34%
Arbitrage
10
40% / 30%
En retard
5
5%
Gratuit
Commandes similaires
No complain 100 - 150 USD
Liquid Gold EA is a volatility-based trading system designed to identify strong price impulses and respond with precision using pending order execution The system monitors rapid market movements and positions trades only when clear momentum is established, combining dynamic order adjustment with structured risk control and trailing protection It integrates features such as adaptive lot sizing, spread filtering, daily
I am looking for an experienced developer in MQL5 to build a fully AI and automated trading bot (Expert Advisor) for MetaTrader 5. The EA will trade XAUUSD only and will be based purely on price action and Smart Money Concepts (SMC), specifically focusing on liquidity sweeps, market structure shifts (MSS/CHoCH), and wick rejection entries at key points of interest (POIs). The system must follow a strict rule: no
I need an MT5 Expert Advisor for US100 and XAUUSD. The EA must use risk management and must not use martingale or grid. Main requirements: Platform: MetaTrader 5 / MQL5 Symbols: US100 and XAUUSD Timeframes: M15 and M30, with higher timeframe trend filter Trend filter: EMA 50 and EMA 200 Momentum filter: RSI 14 Stop loss: ATR-based or recent swing high/low Take profit: minimum 1.5R risk/reward Risk per trade
Gold Precision Pro 30 - 100 USD
I want the indicator to be built professionally and carefully because the strategy is strong, but it requires advanced and clean programming. The indicator should work mainly on XAUUSD M15 and should generate more than 2 high-quality signals per day, ideally around 2 to 4 signals maximum, without flooding the chart. The logic must not be random. Each signal must be based on: HTF Bias from H1/H4, Liquidity Sweep
FINAL EA STRATEGY DOCUMENT (Chandelier Exit + EMA Breakout System) ------------------------------------ CORE INDICATOR - Chandelier Exit (MAIN LOGIC) - ATR Period: Editable (Default 22) - ATR Multiplier: Editable (Default 3) IMPORTANT: - ATR must NOT be shown as a separate indicator - ATR must be used ONLY internally inside Chandelier Exit - All SL & trailing must strictly follow Chandelier Exit line
Situation: Please contact me privately so I can provide the source code for review. Thank you. Project Overview: I have developed a high-frequency trading (HFT) EA that performs consistently in demo environments and passes most prop-firm requirements. While short live phases showed profitability, the results were not reproducible over time. My primary goal is stable live performance on retail accounts , not just
I am looking to develop a custom Expert Advisor (EA) for MetaTrader (MT4/MT5) based on a defined technical analysis strategy and flexible risk management rules. The EA should operate on a chart and timeframe that I manually specify, with the ability to adapt its behavior dynamically when the timeframe is changed. Core Strategy Logic The EA will execute trades based on predefined technical analysis zones
🚀 ADAPTIVE GRID HEDGE EA (FULL VERSION) 🧠 📌 GENERAL CONCEPT This Expert Advisor (EA) uses a strategy combining: Grid trading (order grid) Hedge (protection with opposite positions) Lot scaling (progressive) Loss compensation with profits Continuous operation (non-stop) Focus on: Small recurring profits High trade volume (rebate/IB) The system does not depend on direction, but rather on market oscillation . Main
I need a professional MQL5 developer. BEFORE I SHARE ANY DETAILS: 1. You must sign a PERPETUAL NDA with no expiration date 2. NDA includes €100,000 penalty for any breach 3. I require full .mq5 source code ownership 4. Developer must have 500+ completed jobs, 4.9+ rating Budget: €1500 EUR Duration: 14 days Start your application with "RULER" to prove you read this
Prepare expert for Live Chart . Trailing Stop Loss Based on Thresholds needs to be implemented . Live Behavior Based implementation . Logic needs to be changed/upgraded . Couple of parameters to be deleted . Other Filters like news and sessions already coded . Only one symbol to prepare for live , the other one is already optimized . Do ask me to provide you with screen shots of current live scenario

Informations sur le projet

Budget
30+ USD