Скрипт трендовой линии по заданному углу

 

Не могу найти скрипт mql4.
Есть такой скрипт, чтобы перетащить его мышкой в нужную точку графика и именно с этой точки рисуется линия под выбранным углом (+45 или -45 градусов) ?

 
FXwin:

Не могу найти скрипт mql4.
Есть такой скрипт, чтобы перетащить его мышкой в нужную точку графика и именно с этой точки рисуется линия под выбранным углом (+45 или -45 градусов) ?


Понятие угла для трендовых линий весьма условно. Масштаб меняется очень легко как по горизонтали, так и по вертикали (автоматом). Да и единицы измерения по осям абсолютно не стыкуются. Так что задавать угол в градусах просто несерьёзно.

Для рисования трендовых линий существует стандартный сервис МТ4, читайте инструкцию.

Можно в принципе сделать и скрипт, но туда придётся вводить 4 числа руками (координаты точек начала/конца), так что сервис проще.

 
Igor Gerasimets:


Понятие угла для трендовых линий весьма условно. Масштаб меняется очень легко как по горизонтали, так и по вертикали (автоматом). Да и единицы измерения по осям абсолютно не стыкуются. Так что задавать угол в градусах просто несерьёзно.

Для рисования трендовых линий существует стандартный сервис МТ4, читайте инструкцию.

Можно в принципе сделать и скрипт, но туда придётся вводить 4 числа руками (координаты точек начала/конца), так что сервис проще.


Координаты руками вводить не надо. Есть ChartXOnDropped(), ChartYOnDropped(), ChartPriceOnDropped(), ChartTimeOnDropped(), вторую точку можно вычислить программно, как показано в справке. Надо ввести только угол.

Но проще использовать готовый функционал терминала, это да.

 
FXwin:   скрипт, чтобы перетащить его мышкой в нужную точку графика и именно с этой точки линия под углом +45 или -45 градусов
//   Линия по углу Скрипт взят из справки и сокращен

void OnStart() 
{                                                 // Точка вброса скрипта на график
   ObjectCreate(0,InpName,OBJ_TRENDBYANGLE,0, ChartTimeOnDropped(),ChartPriceOnDropped())
..............................

    45         -45

Файлы:
PROBA.mq4  3 kb
 
STARIJ:



Спасибо за помощь!!
Чуть подправил ваш скрипт, а то удаляется линия через 5 сек. и так же дополнительную линию запрещает устанавливать.

//+---------------------------------------------------+
//|        Copyright © 2017  sLineDegrees.mq4         |
//|        Трендовая линия по углу в градусах         |
//+---------------------------------------------------+
#property copyright "Copyright © 2017"
#property version     "1.0"
#property strict 
#property description "Скрипт строит Трендовую линию по углу в градусах" 
#property description "от точки вброса скрипта" 

#property script_show_inputs
#define OBJECT_NUM ""

extern int   LineDegrees = 45; 
extern int   SizeLine    = 2;
extern color ColorLines  = White;

//+-----------------------------------------------------------------------------------+ 
//| Script program start function                                                     | 
//+-----------------------------------------------------------------------------------+ 
void start() 
   {
   string ObjName=GetNextObjectName();
   ObjectCreate(ObjName,OBJ_TRENDBYANGLE,0,ChartTimeOnDropped(),ChartPriceOnDropped()); 
      ObjectSet(ObjName,OBJPROP_ANGLE,LineDegrees);  
      ObjectSet(ObjName,OBJPROP_COLOR,ColorLines); 
      ObjectSet(ObjName,OBJPROP_WIDTH,SizeLine); 
      ObjectSet(ObjName,OBJPROP_RAY_RIGHT,true);
   }
//+-----------------------------------------------------------------------------------+ 
//| Возвращает следующий индекс объекта                                               |
//+-----------------------------------------------------------------------------------+ 
string GetNextObjectName() {
    int rand_val = MathRand() + 1;
    string retval = OBJECT_NUM + string(rand_val);
    return(retval);
   }        
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<|
Файлы:
 
FXwin: Чуть подправил
Благодарю за сотрудничество. Продолжим?
 
STARIJ:
Благодарю за сотрудничество. Продолжим?


Ну, можно и продолжить))
Нашёл вот интересный скрипт, так же чуть подправил.
Он интересен тем, что если перетащить его к любой точке high или low, то линии будут автоматически искать вершины (одноразово).
Можно строить по тренду Magic1 например, далее строить более быстрые движения Magic2 и т.д. 

#property copyright   "Copyright © 2017"
#property version     "1.0"
#property description "Скрипт строит Трендовые линии автоматически по high low" 
#property description "от точки вброса скрипта" 

#property show_inputs

extern int   SizeLine   = 2;
extern color ColorLines = White;
//+------------------------------------------------------------------+
extern int   Magic      = 1;//                                       |
//Если Magic совпадает при новой точке вброса,                       |
//то линии с этим Magic перестроются,                                |
//а линии с несовпадающем Magic останутся на своём месте             |
//+------------------------------------------------------------------+
Файлы:
sTrendLine.mq4  11 kb
 

Был такой - Trend_Line. Вот индикаторы: линейная регрессия по методу наименьших квадратов МНК

  Регрессия

Файлы:
 
STARIJ:

Был такой - Trend_Line. Вот индикаторы: линейная регрессия по методу наименьших квадратов МНК


Вот для меня интересный индикатор, но он mql5 и не могу его преобразовать в mql4 
Индикатор строит трендовые линии по сигналу индикатора RSI, вершины берёт в зоне перекуплености и перепроданости.


Может кто-нибудь сможет преобразовать индикатор в mql4 ?
Файлы:
s_rind.mq5  18 kb
 
FXwin:   Вот для меня интересный индикатор, но он mql5 и не могу его преобразовать в mql4

преобразовать в mql4 очень просто. Сменил расширение на MQ4. Компилирую.
Ошибка 1 - implicit enum conversion.  Выделил ENUM_TIMEFRAMES и нажал ctrl-h заменить все на int   Заменено 5
Ошибка 2 - 'i' variable not defined  - странно, должен бы понимать ... Объявил в функции OnCalculate   int i;  и в двух циклах убрал int перед i
Ошибка 3 - IndicatorRelease function not defined - удалил всю функцию OnDeinit
Ошибка 4 - CopyBuffer function not defined - закомментировал ее в 3-х местах вместе с Print
Теперь начинается главное. Закомментировал строки:
//   int h_RSI;  // Хэндл индикатора RSI
//   h_RSI=iRSI(Trade_Symbol,Period_Trade,Period_RSI,PRICE_CLOSE);  //возвращаем хэндл индикатора RSI
//   if(h_RSI<0) Print("Некорректный хэндл RSI");
//          int h _rsi,     //хэндл индикатора RSI    -  в трех последних функцияхНашел и удалил все ,h_rsi   в 5 вызовах функций.    Ошибки отсутствуют
Удалил в 4 местах ArraySetAsSeries(m_rsi,true);  и предшествующее этим строкам описания массива m_rsi
Появилась 3-х кратная ошибка 'm_rsi' - undeclared identifier  -  ну это уже совсем просто!!!
Заменил m_rsi[...] на iRSI(Trade_Symbol,Period_Trade,Period_RSI,PRICE_CLOSE,...). Заработало. Сейчас прочищу и цвет поярче сделаю...

   if(Analyze_Bars>Bars(Trade_Symbol,Period_Trade)) //если в истории меньше баров для анализа,
     {
      Print("В истории меньше ",Analyze_Bars,"баров"); //чем задано в параметре bars, то нужно сказать об этом
      Bars_H=Bars(Trade_Symbol,Period_Trade);
      Print("Колличество баров в истории = ",Bars_H);
     }
   else
   {
      Bars_H = Analyze_Bars;
   }
//---
------------ во время прочистки заменил на --------------
   Bars_H=fmin(Analyze_Bars,Bars);

  Рост волатильности. Gold и DeepSkyBlue на черном фоне. Меньше часа ушло

падение волатильности - линии сходятся

А причем тут iRSI(...) ? Такую картинку по фракталам построить намного проще!!! Сначала напишу скрипт...

 
STARIJ:

преобразовать в mql4 очень просто. Сменил расширение на MQ4. Компилирую.
Ошибка 1 - implicit enum conversion.  Выделил ENUM_TIMEFRAMES и нажал ctrl-h заменить все на int   Заменено 5
Ошибка 2 - 'i' variable not defined  - странно, должен бы понимать ... Объявил в функции OnCalculate   int i;  и в двух циклах убрал int перед i
Ошибка 3 - IndicatorRelease function not defined - удалил всю функцию OnDeinit
Ошибка 4 - CopyBuffer function not defined - закомментировал ее в 3-х местах вместе с Print
Теперь начинается главное. Закомментировал строки:
//   int h_RSI;  // Хэндл индикатора RSI
//   h_RSI=iRSI(Trade_Symbol,Period_Trade,Period_RSI,PRICE_CLOSE);  //возвращаем хэндл индикатора RSI
//   if(h_RSI<0) Print("Некорректный хэндл RSI");
//          int h _rsi,     //хэндл индикатора RSI    -  в трех последних функцияхНашел и удалил все ,h_rsi   в 5 вызовах функций.    Ошибки отсутствуют
Удалил в 4 местах ArraySetAsSeries(m_rsi,true);  и предшествующее этим строкам описания массива m_rsi
Появилась 3-х кратная ошибка 'm_rsi' - undeclared identifier  -  ну это уже совсем просто!!!
Заменил m_rsi[...] на iRSI(Trade_Symbol,Period_Trade,Period_RSI,PRICE_CLOSE,...). Заработало. Сейчас прочищу и цвет поярче сделаю...

А причем тут iRSI(...) ? Такую картинку по фракталам построить намного проще!!! 

Да, всё получилось, спасибо))
Посмотрел в тестере, вроде бредовая версия!

Причина обращения: