Add 1 indicator to system

MQL4 Experts

Job finished

Execution time 12 hours
Feedback from employee
Very good customer, Nice to work with you, Thanks :)
Feedback from customer
If it was possible i would give him 6 stars, very friendly and very accurate, no 1 :)

Specification

I have an EA but this is not profitable, i think by adding 1 simple indicator to the EA, i think this will be profitable. The indicator is with the following source code:


//+------------------------------------------------------------------+
//|                                            PriceDegrees.mq4 |
//|                 Copyright 2014,  Roy Philips Jacobs ~ 29/06/2014 |
//|                                           http://www.gol2you.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014,  Roy Philips Jacobs ~ 29/06/2014"
#property link      "http://www.gol2you.com ~ Forex Videos"
#property description "Forex Indicator Price Degrees with Trend Alerts."
#property description "This indicator will write value degrees of the lastest position of price at the current Timeframes."
#property description "according to the Daily price movment, and when position and condition of trend status was changed,"
#property description "the indicator will give an alerts."
//--
#property indicator_chart_window
//---
extern string PriceDegrees="Copyright © 2014 3RJ ~ Roy Philips-Jacobs";
extern bool  MsgAlerts   = true;
extern bool  SoundAlerts = true;
extern bool  eMailAlerts = false;
extern string  SoundAlertFile="alert.wav";
//--
int corner=1;
int dist_x=190;
int dist_xt=150;
int dist_y=80;
int sep=30;
int posalert,prevalert;
//--
color stgBull=clrBlue;
color stsBull=clrAqua;
color stsBear=clrYellow;
color stgBear=clrRed;
color txtrbl=clrWhite;
color txtblk=clrBlack;
//--
void EventSetTimer();
//--
string CRight;
string symbol;
string dtext;
string Albase,AlSubj,AlMsg;
//---
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
//--- indicator buffers mapping
   symbol=_Symbol;
   CRight="Copyright © 2014 3RJ ~ Roy Philips-Jacobs";
//---
//---- indicators
   //---
   IndicatorShortName("PriceDegrees ("+symbol+")");
   //--
   IndicatorDigits(Digits);
   //--  
//---
   return;
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//----
   EventKillTimer();
   GlobalVariablesDeleteAll();
//---
   ObjectDelete("RoundedDegrees");
   ObjectDelete("TextDegrees");
   ObjectDelete("ArrUpDegrees");
   ObjectDelete("ArrDnDegrees");
//----
   return;
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//------
   if(PriceDegrees!=CRight) return(0);
   if(rates_total<sep) return(0);
//---
//--- Set Last error value to Zero
   ResetLastError();
   ChartSetInteger(0,CHART_AUTOSCROLL,0,true);
   WindowRedraw();
   ChartRedraw(0);
   Sleep(500);
   RefreshRates();
   double WmaxPr=NormalizeDouble(WindowPriceMax(),Digits);
   double WminPr=NormalizeDouble(WindowPriceMin(),Digits);
   int limit=WindowFirstVisibleBar();
   int j;
   int dtxt=0;  
   //---
   color rndclr;
   color arrclr;
   color txtclr;
   //---
   bool dgrsUp,dgrsDn;
   //--
//----
   //--
   for(j=limit; j>=0; j--)
     {
       //---
       double dayopp=iOpen(symbol,1440,j);
       double h4cls1=iClose(symbol,240,j+1);
       double m15cl1=iClose(symbol,15,j+1);
       double cc0=close[j];
       //--
       double dop_degrees=270+((dayopp-WminPr)/(WmaxPr-WminPr))*180;
       //--  
       double prvh41_degrees=270+((h4cls1-WminPr)/(WmaxPr-WminPr))*180;  
       //--  
       double prv151_degrees=270+((m15cl1-WminPr)/(WmaxPr-WminPr))*180;
       //--
       double cur_degrees=270+((cc0-WminPr)/(WmaxPr-WminPr))*180;
       //--
       double div1_degrees=prvh41_degrees - dop_degrees;
       double div151_degrees=prv151_degrees - prvh41_degrees;
       double div150_degrees=cur_degrees - prvh41_degrees;
       double div0_degrees=cur_degrees - dop_degrees;
       //--
       if(cur_degrees>360.0) {cur_degrees=cur_degrees-360.0;}
       if(cur_degrees==360.0) {cur_degrees=0.0;}
       //- To give a value of 90.0 degrees to the indicator, when the price moves up very quickly and make a New Windows Price Max.
       if(cur_degrees==90.0) {cur_degrees=90.0;}
       //- To give a value of 270.0 degrees to the indicator, when the price moves down very quickly and make a New Windows Price Min.
       if(cur_degrees==270.0) {cur_degrees=270.0;}
       //--
       if((div0_degrees>div1_degrees)&&(div150_degrees>div151_degrees))
          {dgrsUp=true; dgrsDn=false;}
       if((div0_degrees<div1_degrees)&&(div150_degrees<div151_degrees))
          {dgrsDn=true; dgrsUp=false;}
       //--
       //--- last edited 2014.06.29 11:25PM
       if((cur_degrees>=270.0 && cur_degrees<315.0)&&(dgrsDn==true)) {rndclr=stgBear; arrclr=stgBear; txtclr=txtrbl; posalert=11;}
       if((cur_degrees>=270.0 && cur_degrees<315.0)&&(dgrsUp==true)) {rndclr=stgBear; arrclr=stsBear; txtclr=txtrbl; posalert=12;}
       if((cur_degrees>=315.0 && cur_degrees<360.0)&&(dgrsDn==true)) {rndclr=stsBear; arrclr=stgBear; txtclr=txtblk; posalert=21;}
       if((cur_degrees>=315.0 && cur_degrees<360.0)&&(dgrsUp==true)) {rndclr=stsBear; arrclr=stsBull; txtclr=txtblk; posalert=23;}
       if((cur_degrees>=0.0 && cur_degrees<45.0)&&(dgrsUp==true)) {rndclr=stsBull; arrclr=stgBull; txtclr=txtblk; posalert=34;}
       if((cur_degrees>=0.0 && cur_degrees<45.0)&&(dgrsDn==true)) {rndclr=stsBull; arrclr=stsBear; txtclr=txtblk; posalert=32;}
       if((cur_degrees>=45.0 && cur_degrees<=90.0)&&(dgrsUp==true)) {rndclr=stgBull; arrclr=stgBull; txtclr=txtrbl; posalert=44;}
       if((cur_degrees>=45.0 && cur_degrees<=90.0)&&(dgrsDn==true)) {rndclr=stgBull; arrclr=stsBull; txtclr=txtrbl; posalert=43;}
       //---
       dtext=StringTrimRight(StringConcatenate(DoubleToStr(cur_degrees,1),"",CharToStr(176)));
       if(StringLen(dtext)>5) {dtxt=24;}
       else if(StringLen(dtext)==5) {dtxt=20;}
       else {dtxt=17;}
       //----
       if(j==0)
         {
           //---
           ObjectDelete("RoundedDegrees");
           ObjectDelete("TextDegrees");
           ObjectDelete("ArrUpDegrees");
           ObjectDelete("ArrDnDegrees");
           //--
           if(ObjectFind(0,"RoundedDegrees")<0)
             {            
               //--
               ObjectCreate(0,"RoundedDegrees",OBJ_LABEL,0,0,0);
               ObjectSetString(0,"RoundedDegrees",OBJPROP_TEXT,CharToStr(108));
               ObjectSetString(0,"RoundedDegrees",OBJPROP_FONT,"Wingdings");
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_COLOR,rndclr);
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_FONTSIZE,67);
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_CORNER,corner);
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_XDISTANCE,dist_x);
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_YDISTANCE,dist_y);              
               //--
             }
           else
             {
               //--
               ObjectSetString(0,"RoundedDegrees",OBJPROP_TEXT,CharToStr(108));
               ObjectSetString(0,"RoundedDegrees",OBJPROP_FONT,"Wingdings");
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_COLOR,rndclr);
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_FONTSIZE,67);
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_CORNER,corner);
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_XDISTANCE,dist_x);
               ObjectSetInteger(0,"RoundedDegrees",OBJPROP_YDISTANCE,dist_y);              
               //--              
             }
           //--
           if(ObjectFind(0,"TextDegrees")<0)
             {            
               //--              
               ObjectCreate(0,"TextDegrees",OBJ_LABEL,0,0,0);
               ObjectSetString(0,"TextDegrees",OBJPROP_TEXT,dtext);
               ObjectSetString(0,"TextDegrees",OBJPROP_FONT,"Bodoni MT Black");
               ObjectSetInteger(0,"TextDegrees",OBJPROP_COLOR,txtclr);
               ObjectSetInteger(0,"TextDegrees",OBJPROP_FONTSIZE,8);
               ObjectSetInteger(0,"TextDegrees",OBJPROP_CORNER,corner);
               ObjectSetInteger(0,"TextDegrees",OBJPROP_XDISTANCE,dist_xt+dtxt);
               ObjectSetInteger(0,"TextDegrees",OBJPROP_YDISTANCE,dist_y+41.5);
               //--
             }
           else
             {
               //--
               ObjectSetString(0,"TextDegrees",OBJPROP_TEXT,dtext);
               ObjectSetString(0,"TextDegrees",OBJPROP_FONT,"Bodoni MT Black");
               ObjectSetInteger(0,"TextDegrees",OBJPROP_COLOR,txtclr);
               ObjectSetInteger(0,"TextDegrees",OBJPROP_FONTSIZE,8);
               ObjectSetInteger(0,"TextDegrees",OBJPROP_CORNER,corner);
               ObjectSetInteger(0,"TextDegrees",OBJPROP_XDISTANCE,dist_xt+dtxt);
               ObjectSetInteger(0,"TextDegrees",OBJPROP_YDISTANCE,dist_y+41.5);
               //--
             }        
           //---
           //---
           if(dgrsUp)
             {
               //--
               if(ObjectFind(0,"ArrUpDegrees")<0)
                 {            
                   //--
                   ObjectCreate(0,"ArrUpDegrees",OBJ_LABEL,0,0,0);
                   ObjectSetString(0,"ArrUpDegrees",OBJPROP_TEXT,CharToStr(217));
                   ObjectSetString(0,"ArrUpDegrees",OBJPROP_FONT,"Wingdings");
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_COLOR,arrclr);
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_FONTSIZE,23);
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_CORNER,corner);
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_XDISTANCE,dist_xt+20);
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_YDISTANCE,dist_y-2);
                   //--
                 }
               else
                 {
                   //--
                   ObjectSetString(0,"ArrUpDegrees",OBJPROP_TEXT,CharToStr(217));
                   ObjectSetString(0,"ArrUpDegrees",OBJPROP_FONT,"Wingdings");
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_COLOR,arrclr);
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_FONTSIZE,23);
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_CORNER,corner);
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_XDISTANCE,dist_xt+20);
                   ObjectSetInteger(0,"ArrUpDegrees",OBJPROP_YDISTANCE,dist_y-2);
                   //--                
                 }        
              //--
              //--
             }
           //---
           //---
           if(dgrsDn)
             {
               //--
               if(ObjectFind(0,"ArrDnDegrees")<0)
                 {            
                   //--
                   ObjectCreate(0,"ArrDnDegrees",OBJ_LABEL,0,0,0);
                   ObjectSetString(0,"ArrDnDegrees",OBJPROP_TEXT,CharToStr(218));
                   ObjectSetString(0,"ArrDnDegrees",OBJPROP_FONT,"Wingdings");
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_COLOR,arrclr);
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_FONTSIZE,23);
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_CORNER,corner);
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_XDISTANCE,dist_xt+20);
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_YDISTANCE,dist_y+63);
                   //--
                 }
               else
                 {
                   //--
                   ObjectSetString(0,"ArrDnDegrees",OBJPROP_TEXT,CharToStr(218));
                   ObjectSetString(0,"ArrDnDegrees",OBJPROP_FONT,"Wingdings");
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_COLOR,arrclr);
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_FONTSIZE,23);
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_CORNER,corner);
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_XDISTANCE,dist_xt+20);
                   ObjectSetInteger(0,"ArrDnDegrees",OBJPROP_YDISTANCE,dist_y+63);
                   //--
                 }                          
              //--
              //--
             }
           //--
           ChartRedraw(0);
           WindowRedraw();
           Sleep(500);
           RefreshRates();
           //--
           PosAlerts(posalert);
          //---
         }
      //---- End if(j)
     }
    //--- End for(j)
//--- done
   return(rates_total);
  }
//----- End OnCalculate()

//+--+
void DoAlerts(string msgText,string eMailSub)
  {
     if (MsgAlerts) Alert(msgText);
     if (SoundAlerts) PlaySound(SoundAlertFile);
     if (eMailAlerts) SendMail(eMailSub,msgText);
  }
//+--+

//+--+
string StrTF(int period)
  {
   switch(period)
     {
        case PERIOD_M1: return("M1");
        case PERIOD_M5: return("M5");
        case PERIOD_M15: return("M15");
        case PERIOD_M30: return("M30");
        case PERIOD_H1: return("H1");
        case PERIOD_H4: return("H4");
        case PERIOD_D1: return("D1");
        case PERIOD_W1: return("W1");
        case PERIOD_MN1: return("MN");
     }
   return(_Period);
  }  
//+--+

//+--+
void PosAlerts(int curalerts) //- last edited 2014.06.29 05:38AM
   {
    //---
    if((curalerts!=prevalert)&&(curalerts==43))
       {    
         Albase=StringConcatenate(symbol,", TF: ",StrTF(_Period),", PriceDegrees: ","Position ",dtext);
         AlSubj=StringConcatenate(Albase," Trend Began to Fall, Bulish Weakened");
         AlMsg=StringConcatenate(AlSubj," @ ",TimeToStr(TimeLocal(),TIME_SECONDS));
         DoAlerts(AlMsg,AlSubj);
         prevalert=curalerts;
       }
    //---
    if((curalerts!=prevalert)&&(curalerts==32))
       {    
         Albase=StringConcatenate(symbol,", TF: ",StrTF(_Period),", PriceDegrees: ","Position ",dtext);
         AlSubj=StringConcatenate(Albase," Trend was Down, Bulish Reversal");
         AlMsg=StringConcatenate(AlSubj," @ ",TimeToStr(TimeLocal(),TIME_SECONDS));
         DoAlerts(AlMsg,AlSubj);
         prevalert=curalerts;
       }
    //---
    if((curalerts!=prevalert)&&(curalerts==21))
       {    
         Albase=StringConcatenate(symbol,", TF: ",StrTF(_Period),", PriceDegrees: ","Position ",dtext);
         AlSubj=StringConcatenate(Albase," Trend was Down, Bearish Strengthened");
         AlMsg=StringConcatenate(AlSubj," @ ",TimeToStr(TimeLocal(),TIME_SECONDS));
         DoAlerts(AlMsg,AlSubj);
         prevalert=curalerts;
       }              
    //---
    if((curalerts!=prevalert)&&(curalerts==11))
       {    
         Albase=StringConcatenate(symbol,", TF: ",StrTF(_Period),", PriceDegrees: ","Position ",dtext);
         AlSubj=StringConcatenate(Albase," Trend was Down, Strong Bearish");
         AlMsg=StringConcatenate(AlSubj," @ ",TimeToStr(TimeLocal(),TIME_SECONDS));
         DoAlerts(AlMsg,AlSubj);
         prevalert=curalerts;
       }
    //---//
    if((curalerts!=prevalert)&&(curalerts==12))
       {
         Albase=StringConcatenate(symbol,", TF: ",StrTF(_Period),", PriceDegrees: ","Position ",dtext);
         AlSubj=StringConcatenate(Albase," Trend Began to Rise, Bearish Weakened");
         AlMsg=StringConcatenate(AlSubj," @ ",TimeToStr(TimeLocal(),TIME_SECONDS));
         DoAlerts(AlMsg,AlSubj);
         prevalert=curalerts;
       }
    //---
    if((curalerts!=prevalert)&&(curalerts==23))
       {
         Albase=StringConcatenate(symbol,", TF: ",StrTF(_Period),", PriceDegrees: ","Position ",dtext);
         AlSubj=StringConcatenate(Albase," Trend was Up, Bearish Reversal");
         AlMsg=StringConcatenate(AlSubj," @ ",TimeToStr(TimeLocal(),TIME_SECONDS));
         DoAlerts(AlMsg,AlSubj);
         prevalert=curalerts;
       }
    //---
    if((curalerts!=prevalert)&&(curalerts==34))
       {
         Albase=StringConcatenate(symbol,", TF: ",StrTF(_Period),", PriceDegrees: ","Position ",dtext);
         AlSubj=StringConcatenate(Albase," Trend was Up, Bulish Strengthened");
         AlMsg=StringConcatenate(AlSubj," @ ",TimeToStr(TimeLocal(),TIME_SECONDS));
         DoAlerts(AlMsg,AlSubj);
         prevalert=curalerts;
       }
    //---
    if((curalerts!=prevalert)&&(curalerts==44))
       {
         Albase=StringConcatenate(symbol,", TF: ",StrTF(_Period),", PriceDegrees: ","Position ",dtext);
         AlSubj=StringConcatenate(Albase," Trend was Up, Strong Bulish");
         AlMsg=StringConcatenate(AlSubj," @ ",TimeToStr(TimeLocal(),TIME_SECONDS));
         DoAlerts(AlMsg,AlSubj);
         prevalert=curalerts;
       }
    //---
    return;
   //----
   } //-end PosAlerts()
//+------------------------------------------------------------------+


Responded

1
Developer 1
Rating
(195)
Projects
395
28%
Arbitration
155
20% / 52%
Overdue
112
28%
Free
2
Developer 2
Rating
(27)
Projects
36
19%
Arbitration
14
21% / 71%
Overdue
12
33%
Free
3
Developer 3
Rating
(25)
Projects
54
37%
Arbitration
4
0% / 50%
Overdue
22
41%
Free
4
Developer 4
Rating
Projects
1
0%
Arbitration
0
Overdue
0
Free
5
Developer 5
Rating
(121)
Projects
134
66%
Arbitration
36
25% / 56%
Overdue
22
16%
Free
6
Developer 6
Rating
(71)
Projects
156
44%
Arbitration
22
41% / 14%
Overdue
16
10%
Free
Similar orders
Im looking for an coder to code an EA: Trade management 1. opening trades according to the indicator 2. trades settings to choose from like: open all trades according to the signal open only trade 1,2,3 or 4 % per trade ( example 50/30/20 of the lot settings, with 4 trades it would be for example 50/30/10/10) 3. SL/Trailing settings: Move SL to entry after hitting TP1/TP2 or TP3 moving SL by % keep the original SL
Hi I'm looking to have 2 of my pinescript strategies converted to MQL5 and was wondering if you could first give me a quote for the more simple strategy and then for both the simple and complex strategy together. The simple strategy is a MACD crossover type thing that uses a special EMA script that filters out some ranging price action and also fractal candles for the stop loss. The second strategy is market
I want grate robot for making profits that know when to start a good trade and close a trade and must be active all time to avoid lost of money
I have developed a very strong TradingView strategy in Pine Script but unfortunately, a third-party connector is requiired and in my opinion, I want a more direct connection. I am not brilliant at coding, but I have coded the majority of the MT5 code and I would like you to make sure that the MT5 code matches my TradingView script and executes the same way as the TradingView script that I will provide if you are
Mbeje fx 50+ USD
I like to own my robot that why I want to build my own.i like to be a best to every robot ever in the life to be have more money
I need an MT5 EA that can do the following: I have to give the EA a price in advance, when the price is reached the EA has to automatically place a buy stop or sell stop order 0.5 pips below or above the price. Is this possible
Dr Pattern 30+ USD
good day i need the service of the seaso coder to help me fix my ea The Job required 1 knowledge of Mt4 and Mt5 indicator coding 2. Telegram code 3. ability to code indicator to work on multiple Time frame combine to trade 4 Ability to Join two or three indicator on same ir different time frame if you have these skill please let chart i will discuss the details of the Job inside to you The required day including
Good day, I want someone to help me create a universal news filter with on/off switch, with start and end settings, and drawdown control with magic number of EAs, etc. Thanks
Hello, I am looking for a professional programmer to optimize my existing EA integrating it with ChatGPT to analyze currencies using various methods to make the right trading decisions. i want it to be an EA that can be trusted to carry trade with the help of chat gpt and also have a very low drawdown
Hello, I am looking for a professional programmer to create a trading expert on the MT4 platform, integrating it with ChatGPT to analyze currencies using various methods to make the right trading decisions. Further details will be provided to the applicants later

Project information

Budget
15 USD
VAT (21%): 3.15 - 3.15 USD
Total: 18.15 - 18.15 USD
For the developer
13.5 - 13.5 USD
Deadline
from 1 to 4 day(s)