Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2517

 

Но теперь возникает другой вопрос. После того, как я преобразую эти данные, то 1 и 3 число совпадают и в итоге получается вот это:


Код немного изменил. Подскажите(Если есть возможность, то продемонстрируйте пожалуйста код, как пример), как сделать точку 1 и 3 разные 

void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
  { 
  if(id==CHARTEVENT_CLICK){
  int sub_window;
  if(cl_1==0){ChartXYToTimePrice(0,(int)lparam,(int)dparam,sub_window,dt_1,price_1);cl_1=1;cl_2=1;}
  if(cl_2==0){ChartXYToTimePrice(0,(int)lparam,(int)dparam,sub_window,dt_2,price_2);cl_1=0;}
  Print(l + " " + y);
  cl_2=0;
  
  ObjectCreate(0,"Correcrion",OBJ_ELLIOTWAVE3,sub_window,dt_1,price_1,dt_2,price_2,dt_1,price_1);
  }
 
Sergei Gurov #:

Но теперь возникает другой вопрос. После того, как я преобразую эти данные, то 1 и 3 число совпадают и в итоге получается вот это:
Код немного изменил. Подскажите(Если есть возможность, то продемонстрируйте пожалуйста код, как пример), как сделать точку 1 и 3 разные 

Такой вариант. Количество точек задаётся в настройках

input int dot = 3;
int cl[];
//+------------------------------------------------------------------+
void OnInit()
  {
   ArrayResize(cl, dot);
   ZeroMemory(cl);
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
  {
   if(id == CHARTEVENT_CLICK)
     {
      for(int i = 0; i < dot; i++)
         if(cl[i] == 0)
           {
            cl[i] = (int)lparam;
            break;
           }

      if(cl[dot - 1] != 0)
        {
         ArrayPrint(cl);
         ZeroMemory(cl);
        }
     }
  }
//+------------------------------------------------------------------+
 
Aleksandr Slavskii #:

Такой вариант. Количество точек задаётся в настройках

Я попробую. Спасибо!

 
Aleksandr Slavskii #:

Такой вариант. Количество точек задаётся в настройках

Теперь отображается только последняя точка. Точки ранее не отображаются

 
Sergei Gurov #:

Теперь отображается только последняя точка. Точки ранее не отображаются

int click=0,dot=0;
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
  {
   datetime dt_1=0;
   double price_1=0;
   int sub_window=0;
   if(sparam=="Button_Wave3"&&ObjectGetInteger(0,"Button_Wave3",OBJPROP_STATE))
     {
      ObjectSetInteger(0,"Button_Wave3",OBJPROP_STATE,false);
      dot=3;
     }
   if(sparam=="Button_Wave5"&&ObjectGetInteger(0,"Button_Wave5",OBJPROP_STATE))
     {
      ObjectSetInteger(0,"Button_Wave5",OBJPROP_STATE,false);
      dot=5;
     }
   if(id==CHARTEVENT_CLICK&&dot>0)
     {
      if(click<dot)
        {
         ChartXYToTimePrice(0,(int)lparam,(int)dparam,sub_window,dt_1,price_1);
         ObjectCreate(0,"name"+IntegerToString(click),OBJ_ARROW,sub_window,dt_1,price_1);
         ObjectSetInteger(0,"name"+IntegerToString(click),OBJPROP_ARROWCODE,129+click);
         click+=1;
        }
      else {click=0; dot=0;}
     }
  }
//+------------------------------------------------------------------+
 
Sergei Gurov #:

Теперь отображается только последняя точка. Точки ранее не отображаются

Это не последняя точка, это икс координаты последних трёх точек.
Игрек координаты забыл добавить)
Впрочем, вариант Ростислава вам подойдёт лучше.
 
Tretyakov Rostyslav #:

Все отлично работает, спасибо! Другой вопрос, а как теперь отличить объекты? Ну условно мне нужно создать OBJ_ELLIOT3 и OBJ_TRIANGLE. У них одинаковое число точек(3). Как их различать при построении? 

 
Sergei Gurov #:

Все отлично работает, спасибо! Другой вопрос, а как теперь отличить объекты? Ну условно мне нужно создать OBJ_ELLIOT3 и OBJ_TRIANGLE. У них одинаковое число точек(3). Как их различать при построении? 

Правильно заданный вопрос содержит в себе половину ответа. 
 

Коллеги- всех с праздниками и с Новым годом! Успешных кодов и с первого раза!!!

Я уже в прошлый раз этот вопрос задавал тут - потом в терминале все линии спреда (она там одна) в индикаторе спреда на графике стало рисоваться...

прошло время - может квартал и вот опять не рисуется... помогите с оптимальным кодом...

в общем тут отображаю кривую как разность цен символов - первый - на график которого брошен индикатор и второй - который вычитается (котировка которого вычитается) из цены первого символа спреда - всего два символа спреда:


опять  перестал отображаться - ранее отображался... история по символам загружена.... может надо принудительно написать в коде загрузку истории???

чтобы на новых спредах кривая сразу рисовалась...

во вложении код.

спасибо за помощь.

вот к примеру загружаю на новый спред - не отображается...


на старом ранее загруженном тоже перестала отображаться.... я к тому что может что нибудь в код надо добавить чтобы линия (кривая) спреда сразу отображалась?

П.С. Вспомнил фишку прошлую на терминале от байбит - рисует - на демо от МQ - нет...


Файлы:
spreads.mq5  8 kb
 
Roman Shiredchenko #:

Коллеги- всех с праздниками и с Новым годом! Успешных кодов и с первого раза!!!

Я уже в прошлый раз этот вопрос задавал тут - потом в терминале все линии спреда (она там одна) в индикаторе спреда на графике стало рисоваться...

прошло время - может квартал и вот опять не рисуется... помогите с оптимальным кодом...

в общем тут отображаю кривую как разность цен символов - первый - на график которого брошен индикатор и второй - который вычитается (котировка которого вычитается) из цены первого символа спреда - всего два символа спреда:


опять  перестал отображаться - ранее отображался... история по символам загружена.... может надо принудительно написать в коде загрузку истории???

чтобы на новых спредах кривая сразу рисовалась...

во вложении код.

спасибо за помощь.

вот к примеру загружаю на новый спред - не отображается...


на старом ранее загруженном тоже перестала отображаться....

П.С. Вспомнил фишку прошлую на терминале от байбит - рисует - на демо от МQ - нет...


вы там парами что-ли ходите ? буквально вчера в другой ветке и другому товарищу отвечал:

используй iBarShift .. 

в вашем коде переменная corr явным образом источник ошибок и глюков. Я понимаю, что вы пытались что-то ускорить - но только ни к чему это. 

PS/ ещё неплохо добавить пересчёт по таймеру. (по сигналам "тик на втором инструменте, бар на втором инструменте")

PPS/ сложение/вычитание физ.величин допустимо только если одинаковы единицы измерения. Иначе вы таких граалей наоткрываете, что два года разбирать..