Скопировать индикатор написанный на mql4 в Ninjatrader.

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

Здравствуйте, нужно сделать, индикатор для терминала Ninjatrader, такой как приложен mq4.

#property strict
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots   5
#property indicator_minimum 0
#property indicator_maximum 100

input int MAPeriod=200;//Price chanel period
input ENUM_MA_METHOD MAMethod=MODE_EMA;//MA Method
input ENUM_APPLIED_PRICE ApPrice=PRICE_CLOSE;//Applied price
input color clrLine=clrLime;//Color line

double ma[],up[],dn[],matrend[],line[];
string realVal="";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
    realVal=_Symbol;
   IndicatorShortName("P_C_O");
   SetIndexBuffer(0,line);
   SetIndexBuffer(1,ma);
   SetIndexBuffer(2,up);
   SetIndexBuffer(3,dn);
   SetIndexBuffer(4,matrend);

   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,clrLine);
   SetIndexStyle(1,DRAW_NONE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
   SetIndexStyle(4,DRAW_NONE);

   SetLevelValue(0,20);
   SetLevelValue(1,80);
   SetLevelValue(2,50);

   SetIndexLabel(0,realVal+" Price");
//---
   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;
   if(rates_total<=1){ return(0); }
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit=limit+2;

   for(int x=limit-1; x>=0; x--)
     {
      ma[x]=EMPTY_VALUE; up[x]=EMPTY_VALUE; dn[x]=EMPTY_VALUE; matrend[x]=EMPTY_VALUE;  line[x]=EMPTY_VALUE;
      double mal=iMA(realVal,_Period,MAPeriod,0,MAMethod,ApPrice,x);
      double ma1=iMA(realVal,_Period,1,0,MAMethod,ApPrice,x);

      mal=NormalizeDouble(mal,_Digits);
      ma[x]= mal;
      if(x>=rates_total-1)
        {
         matrend[x]=mal;
           }else{
         // not first
         int lwst1 = iLowest(realVal, _Period, MODE_LOW, MAPeriod, x);
         int hgst1 = iHighest(realVal, _Period, MODE_HIGH, MAPeriod, x);

         if(iHigh(realVal,_Period,hgst1)<iHigh(realVal,_Period,hgst1+1))
           {
            up[x]=up[x+1]; dn[x]=dn[x+1];
           }
         if(iLow(realVal,_Period,lwst1)>iLow(realVal,_Period,lwst1+1))
           {
            dn[x]=dn[x+1]; up[x]=up[x+1];
           }

         if(up[x]==EMPTY_VALUE)
           {
            up[x]=iHigh(realVal,_Period,hgst1);
           }
         if(dn[x]==EMPTY_VALUE)
           {
            dn[x]=iLow(realVal,_Period,lwst1);
           }
         // change up and dn 
         if(up[x]!=up[x+1] || dn[x]!=dn[x+1])
           {
            matrend[x]=mal;
              }else{
            matrend[x]=matrend[x+1];
           }
         line[x]=NormalizeDouble(100-((up[x]-ma1)*100/(up[x]-dn[x])),2);

        }

     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------


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

1
Разработчик 1
Оценка
(548)
Проекты
825
73%
Арбитраж
15
53% / 13%
Просрочено
193
23%
Работает
2
Разработчик 2
Оценка
(20)
Проекты
43
30%
Арбитраж
6
0% / 50%
Просрочено
17
40%
Свободен
3
Разработчик 3
Оценка
(4)
Проекты
5
40%
Арбитраж
1
0% / 100%
Просрочено
0
Свободен
Похожие заказы
Здравствуйте, ищу исполнителя, который поможет реализовать следующее: Нужно реализовать выдачу лицензионных ключей для программного обеспечения через оплату подписки в телеграмм боте. Как это должно выглядеть: Пользователь заходит в телеграмм бот, выбирает вариант подписки, после чего его перебрасывает на сайт Cryptomus, где пользователь производит оплату, после того, как оплата произведена, генератор ключей
Приобрету готовый продукт, стратегию на pine TradingView или уже переведенный на python , который имеет 1.5-2+ профит фактор. Желательно чтобы торговля осуществлялась и в длинную, и в короткую. Робот обязательно должен контролировать риски, соответственно иметь SL ( не динамический!) на каждую сделку и не иметь огромных просадок (не в эквити, ни на чистом балансе). Просадки MDD выше 30% при оптимальных настройках
1. Понимание экспоненциальной и линейной функций: - Экспоненциальная функция имеет вид: y = a * b^x, где a - начальное значение, b - основание экспоненты. - Линейная функция имеет вид: y = mx + b, где m - коэффициент наклона, b - свободный член. 2. Определение целевых значений: - Необходимо определить, к каким значениям на линейном графике должны соответствовать точки на экспоненциальном графике. 3. Решение
1) Необходимо найти решение, чтобы индикатор выдавал уведомление на одну свечу раньше оригинала индикатора на всех таймфреймах без опоздание по времени в самом начале открытие свечи, и чтобы не перерисовывался индикатор как у оригинала

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

Бюджет
30+ USD
Исполнителю
27 USD
Сроки выполнения
от 3 до 10 дн.