Проблема глобальных файлов терминала

 

Привет, народ

У меня возникла проблема, из-за которой я скоро распрощаюсь с программированием на MT. Проблема заключается в попытке установить глобальные значения терминала. То, что я делаю, выглядит примерно так:

BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);

Набор продолжает выдавать мне ошибку 4051. Первый параметр - строка, второй - двойка, как и должно быть. Почему он продолжает утверждать, что тип параметра недопустим, мне не понятно. Оба параметра имеют правильный тип. Я не понимаю, почему он выдает ошибку, когда параметры верны. По профессии я разработчик программного обеспечения на заказ и собирался добавить приложения для MT к своим предложениям. Если платформа ненадежна, я не буду к ней прикасаться. Что-то, что не работает, только выставит меня в плохом свете и сорвет мой бизнес. Если у кого-то есть идеи, я буду очень признателен.

Большое спасибо,

Проф

 
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);

Удалите объявление двойки. GV уже является двойным, поэтому нет необходимости объявлять его снова.



BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";

Этот код также проблематичен. Кто-нибудь другой укажет вам на него, если у него будет время.

 
ProfessorMetal:

Привет, народ

У меня возникла проблема, из-за которой я скоро распрощаюсь с программированием на MT. Проблема заключается в попытке установить глобальные значения терминала. То, что я делаю, выглядит примерно так:

Набор продолжает выдавать мне ошибку 4051. Первый параметр - строка, второй - двойка, как и должно быть. Почему он продолжает утверждать, что тип параметра недопустим, мне не понятно. Оба параметра имеют правильный тип. Я не понимаю, почему он выдает ошибку, когда параметры верны. По профессии я разработчик программного обеспечения на заказ и собирался добавить приложения для MT к своим предложениям. Если платформа ненадежна, я не буду к ней прикасаться. Что-то, что не работает, только выставит меня в плохом свете и сорвет мой бизнес. Если у кого-то есть идеи, я буду очень признателен.

Большое спасибо,

Проф

У меня не возникает проблем с этим кодом:

string BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);     
Какую сборку вы используете? Как воспроизвести вашу проблему?
 
Я думаю, что это более старая сборка.
 

Двойного слепка изначально не было. Я добавил его из-за ошибки. Второй параметр должен быть двойным. Мой опыт - C++/C#, и я ожидал, что простого ввода аргумента в виде 1.0 будет достаточно. Я добавил приведение, потому что вызов не удался, и я не был уверен, что это какая-то идиосинкразия MQL4. Я уже видел, что MQL4 не всегда играет по ожидаемым правилам. Что касается присвоения строки, у меня есть другой индикатор, который я написал, который следует тому же формату и прекрасно работает. Я не вижу там ничего проблематичного. Symbol() возвращает строку, конкатенация выполняется со строкой, что вполне приемлемо, и переменная, которой присваивается выражение, также является строкой. Единственное, что я вижу, что может быть проблемой, это конкатенация символа пары со строкой, которая совпадает с именем GV. Это не должно иметь значения, потому что "готовая" строка не совпадает с именем GV. Возможно, проблема в этом. Если это так, почему бы просто не сказать об этом?

В любом случае, спасибо за ответ

Проф

 

Вообще-то MetaQuotes говорила, что в MQL4/5 не стоит ожидать стиля и правил кодирования C++/C#.


Кстати, вы не ответили на вопрос модератора.

 

Интересно, ребята. Я использую сборку 646. Не думаю, что проблема в этом. Кажется, я только что догадался. Это я устал и туплю. Имена GV задаются в методе, который я должен был вызвать из OnStart() и не вызвал. ДУХ! Отшлепайте этого тупого американца и скажите ему, чтобы он шел спать и выспался, прежде чем пытаться кодить дальше. Я не спал около 36 часов. Вы, ребята, определенно помогли мне, вдохновив меня отступить и взглянуть на то, что я делаю. Большое спасибо и спокойной ночи, доброго дня - в зависимости от того, где вы находитесь :-)

Проф

 
Я ответил, Дейсмакро. Вы не дали моему ответу времени появиться. Как я уже сказал, это в принципе не проблема. Проблема была ошибкой новичка с моей стороны из-за усталости. BTW, я знаю, что не все вещи в MQL4/5 работают так же, как в C++/C#. Однако я помню, что видел заявление о том, что изменения в MQL4/5 направлены на то, чтобы сделать его более похожим на C++. Документация могла бы быть немного лучше организована и более тщательной. Справедливости ради, то же самое можно сказать и о Microsoft.
 
На самом деле все очень просто. Если вас научат или составят подробную документацию, то в какой-то момент ... ... ... ... ... ....
 

Если быть справедливым к MetaQuotes, то, что они делают, не является тривиальным. Я подозреваю, что самообучение всегда будет нормой. Честно говоря, это обычное дело для профессионального разработчика. Это в порядке вещей. Документация и взаимодействие с другими разработчиками - это, как правило, единственное "обучение", которое вы собираетесь получить. C'est la vie. :-)

Я все еще пытаюсь понять, как заставить работать новую отладку для MQL4. Я следовал тому, что, по моему мнению, должна была делать документация. Когда я попытался запустить отладчик, появилось окно H1 и диалог свойств индикатора, который я пытался отладить. Когда я выбрал ОК из диалога, отладчик закрылся, а окно исчезло. Ну что ж. Это тема для другой темы, я подозреваю.

 
ProfessorMetal:

Если быть справедливым к MetaQuotes, то, что они делают, не является тривиальным. Я подозреваю, что самообучение всегда будет нормой. Честно говоря, это обычное дело для профессионального разработчика. Это в порядке вещей. Документация и взаимодействие с другими разработчиками - это, как правило, единственное "обучение", которое вы собираетесь получить. C'est la vie. :-)

Я все еще пытаюсь понять, как заставить работать новую отладку для MQL4. Я следовал тому, что, по моему мнению, должна была делать документация. Когда я попытался запустить отладчик, появилось окно H1 и диалог свойств индикатора, который я пытался отладить. Когда я выбрал ОК из диалога, отладчик закрылся, а окно исчезло. Ну что ж. Это тема для другой темы, я подозреваю.


Это была долгоиграющая ошибка, которую можно было избежать, если выбрать другую панель диалога ввода, а не вводимые записи. Тогда следующий запуск был успешным. В версии 646 это, похоже, исправлено. К сожалению, на этом сайте не так много подобной информации. Обычно большинство проблем заканчиваются словами "сообщите в службу поддержки" без каких-либо дополнительных следов.