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

Ugar

Гуру форума
Начал изучение MQL по видео на старых билдах, а сейчас в новых МТ4 сменили редактор метаэдитор и понять не могу того чего и не знал, Подскажите если раньше в советнике предупреждений не было, то сейчас в новом билде сразу 20 предупреждений. Подскажите что это означает и как это все исправлять. Советник прикладываю....
Да там же кишит ими. Функции которые ничего не возвращают, неиспользуемые переменные, переменные объявленные дважды на разных уровнях.
 

sochinik

Местный житель
Да там же кишит ими. Функции которые ничего не возвращают, неиспользуемые переменные, переменные объявленные дважды на разных уровнях.

Да эта рабочая версия советника,( его ещё нужно довести до граля...) но в старых билдах он работал, без предупреждений, и резы были довольно приличные. Но я потерял связь с Павлом( программистом) и поэтому для доработки хочу разобраться с программированием, а сейчас разбираюсь с изменениями в новых билдах.так как изучаю MQL по видео на прежних билдах.
 

qqmber

Почетный гражданин
Да эта рабочая версия советника,( его ещё нужно довести до граля...) но в старых билдах он работал, без предупреждений, и резы были довольно приличные. Но я потерял связь с Павлом( программистом) и поэтому для доработки хочу разобраться с программированием, а сейчас разбираюсь с изменениями в новых билдах.так как изучаю MQL по видео на прежних билдах.
Предупреждение это еще не ошибка, компилятор сообщает о неудачном использовании какой-то конструкции, или о подозрительной операции.
В этом коде предупреждения в основном из-за того что многие переменные описаны и на глобальном уровне, и как локальные внутри функций. Это не запрещено, но так делать не стоит, путаница гарантирована.
Кроме того, если написано int xyz() {...}, то функция должна заканчивать выполнение через return целого числа. И наоборот, написано void TradeStop(), не надо пытаться возвращать 0.
 

sochinik

Местный житель
Начал изучение MQL по видео на старых билдах, а сейчас в новых МТ4 сменили редактор метаэдитор и понять не могу того чего и не знал, Подскажите если раньше в советнике предупреждений не было, то сейчас в новом билде сразу 20 предупреждений. Подскажите что это означает и как это все исправлять. Советник прикладываю....

Спасибо за отзыв на мой вопрос- кое в чём разобрался, но этот вопрос решить не смог.
Что означает строчка:

declaration of 'col' hides global declaration at line 87 2Sides_v5.0c4_nik_2 (2).mq4 1159 48


И как убрать можно это предупреждение.
 

DiZin

Местный знаток
Спасибо за отзыв на мой вопрос- кое в чём разобрался, но этот вопрос решить не смог.
Что означает строчка:

declaration of 'col' hides global declaration at line 87 2Sides_v5.0c4_nik_2 (2).mq4 1159 48


И как убрать можно это предупреждение.

Переименовать локальную переменную col, чтоб она не перекрывала глобальную с таким же именем
 

mobidik

-----
Уважаемые программисты, нужна Ваша помощь: есть индюк ZigT, нужно добавить к нему ф-цию по-барного автообновления, подскажите, как это реализовать? В индюке есть ф-ция WindowRedraw, но что-то никакой разницы от нее совсем нет .
 

Вложения

  • ZigT.mq4
    3,2 КБ · Просмотры: 24

_SERG_

Активный участник
Пацаны, стуканите Ренату, на метаквоте, что ArraySize() глючная на порядок.
А то они меня до 20 забанили, за "несознанку".
В массиве типа double, одна строка, а функция возвращет что 10.
МТ4 билд 610. Сам написать не могу, по вышеуказанной причине. Спасибо.
 

ansol

Местный знаток
Пацаны, стуканите Ренату, на метаквоте, что ArraySize() глючная на порядок.
А то они меня до 20 забанили, за "несознанку".
В массиве типа double, одна строка, а функция возвращет что 10.
МТ4 билд 610. Сам написать не могу, по вышеуказанной причине. Спасибо.
Надо несколько повнятнее объяснять, желательно, с примером.
В массиве типа double никаких строк нет: там элементы массива - это числа с плавающей запятой ;)
 

tommy27

Гуру форума
Пацаны, стуканите Ренату, на метаквоте, что ArraySize() глючная на порядок.
А то они меня до 20 забанили, за "несознанку".
В массиве типа double, одна строка, а функция возвращет что 10.
МТ4 билд 610. Сам написать не могу, по вышеуказанной причине. Спасибо.
Да ну их, оставляют то что им удобно, пусть сами себе помогают, да и 610 уже вроде как старьё, попробуй в новом 616, может уже поправили.

пс. к выходу билда 666]:-> думаю все косяки поправят.
 

Вложения

  • Захват-1.png
    Захват-1.png
    40,9 КБ · Просмотры: 23

AlexeyVik

Программист mql4 mql5
Пацаны, стуканите Ренату, на метаквоте, что ArraySize() глючная на порядок.
А то они меня до 20 забанили, за "несознанку".
В массиве типа double, одна строка, а функция возвращет что 10.
МТ4 билд 610. Сам написать не могу, по вышеуказанной причине. Спасибо.
Если ты объявил массив arr[10]; и не записал туда ничего, то ArraySize() вернёт тебе обязательно 10. Потому что массив объявлен для 10-ти элементов. Выходит что ты не правильно понял написанное в документации.
 

_SERG_

Активный участник
Если ты объявил массив arr[10]; и не записал туда ничего, то ArraySize() вернёт тебе обязательно 10. Потому что массив объявлен для 10-ти элементов. Выходит что ты не правильно понял написанное в документации.


Уточняю, массив arr [][10], двухмерный, на что я в начале не обратил внимания, но тем не менее в старой версии языка, ArraySize(arr); возвращала значение первого, как в справке написано, измерения массива.
ArrayResize(arr, 2); тоже возвращает значение с учётом второго измерения массива.
Трёхмерные массивы не проверял пока, но перспектива пресказуемая. :facepalm: О! Проверил, arr[][10][10] возвращает 100!

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

Пару строк для любопытных:

//+------------------------------------------------------------------+
//| Глюк_ArraySize.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| _http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
double arr[][10];
int Rec = 1;
string MSG = "";
int deinit(){
Sleep (5000);
Comment("");
return(0);
}
void OnStart(){
int TEST_AR = ArrayResize( arr, Rec );
MSG = DoubleToStr( TEST_AR, Digits ) + "\n";
MSG = MSG + DoubleToStr( ArraySize( arr ), Digits );
Comment ( MSG );
}
//+------------------------------------------------------------------+

P.S. AlexeyVik, я внимательно прочитал, и правильно понял. ПЕРВОЕ ИЗМЕРЕНИЕ, А НЕ ВЕСЬ МАССИВ.
 
Последнее редактирование модератором:

AlexeyVik

Программист mql4 mql5
P.S. AlexeyVik, я внимательно прочитал, и правильно понял. ПЕРВОЕ ИЗМЕРЕНИЕ, А НЕ ВЕСЬ МАССИВ.
Вот именно ВЕСЬ МАССИВ...
ArraySize
Возвращает количество элементов указанного массива.



Если массив arr[1][10] то он содержит 10 элементов...
А про первое измерение массива сказано в



ArrayResize
Устанавливает новый размер в первом измерении массива


И если в коде будет ArrayResize(arr, 3); то массив будет содержать уже 30 элементов.

Вот тебе справка по старому языку. Где написано про первое измерение?
 

Вложения

  • 00.png
    00.png
    25,2 КБ · Просмотры: 17
Последнее редактирование:

_SERG_

Активный участник
Вот именно ВЕСЬ МАССИВ...
ArraySize
Возвращает количество элементов указанного массива.



Если массив arr[1][10] то он содержит 10 элементов...
А про первое измерение массива сказано в



ArrayResize
Устанавливает новый размер в первом измерении массива


И если в коде будет ArrayResize(arr, 3); то массив будет содержать уже 30 элементов.

Вот тебе справка по старому языку. Где написано про первое измерение?

Т.е. теперь это выглядит гдето так: ArrayRange( arr, 0 );
Спасибо.
 

abuuuuuu

Местный знаток
как распознать в советнике свечу в заданном времени ?
 

Вложения

  • eurusdh1.png
    eurusdh1.png
    20,6 КБ · Просмотры: 25
Последнее редактирование:

Milord

Местный знаток
Да ну их, оставляют то что им удобно, пусть сами себе помогают, да и 610 уже вроде как старьё, попробуй в новом 616, может уже поправили.

пс. к выходу билда 666]:-> думаю все косяки поправят.
или к выходу 10000 билда))))):D
че вы хотите с тупых и наглых разрабов...помешались на деньгах и славе...банят всех кто повторил свой вопрос несколько раз, хотя сами же игнорят вопросы.. .:facepalm:
 
Верх