Инжикатор для парного трейдинга

MQL5 指标

指定

Предлагаю переделать с mql4 на  mql5 индикатор. Текст ниже:

 

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue

#property indicator_width1 2

#property indicator_width2 1

#property indicator_minimum -1

#property indicator_maximum 1


#define TWO_SYMBOLS 2


#define MAX_POINTS 1000000


extern string Symbol1 = "EURUSD";

extern string Symbol2 = "GBPUSD";

extern int Depth = 288;

extern int Shift = 0;

extern double ExpKoef = 0.01;


string Symbols[TWO_SYMBOLS];

double BaseMatrix[TWO_SYMBOLS][MAX_POINTS], MOMatrix[TWO_SYMBOLS][MAX_POINTS];

double CvarMatrix[TWO_SYMBOLS][TWO_SYMBOLS];

double Means[TWO_SYMBOLS], SVector[TWO_SYMBOLS];

int Times[MAX_POINTS], Shifts[TWO_SYMBOLS];

int MatrixRows;

int CurrPos, CurrTime;

double Exp;


double Buffer[], Buffer2[];


datetime GetStartTime( datetime StartTime )

{

  datetime Tmp;

  int Pos;


  for (int i = 0; i < TWO_SYMBOLS; i++)

  {

    Pos = iBarShift(Symbols[i], Period(), StartTime);

    Tmp = iTime(Symbols[i], Period(), Pos);


    if (Tmp > StartTime)

      StartTime = Tmp;

  }


  return(StartTime);

}


double GetPrice( string Symb, int time )

{

  double Price;


  Price = iClose(Symb, Period(), iBarShift(Symb, Period(), time));


  return(Price);

}


int GetNextTime( int CurrTime )

{

  static int Pos[TWO_SYMBOLS];

  int i, MinTime, Tmp = -1;


  for (i = 0; i < TWO_SYMBOLS; i++)

  {

    Pos[i] = iBarShift(Symbols[i], Period(), CurrTime) - 1;


    if (Pos[i] >= 0)

      Tmp = i;

  }


  if (Tmp < 0)

    return(Time[0]);


  MinTime = iTime(Symbols[Tmp], Period(), Pos[Tmp]);


  i = Tmp - 1;


  while (i >= 0)

  {

    if (Pos[i] >= 0)

    {

      Tmp = iTime(Symbols[i], Period(), Pos[i]);


      if (Tmp < MinTime)

        MinTime = Tmp;

    }


    i--;

  }


  return(MinTime);

}


void GetBaseMatrix()

{

  int i, NextTime;


  NextTime = GetNextTime(CurrTime);


  while (NextTime < Time[0])

  {

    CurrTime = NextTime;


    for (i = 0; i < TWO_SYMBOLS; i++)

      BaseMatrix[i][MatrixRows + Shifts[i]] = MathLog(GetPrice(Symbols[i], CurrTime));


    Times[MatrixRows] = CurrTime;


    MatrixRows++;


    NextTime = GetNextTime(CurrTime);

  }


  return;

}


void GetMeans( int Pos, int Len)

{

  int i, j;

  double Sum;


  for (i = 0; i < TWO_SYMBOLS;, i++)

  {

    Sum = 0;


    for (j = Pos; j > Pos - Len; j--)

      Sum += BaseMatrix[i][j];


    Means[i] = Sum / Len;

  }


  return;

}


void GetMOMatrix( int Pos, int Len)

{

  int i, j;


  for (i = 0; i < TWO_SYMBOLS;, i++)

    for (j = Pos; j > Pos - Len; j--)

      MOMatrix[i][j] = BaseMatrix[i][j] - Means[i];


  return;

}


void GetCvarMatrix( int Pos, int Len )

{

  int i, j, k;

  double Cvar;


  GetMeans(Pos, Len);

  GetMOMatrix(Pos, Len);


  for (i = 0; i < TWO_SYMBOLS; i++)

  {

     Cvar = 0;


     for (k = Pos; k > Pos - Len; k--)

       Cvar += MOMatrix[i][k] * MOMatrix[i][k];


     CvarMatrix[i][i] = Cvar / Len;

  }


  Cvar = 0;


  for (k = Pos; k > Pos - Len; k--)

    Cvar += MOMatrix[0][k] * MOMatrix[1][k];


  Cvar /= Len;


  CvarMatrix[0][1] = Cvar;


  return;

}


bool RealSymbol( string Symb )

{

  return(MarketInfo(Symb, MODE_BID) != 0);

}



string iIF( bool Cond, string Str1, string Str2 )

{

  if (Cond)

    return(Str1);


  return(Str2);

}


void init()

{

  Symbols[0] = iIF(Shift < 0, Symbol2, Symbol1);

  Symbols[1] = iIF(Shift < 0, Symbol1, Symbol2);


  Shifts[0] = 0;

  Shifts[1] = MathAbs(Shift);


  for (int i = 0; i < TWO_SYMBOLS; i++)

    if (!RealSymbol(Symbols[i]))

      Symbols[i] = Symbol();


  IndicatorDigits(8);

  SetIndexStyle(0, DRAW_LINE, DRAW_LINE);

  SetIndexBuffer(0, Buffer);

  SetIndexBuffer(1, Buffer2);

  SetIndexLabel(0, "Correlation");

  SetIndexLabel(1, "Exponential (ExpKoef = " + DoubleToStr(ExpKoef, 3) + ")");

  IndicatorShortName("Correlation (" + Depth + " bars): " + Symbols[0] + "(t) && " + Symbols[1] + "(t - " + Shifts[1] + ")");


  CurrTime = GetStartTime(0);

  MatrixRows = 0;


  GetBaseMatrix();


  CurrPos = Depth + Shifts[1];


  GetCvarMatrix(CurrPos - 1, Depth);

  Exp = GetCorrelation();


  return;

}


void GetNextMeans( int Pos, int Len )

{

  int Pos2 = Pos - Len;


  for (int i = 0; i < TWO_SYMBOLS; i++)

  {

    SVector[i] = (BaseMatrix[i][Pos2] - BaseMatrix[i][Pos]) / Len;

    Means[i] -= SVector[i];

  }


  return;

}


void GetNextCvarMatrix2( int Pos, int Len )

{

  int i, j;

  int Pos2 = Pos - Len;

  double Tmp1[TWO_SYMBOLS], Tmp2[TWO_SYMBOLS], Tmp3[TWO_SYMBOLS];


  GetNextMeans(Pos, Len);


  for (i = 0; i < TWO_SYMBOLS; i++)

  {

    Tmp1[i] = SVector[i];

    Tmp2[i] = BaseMatrix[i][Pos] - Means[i];

    Tmp3[i] = BaseMatrix[i][Pos2] - Means[i];


    CvarMatrix[i][i] += Tmp1[i] * Tmp1[i] + (Tmp2[i] * Tmp2[i] - Tmp3[i] * Tmp3[i]) / Len;


    if (CvarMatrix[i][i] < 0)

      CvarMatrix[i][i] = 0;

  }


  CvarMatrix[0][1] += Tmp1[0] * Tmp1[1] + (Tmp2[0] * Tmp2[1] - Tmp3[0] * Tmp3[1]) / Len;


  return;

}


double GetCorrelation()

{

  double Res = 0;

  double Var = MathSqrt(CvarMatrix[0][0] * CvarMatrix[1][1]);


  if (Var != 0)

    Res = CvarMatrix[0][1] / Var;


  return(Res);

}


void start()

{

  static int PrevTime = 0;

  double Corr;

  int Pos;


  if (PrevTime == 0)

  {

    PrevTime = Time[0];


    while (CurrPos < MatrixRows)

    {

      GetNextCvarMatrix2(CurrPos, Depth);


      Corr = GetCorrelation();

      Exp = Corr * ExpKoef + Exp * (1 - ExpKoef);


      Pos = iBarShift(Symbol(), Period(), Times[CurrPos]);

      Buffer[Pos] = Corr;

      Buffer2[Pos] = Exp;


      CurrPos++;

    }

  }


  if (PrevTime != Time[0])

  {

    PrevTime = Time[0];


    GetBaseMatrix();


    while (CurrPos < MatrixRows)

    {

      GetCvarMatrix(CurrPos, Depth);


      Corr = GetCorrelation();

      Exp = Corr * ExpKoef + Exp * (1 - ExpKoef);


      Pos = iBarShift(Symbol(), Period(), Times[CurrPos]);

      Buffer[Pos] = Corr;

      Buffer2[Pos] = Exp;


      CurrPos++;

    }

  }


  return;

反馈

1
开发者 1
等级
(21)
项目
49
39%
仲裁
4
25% / 75%
逾期
10
20%
空闲
2
开发者 2
等级
(169)
项目
460
41%
仲裁
39
18% / 31%
逾期
193
42%
空闲
3
开发者 3
等级
(13)
项目
34
76%
仲裁
1
100% / 0%
逾期
6
18%
空闲
4
开发者 4
等级
(46)
项目
73
16%
仲裁
13
8% / 92%
逾期
37
51%
空闲
5
开发者 5
等级
(563)
项目
932
47%
仲裁
302
59% / 25%
逾期
124
13%
繁忙
6
开发者 6
等级
(1)
项目
2
50%
仲裁
1
0% / 0%
逾期
0
空闲
相似订单
Нужно доработать утилиту добавить новые функции, изменить интерфейс. Нужен человек имеющий опыт по связи терминала с Телеграм, по средствам Телеграм АПИ, нужно добавить 2 новые функции в утилиту. Подробнее в ТЗ, изменения нужно внести для мт4/5 версии
dify indicator MA_Cloud for mt4 and mt5, give source code with comments 1)Need to change alerts and arrows for cross price only true 2 MA without crossing (direction from small to big) 2)Fix the error when change to any timeframe for MA (disapeer) and for arrows (in history is very big on vertically out of see screenshot) 3)Add alerts for crossing of 2 MA (MA Small cross MA big) Arrows, Message, Sound - (True/False)
Изменить графический интерфейс утилиты, исправить расположение кнопок, изменить вид некоторых окон и добавить новые. Сохранить текущую адаптивность и работоспособность кнопок. Подробнее расскажу в ТЗ с наглядными скриншотами, что и где поменять. Правки нужно внести в МТ4 и МТ5 версии. Спасибо за ваши заявки, рассмотрю каждую
Мне нужен робот, который будет иметь следующие необходимые параметры: 1. робот должен работать на MT5 2. минимальный депозит $100 3. количество транзакций в день на депозит $100 с лотом 0,01 минимум 1000 4. макс прасат 15%
написать индикатор распознования флета. выявления флета из трёх частей проверки. в каждой части свой расчёт, по барам, по количеству поинтов, по ширине (высоте) баров, по минимальным значениям... когда все расчеты сошлись и не вышли из пропорций, тогда рисуется флет. Задание готово, отправлю подходящему кандидату. передача оплаты, когда индикатор будет работать без проблем, по всем параметрам расчетов. возможны не
был старый работоспособный скрипт на очень старом МТ4... есть необходимость переписать его на MQL5, чтобы проверить теоретическую работоспособность в современном мире описание вроде бы где-то сохранилось кто-нибудь сможет помочь с этим вопросом и за какие деньги

项目信息

预算
10- USD
截止日期
 3 天