Ваши вопросы по языку MQL4

AlexeNP

Гуру форума
Ну я тестировал на М1 поэтому это не проблема основная, проблема в том, что не рисует он график, а тупо выводит сплошную линию.

Посмотреть вложение 374492

Код заменил на BarShift(NULL,0, iTime(NULL,0,1)) проблема осталась.
ну. тут проблема в твоих коэффициентах) я зарядил твои формулы в Maple - из пяти возможных вариантов только один получился нетривиальным...
 

Leva20

Новичок форума
Да вроде тип построения DRAW_ZIGZAG должен справляться с этой проблемой. В mql5 точно справляется...


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

Код:
Expand Collapse Copy
#property strict
#property indicator_chart_window
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
extern int B_1=10;                   //число анализируемых баров


double Buf_0[]; // Хай
double Buf_1[]; // Лоу
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
//--------------------------------------------------------------------

SetIndexBuffer(0,Buf_0); // Назначение массива буферу
SetIndexBuffer(1,Buf_1); // Назначение массива буферу
SetIndexStyle(0,DRAW_ZIGZAG,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_ZIGZAG,STYLE_SOLID,2);

//--------------------------------------------------------------------
return (INIT_SUCCEEDED); // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()

{

int i;
i=B_1;

while(i==0)
  {
 
  Buf_0[i]=EMPTY_VALUE;
  Buf_1[i]=EMPTY_VALUE;
  i++;
 
  if(i==7)
    {
    Buf_0[i]=High [i];
    Buf_1[i]=EMPTY_VALUE;
    }
 
  if(i==5)
    {
    Buf_0[i]=High [i];
    Buf_1[i]=Low [i];
    }
 
  if(i==3)
    {
    Buf_0[i]=EMPTY_VALUE;
    Buf_1[i]=Low [i];
    }
  Alert ("цонец - ",i);
  }


return (INIT_SUCCEEDED); // Выход из спец. ф-ии start()
}
 

AlanTrade

Интересующийся
Доброй ночи Господа.
Столкнулся с тем, что копировщик не может корректно работать, т.к. у различных брокеров одни и те же инструменты имеют различия в написании названий. Решал ли кто такую задачу?
 

AlexeNP

Гуру форума
Доброй ночи Господа.
Столкнулся с тем, что копировщик не может корректно работать, т.к. у различных брокеров одни и те же инструменты имеют различия в написании названий. Решал ли кто такую задачу?
вообще говоря, названия валют, определение валютных пар (какая валюта базовая, а какая валюта котировки) определяется по стандарту ISO 4217. Стоит ли связываться с брокером, который не соблюдает стандарты?
 

AlanTrade

Интересующийся
вообще говоря, названия валют, определение валютных пар (какая валюта базовая, а какая валюта котировки) определяется по стандарту ISO 4217. Стоит ли связываться с брокером, который не соблюдает стандарты?
Стандарт, к сожалению, не изучал, но, думаю, он допускает варианты. NBPFX, вроде, на не плохом счету. У них есть EURUSD, EURUSD.m, EURUSD.mm.
 

AlexeyVik

Программист mql4 mql5
Спасибо за подсказку. Не подскажете еще как это все правильно записать.
Пробный код ниже.

Код:
Expand Collapse Copy
#property strict
#property indicator_chart_window
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
extern int B_1=10;                   //число анализируемых баров


double Buf_0[]; // Хай
double Buf_1[]; // Лоу
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
//--------------------------------------------------------------------

SetIndexBuffer(0,Buf_0); // Назначение массива буферу
SetIndexBuffer(1,Buf_1); // Назначение массива буферу
SetIndexStyle(0,DRAW_ZIGZAG,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_ZIGZAG,STYLE_SOLID,2);

//--------------------------------------------------------------------
return (INIT_SUCCEEDED); // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()

{

int i;
i=B_1;

while(i==0)
  {

  Buf_0[i]=EMPTY_VALUE;
  Buf_1[i]=EMPTY_VALUE;
  i++;

  if(i==7)
    {
    Buf_0[i]=High [i];
    Buf_1[i]=EMPTY_VALUE;
    }

  if(i==5)
    {
    Buf_0[i]=High [i];
    Buf_1[i]=Low [i];
    }

  if(i==3)
    {
    Buf_0[i]=EMPTY_VALUE;
    Buf_1[i]=Low [i];
    }
  Alert ("цонец - ",i);
  }


return (INIT_SUCCEEDED); // Выход из спец. ф-ии start()
}
Сначала откажитесь от int init() и int start() и потом можно будет что-то обсуждать. Я не уверен, что с этими устаревшими функциями код может адекватно работать.
 

AlanTrade

Интересующийся
Спасибо AlexeNP за участие. Недоучил MQL. Вопрос по валютам решается функцией StringSubstr().
Но как быть с вариантами типа BRENTCash и XBRUSD?
 

AlexeNP

Гуру форума
Спасибо AlexeNP за участие. Недоучил MQL. Вопрос по валютам решается функцией StringSubstr().
Но как быть с вариантами типа BRENTCash и XBRUSD?
в таких ситуациях не проще ли будет сформировать список вручную...
SymbolName() - выведи список всех доступных пар
 

AlanTrade

Интересующийся
Можно, конечно, но накладно. Счетов и брокеров может быть много.
 

AlexeNP

Гуру форума
Можно, конечно, но накладно. Счетов и брокеров может быть много.
а простых решений тут не получится... вот даже навскидку - сравниваем пары один-в-один плюс некоторое количество символов...
берем первый символ из первой валютной пары, ищем такой же во второй... продолжаем сравнение по следующим символам, если они совпадают, то ОК
не лучше ли все-таки вручную такой анализ сделать?
 

AlanTrade

Интересующийся
Пока не знаю. Практика покажет. Попробую, увижу эффективность.
 

[email protected]

Прохожий
Здравствуйте! Подскажите, как дописать Алерт в код индикатора при отрисовке Фибо веера. Дописал сам что - то, пиликает не так, как надо.
Вот код индикатора:

Пример.png
 

Вложения

  • ЛИНЕЙКА.mq4
    ЛИНЕЙКА.mq4
    94,7 КБ · Просмотры: 23
  • АЛЕРТ.png
    АЛЕРТ.png
    17,4 КБ · Просмотры: 15

Who has viewed this thread (Total: 4) Посмотреть

Верх