Техническое задание

Hello I need you to fix this 2 OSMA indicators into Icustom indicator.  I have used the OsMA xb4 and  osma color (mtf + alerts) to created the Icustom  but it did not work . so I want you to fix .

See attached the original MQL4 file used to create the above icustoms . I have added all of them so that  you  review eberything your self. If you  need any additional information please do not hesitate to let me know. Thank you.

The first i did is for  OsMA xb4

//+------------------------------------------------------------------+
//|                                              Indicator: OSMA.mq4 |
//|                                       Created with EABuilder.com |
//|                                        https://www.eabuilder.com |
//+------------------------------------------------------------------+
#property copyright "Created with EABuilder.com"
#property link      "https://www.eabuilder.com"
#property version   "1.00"
#property description ""
#property tester_indicator "OsMA Color xb4"

#include <stdlib.mqh>
#include <stderror.mqh>

//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 4

#property indicator_type1 DRAW_ARROW
#property indicator_width1 1
#property indicator_color1 0xFFAA00
#property indicator_label1 "Buy"

#property indicator_type2 DRAW_ARROW
#property indicator_width2 1
#property indicator_color2 0x0000FF
#property indicator_label2 "Sell"

#property indicator_type3 DRAW_ARROW
#property indicator_width3 1
#property indicator_color3 0xFFAA00
#property indicator_label3 "Buy"

#property indicator_type4 DRAW_ARROW
#property indicator_width4 1
#property indicator_color4 0x0000FF
#property indicator_label4 "Sell"

//--- indicator buffers
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];

double myPoint; //initialized in OnInit

void myAlert(string type, string message)
  {
   if(type == "print")
      Print(message);
   else if(type == "error")
     {
      Print(type+" | OSMA @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
     }
   else if(type == "order")
     {
     }
   else if(type == "modify")
     {
     }
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {   
   IndicatorBuffers(4);
   SetIndexBuffer(0, Buffer1);
   SetIndexEmptyValue(0, EMPTY_VALUE);
   SetIndexArrow(0, 241);
   SetIndexBuffer(1, Buffer2);
   SetIndexEmptyValue(1, EMPTY_VALUE);
   SetIndexArrow(1, 242);
   SetIndexBuffer(2, Buffer3);
   SetIndexEmptyValue(2, EMPTY_VALUE);
   SetIndexArrow(2, 241);
   SetIndexBuffer(3, Buffer4);
   SetIndexEmptyValue(3, EMPTY_VALUE);
   SetIndexArrow(3, 242);
   //initialize myPoint
   myPoint = Point();
   if(Digits() == 5 || Digits() == 3)
     {
      myPoint *= 10;
     }
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| 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[])
  {
   int limit = rates_total - prev_calculated;
   //--- counting from 0 to rates_total
   ArraySetAsSeries(Buffer1, true);
   ArraySetAsSeries(Buffer2, true);
   ArraySetAsSeries(Buffer3, true);
   ArraySetAsSeries(Buffer4, true);
   //--- initial zero
   if(prev_calculated < 1)
     {
      ArrayInitialize(Buffer1, EMPTY_VALUE);
      ArrayInitialize(Buffer2, EMPTY_VALUE);
      ArrayInitialize(Buffer3, EMPTY_VALUE);
      ArrayInitialize(Buffer4, EMPTY_VALUE);
     }
   else
      limit++;
   
   //--- main loop
   for(int i = limit-1; i >= 0; i--)
     {
      if (i >= MathMin(5000-1, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" or slow calculation   
      
      //Indicator Buffer 1
      if(iCustom(NULL, PERIOD_CURRENT, "OsMA Color xb4", 12, 26, 9, 0, i) == 1 && iCustom(NULL, PERIOD_CURRENT, "OsMA Color xb4", 12, 26, 9, 0, i) != EMPTY_VALUE //OsMA Color xb4 is not equal to fixed value
      )
        {
         Buffer1[i] = Low[i]; //Set indicator value at Candlestick Low
        }
      else
        {
         Buffer1[i] = EMPTY_VALUE;
        }
      //Indicator Buffer 2
      if(iCustom(NULL, PERIOD_CURRENT, "OsMA Color xb4", 12, 26, 9, 2, i) == 1 && iCustom(NULL, PERIOD_CURRENT, "OsMA Color xb4", 12, 26, 9, 2, i) != EMPTY_VALUE //OsMA Color xb4 is not equal to fixed value
      )
        {
         Buffer2[i] = High[i]; //Set indicator value at Candlestick High
        }
      else
        {
         Buffer2[i] = EMPTY_VALUE;
        }
      //Indicator Buffer 3
      if(iCustom(NULL, PERIOD_CURRENT, "OsMA Color xb4", 12, 26, 9, 1, i) == 1 && iCustom(NULL, PERIOD_CURRENT, "OsMA Color xb4", 12, 26, 9, 1, i) != EMPTY_VALUE //OsMA Color xb4 is not equal to fixed value
      )
        {
         Buffer3[i] = Low[i]; //Set indicator value at Candlestick Low
        }
      else
        {
         Buffer3[i] = EMPTY_VALUE;
        }
      //Indicator Buffer 4
      if(iCustom(NULL, PERIOD_CURRENT, "OsMA Color xb4", 12, 26, 9, 3, i) == 1 && iCustom(NULL, PERIOD_CURRENT, "OsMA Color xb4", 12, 26, 9, 3, i) != EMPTY_VALUE //OsMA Color xb4 is not equal to fixed value
      )
        {
         Buffer4[i] = High[i]; //Set indicator value at Candlestick High
        }
      else
        {
         Buffer4[i] = EMPTY_VALUE;
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+

The second one I did is for osma color (mtf + alerts)

//+------------------------------------------------------------------+
//|                                              Indicator: OSMA.mq4 |
//|                                       Created with EABuilder.com |
//|                                        https://www.eabuilder.com |
//+------------------------------------------------------------------+
#property copyright "Created with EABuilder.com"
#property link      "https://www.eabuilder.com"
#property version   "1.00"
#property description ""
#property tester_indicator "osma color (mtf + alerts)"

#include <stdlib.mqh>
#include <stderror.mqh>

//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 4

#property indicator_type1 DRAW_ARROW
#property indicator_width1 1
#property indicator_color1 0xFFAA00
#property indicator_label1 "Buy"

#property indicator_type2 DRAW_ARROW
#property indicator_width2 1
#property indicator_color2 0x0000FF
#property indicator_label2 "Sell"

#property indicator_type3 DRAW_ARROW
#property indicator_width3 1
#property indicator_color3 0xFFAA00
#property indicator_label3 "Buy"

#property indicator_type4 DRAW_ARROW
#property indicator_width4 1
#property indicator_color4 0x0000FF
#property indicator_label4 "Sell"

//--- indicator buffers
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];

double myPoint; //initialized in OnInit

void myAlert(string type, string message)
  {
   if(type == "print")
      Print(message);
   else if(type == "error")
     {
      Print(type+" | OSMA @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
     }
   else if(type == "order")
     {
     }
   else if(type == "modify")
     {
     }
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {   
   IndicatorBuffers(4);
   SetIndexBuffer(0, Buffer1);
   SetIndexEmptyValue(0, EMPTY_VALUE);
   SetIndexArrow(0, 241);
   SetIndexBuffer(1, Buffer2);
   SetIndexEmptyValue(1, EMPTY_VALUE);
   SetIndexArrow(1, 242);
   SetIndexBuffer(2, Buffer3);
   SetIndexEmptyValue(2, EMPTY_VALUE);
   SetIndexArrow(2, 241);
   SetIndexBuffer(3, Buffer4);
   SetIndexEmptyValue(3, EMPTY_VALUE);
   SetIndexArrow(3, 242);
   //initialize myPoint
   myPoint = Point();
   if(Digits() == 5 || Digits() == 3)
     {
      myPoint *= 10;
     }
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| 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[])
  {
   int limit = rates_total - prev_calculated;
   //--- counting from 0 to rates_total
   ArraySetAsSeries(Buffer1, true);
   ArraySetAsSeries(Buffer2, true);
   ArraySetAsSeries(Buffer3, true);
   ArraySetAsSeries(Buffer4, true);
   //--- initial zero
   if(prev_calculated < 1)
     {
      ArrayInitialize(Buffer1, EMPTY_VALUE);
      ArrayInitialize(Buffer2, EMPTY_VALUE);
      ArrayInitialize(Buffer3, EMPTY_VALUE);
      ArrayInitialize(Buffer4, EMPTY_VALUE);
     }
   else
      limit++;
   
   //--- main loop
   for(int i = limit-1; i >= 0; i--)
     {
      if (i >= MathMin(5000-1, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" or slow calculation   
      
      //Indicator Buffer 1
      if(iCustom(NULL, PERIOD_CURRENT, "osma color (mtf + alerts)", PERIOD_CURRENT, 12, 4, 26, 4, 9, 1, true, false, true, false, false, false, "alert2.wav", true, 0, i) != 0 && iCustom(NULL, PERIOD_CURRENT, "osma color (mtf + alerts)", PERIOD_CURRENT, 12, 4, 26, 4, 9, 1, true, false, true, false, false, false, "alert2.wav", true, 0, i) != EMPTY_VALUE //osma color (mtf + alerts) is not equal to fixed value
      )
        {
         Buffer1[i] = Low[i]; //Set indicator value at Candlestick Low
        }
      else
        {
         Buffer1[i] = EMPTY_VALUE;
        }
      //Indicator Buffer 2
      if(iCustom(NULL, PERIOD_CURRENT, "osma color (mtf + alerts)", PERIOD_CURRENT, 12, 4, 26, 4, 9, 1, true, false, true, false, false, false, "alert2.wav", true, 2, i) != 0 && iCustom(NULL, PERIOD_CURRENT, "osma color (mtf + alerts)", PERIOD_CURRENT, 12, 4, 26, 4, 9, 1, true, false, true, false, false, false, "alert2.wav", true, 2, i) != EMPTY_VALUE //osma color (mtf + alerts) is not equal to fixed value
      )
        {
         Buffer2[i] = High[i]; //Set indicator value at Candlestick High
        }
      else
        {
         Buffer2[i] = EMPTY_VALUE;
        }
      //Indicator Buffer 3
      if(iCustom(NULL, PERIOD_CURRENT, "osma color (mtf + alerts)", PERIOD_CURRENT, 12, 4, 26, 4, 9, 1, true, false, true, false, false, false, "alert2.wav", true, 1, i) != 0 && iCustom(NULL, PERIOD_CURRENT, "osma color (mtf + alerts)", PERIOD_CURRENT, 12, 4, 26, 4, 9, 1, true, false, true, false, false, false, "alert2.wav", true, 1, i) != EMPTY_VALUE //osma color (mtf + alerts) is not equal to fixed value
      )
        {
         Buffer3[i] = Low[i]; //Set indicator value at Candlestick Low
        }
      else
        {
         Buffer3[i] = EMPTY_VALUE;
        }
      //Indicator Buffer 4
      if(iCustom(NULL, PERIOD_CURRENT, "osma color (mtf + alerts)", PERIOD_CURRENT, 12, 4, 26, 4, 9, 1, true, false, true, false, false, false, "alert2.wav", true, 3, i) != 0 && iCustom(NULL, PERIOD_CURRENT, "osma color (mtf + alerts)", PERIOD_CURRENT, 12, 4, 26, 4, 9, 1, true, false, true, false, false, false, "alert2.wav", true, 3, i) != EMPTY_VALUE //osma color (mtf + alerts) is not equal to fixed value
      )
        {
         Buffer4[i] = High[i]; //Set indicator value at Candlestick High
        }
      else
        {
         Buffer4[i] = EMPTY_VALUE;
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+


Откликнулись

1
Разработчик 1
Оценка
(878)
Проекты
1390
67%
Арбитраж
117
32% / 42%
Просрочено
215
15%
Свободен
2
Разработчик 2
Оценка
(1117)
Проекты
1419
62%
Арбитраж
21
57% / 10%
Просрочено
43
3%
Свободен
3
Разработчик 3
Оценка
(7)
Проекты
17
41%
Арбитраж
3
0% / 100%
Просрочено
3
18%
Свободен
4
Разработчик 4
Оценка
(52)
Проекты
96
24%
Арбитраж
9
22% / 22%
Просрочено
12
13%
Работает
5
Разработчик 5
Оценка
(125)
Проекты
157
36%
Арбитраж
4
25% / 50%
Просрочено
13
8%
Работает
6
Разработчик 6
Оценка
(251)
Проекты
399
54%
Арбитраж
9
67% / 22%
Просрочено
36
9%
Свободен
Похожие заказы
Looking for EA's that can pass prop firms Only message me if you are serious thank you https://t.me/ marketkillerrr Message me on tele^Gram thanks Or you can msg me here it doesn't matter please do not waste my time... Price is negotiable i can pay up to 30,000$
An expert is required based on a specific index of the market The expert does the following Opens 0.01 micro lot per $1000 A buy trade is opened if the indicator signal is buy and can be entered against the signal A sell trade is opened if the indicator signal is sell and can be entered against the signal A goal defined by the number of points Stop loss is limited to the number of pips Profit tracking Stop loss
Hello .I have existing Tradingview strategy that I will like to automate to Mt4 EA based on my specification . I need an expert in the field that have experience in both tradingview and MT4
I want a developer who is an expert in deriv https://youtu.be/2euVfXYkrmE?feature=shared&nbsp;DIGIT MATCH bot I want a profitable robot I want a developer to do this task for me I want a developer who has experience in this
I Want someone who can Create a Mobile EA Automatic Trading Bot system with My kind of trading style (BTMM) Beat The makert maker,which includes a bit of mixed strategies such as Smart money concept(SMC) and Market Maker Cycle(MMC),The Bot must be Able to Take short and long term trades only after Rejections/confirmations not when it's going against(to minimize/avoid blowing small Accounts),it must place Stoploss and
Hi, Coding Skills Required: Experience in coding trading robots for MT5. Ability to implement increasing coefficients for the distance between orders and lot size 1. Project Objective: Develop an automated trading robot for MetaTrader 5 (MT5) as per the specified trading strategy. 2. Trading Strategy: The robot must execute a strategy that includes the following elements: Opening initial orders. Placing pending
my style of trade is to manually scale position size up & down from 1 to 100+ micros as the market moves, so the indicator I need has nothing to do with scaling in & out of the position, but I need an indicator that dynamically trails the position P&L, And has a trailing daily max loss that will reject new order entry if triggered. Example is setting a $350 Position auto stop-loss so as I scale in & out of contracts
Hi, i have a simple strategy which has 4 different types of entries based on parabolic sar and moving average that I would like to be coded into an EA. I would also like some inputs for it like news filter, time start and time end, risk % and so on. Will discuss further upon application
I want a developer who can develop an EA that enter a trade that is opposite of what 15m Candles does(example: if the 15m Candlestick is buying you put selling order and when is selling it place buying orders) 10 Seconds before 3 Bulls Major News and Nasdaq Open and once it has triggered it enter 1 trade whenever each position has moved 10 points and it does so continually until it has entered 10 position and
Hey there, I need to convert an indicator from ninja to mt4 I will attach the ninjatrader indicator script to be converted into mt4 If you can do this kindly bid and let's discuss about the project Thanks

Информация о проекте

Бюджет
30+ USD
Исполнителю
27 USD