Ошибки, баги, вопросы - страница 2814

 
Valentin Denisov:
Есть signal thresholdopen и thresholdclose, по умолчанию они равны 10. С сигналов индикаторов приходят паттерны. Допустим 2 индикатора с паттернами 20 и 40. После расчёта этих паттернов получается 30 или 10. И согласно документации если поставить open 30, a close 10, то как только один из индикаторов переворачивается сделка должна автоматически закрыться. А этого не происходит. Сделки закрываются и открываются только когда оба индикатора переворачиваются, т.е. на - 30 и +30.

Никаких "допустим". Сформируйте в Мастере MQL5 советник. Прикрепите его к сообщению и только потом будет говорить. Пока у Вас не сложилось четкого понимания как работают советники на базе сигналов пользовательских индикаторов.

Кстати, Вы статью Мастер MQL5: Новая версия читали? Картинку из статьи

разобрали и поняли как это работает?

Мастер MQL5: Новая версия
Мастер MQL5: Новая версия
  • www.mql5.com
В терминал MetaTrader 5 продолжают вноситься улучшения, добавляется новый функционал. В очередном (439) билде MetaTrader 5 обновился и Мастер MQL5, который позволяет создавать советники с еще более гибкими торговыми правилами. В этой статье мы покажем новые возможности Мастера MQL5 и расскажем об изменениях в архитектуре экспертов, получаемых...
 
Vladimir Karputov:

Никаких "допустим". Сформируйте в Мастере MQL5 советник. Прикрепите его к сообщению и только потом будет говорить. Пока у Вас не сложилось четкого понимания как работают советники на базе сигналов пользовательских индикаторов.

Кстати, Вы статью Мастер MQL5: Новая версия читали? Картинку из статьи

разобрали и поняли как это работает?

В том то и дело что разобрался. Но не работает как надо. Приходится использовать костыли, хотел бы без них. 
Если задать open больше close, то сделка будет совершать когда согнал больше open и завершаться когда между open и close. Если close больше, то открываться позиция будет если сигнал больше open или close, а закрываться когда больше close. 
 
Valentin Denisov:
В том то и дело что разобрался. Но не работает как надо. Приходится использовать костыли, хотел бы без них. 
Если задать open больше close, то сделка будет совершать когда согнал больше open и завершаться когда между open и close. Если close больше, то открываться позиция будет если сигнал больше open или close, а закрываться когда больше close. 
Но это правило не работает. И я не понимаю почему 
 
Valentin Denisov:

"Костыли", "баг" - лексикон тех, кто плавает в теме и пытается выдать свои ошибки за ошибки терминала.

Пожалуйста, сформируйте в Мастере MQL5 советник. Прикрепите его к сообщению и только потом будет говорить.

 

Ошибка при выполнении:

class A {
public:
        A( int ) { Print( 1 ); }
        A( A&  ) { Print( 2 ); }
};
void OnStart()
{       
        int a = 5;
        {
                A a( a );         //(1)
        }
}

  • Результат   в MQL: 2
  • Ожидалось в MQL: 1

Фактически этот пример выполняется по правилам С++

void OnStart()
{
        int a = 5;
        {
                A a( a );         //(2)
        }
}

в то время как следующий пример работает в MQL по своим (отличным от С++) правилам

void OnStart()
{       
        int a = 5;
        {
                int a = a;         //(3)
                printf( "%d", a );
        }
}

  • Результат (3) в MQL: 5
  •                      в  С++: 0 (или случайное число)

Переменная считается объявленной или

  • с момента появления (*),        или
  • с момента завершения объявления (**)

В С++ единый (*) подход, а в MQL в случае (2) так (*), а в случае(3) так (**).  А в чем принципиальная разница между (2) и (3)?

В этом и заключается вопрос почему в MQL в одном случае переменная считается объявленной с момента появления, а в другом - с момента завершения объявления? 

 

Ошибка при компиляции:

#import "z.ex5"
#import
#define MACRO1( x )    (x) //(*)
#define MACRO2( x )    MACRO1(x)
int f( int z )
{
        return MACRO2( z ); //Error: '()' - operand expected
}

а так:

#define MACRO1( x )    x  //(**)

нормально. А какая разница между (*) и (**)?

 
Fast235:

не получается загружать историю в пустой терминал или в ранее не использованный символ

запускаю на М1, все загружается, на H1 грузится ~720 баров и все, индикатор требует гораздо меньше для работы, но загрузка дальнейших баров прекращается и индикатор не отрисовывается правильно (если задать проверку на наличие примерно баров на 900, то вообще работа индикатора прекращается),

.....

прикрутил скрипт из справки https://www.mql5.com/ru/docs/series/timeseries_access, долго не хотел его использовать из-за громоздкости. Закинул в инклудник, добавил пару строк и все отлично работает,

скрипт грамотно сделан и легко интегрируется в робота, в мультивалютнике + мультитаймфреймы просто необходим! Т.к. незагрузка и зависание не зависит от рабочих индикаторов,

тоже самое можно получить даже на стандартном MA, но из-за его особенности и т.д. многие не заметят и просто сменят график или период, и потом он дозагрузится..

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
Добрый день !  МТ5 на Android 4.4 перестал обновляться. Невозможно даже открыть приложение. Если кто сталкивался , буду благодарен за помощь. 
Спасибо! 
 
fxsaber:

Их можно получить через Expert.mqh в OnTesterInit, т.к. советник запустится во фрейм-режиме для установки параметров.

В результате вызова EXPERT::Parameters почему-то все параметры имеют тип string. Это баг или ограничение?

 
Stanislav Korotky:

В результате вызова EXPERT::Parameters почему-то все параметры имеют тип string. Это баг или ограничение?

Лучше примером.