Trend_Angle.mq4

 

Нашёл индюка на задворках интернета. Не разбираюсь в кодах вообще ни как. Через короткий промежуток времени после нанесения его на терминал индикатор перестаёт работать. Что с ним не так ?

Файлы:
 
anim:

Нашёл индюка на задворках интернета. Не разбираюсь в кодах вообще ни как. Через короткий промежуток времени после нанесения его на терминал индикатор перестаёт работать. Что с ним не так ?

вот уже 12 минут работает. Через какой промежуток времени у Вас перестает работать и на каком таймфрейме? Что во вкладках Журнал и Эксперт?
 

22минуты работал. Из вкладки Эксперты:

2018.07.02 11:58:07.801 Trend_Angle EURUSD,M1: zero divide in 'Trend_Angle.mq4' (108,39)

2018.07.02 11:37:53.464 Trend_Angle EURUSD,M1: initialized

2018.07.02 11:37:52.614 Custom indicator Trend_Angle EURUSD,M1: loaded successfully

 
anim:

22минуты работал. Из вкладки Эксперты:

2018.07.02 11:58:07.801 Trend_Angle EURUSD,M1: zero divide in 'Trend_Angle.mq4' (108,39)

Ошибка деления на 0 и прекратил работу строка 108 поз 39    Angle=90-MathArctan((0.+x1-x2)/(0.+y2-y1))*180./Pi; Самое простое (а верно ли будет?)

if(y2>y1) Angle=90-MathArctan((0.+x1-x2)/(0.+y2-y1))*180./Pi;

 

Angle=90-MathArctan((0.01+x1-x2)/(0.01+y2-y1)*180./Pi

Может так?

 
anim:

Angle=90-MathArctan((0.01+x1-x2)/(0.01+y2-y1)*180./Pi

Может так?

Не самое лучшее решение. Сдаётся мне, функция ChartTimePriceToXY не выполняется, и соответственно, возникает этот косяк т.к. x и y из неё возвращаются. Проще сделать как-то так:

  if (ChartTimePriceToXY(0, 0, Time[10], 10 * price1 - 9 * price2, x1, y1) && ChartTimePriceToXY(0, 0, time2, price2, x2, y2)) {
    angle = 90 - MathArctan((0 + x1 - x2) / (0 + y2 - y1)) * 180 / Pi;
    angleStr = DoubleToString(angle, 2);
    if (ObjectFind(0, objName + "T") == -1) {
      ObjectCreate(0, objName + "T", OBJ_TEXT, 0, time2, price2);
    }
    else {
      if (ObjectGet(objName + "T", OBJPROP_TIME1) != time2)
        ObjectSet(objName + "T", OBJPROP_TIME1, time2);
      if (ObjectGet(objName + "T", OBJPROP_PRICE1) != price2)
        ObjectSet(objName + "T", OBJPROP_PRICE1, price2);
    }
    ObjectSetText(objName + "T", angleStr, Font_Size, NULL, TrendColor);
  }

Держи. Я переделал чутка. Привёл код в порядок. Но угол он показывает какой-то конченый, если честно.

Файлы:
 
Viktar Dzemikhau:

Не самое лучшее решение. Сдаётся мне, функция ChartTimePriceToXY не выполняется, и соответственно, возникает этот косяк т.к. x и y из неё возвращаются. Проще сделать как-то так:

Держи. Я переделал чутка. Привёл код в порядок. Но угол он показывает какой-то конченый, если честно.

Да, угол-загадка. Благодарю за улучшенную визуализацию угла и починку индюшки.