Искать все отложки как-то не подумал)
bool пишу, чтобы эдитор не выдавал предупреждения типа return value of "OrderSelect" should be checked
Смотрел урок по переносу на новые билды, но писать else Print"" (что-то такое) как-то не очень удобно.
Хотя, если эти предупреждения, думаю, можно игнорировать просто
Обучение языку MQL4 под MetaTrader 4📌
От xbms, 13 апреля, 2013 в Уголок Программиста
Предупреждения можно игнорировать. всё компилируется. неоднократно проверял.
Насколько понимаю, то предупреждения игнорировать нельзя, потому как при компиляции не произойдёт сборка файла ex4.
Предупреждения можно игнорировать. всё компилируется. неоднократно проверял.
Насколько понимаю, то предупреждения игнорировать нельзя, потому как при компиляции не произойдёт сборка файла ex4.
Еще хороший способ добавить #property strict чтобы потенциально "слабые" места найти
Ну значит мне тогда показалось, просто видимо из-за того, что была попытка внести изменения в чужой код без правки предупреждений, тогда компилятор не хотел собирать код. Видимо это как бы защита авторских прав, но при этом, если скопировать полностью код и внести его в новый проект, то ни каких проблем.
nixxer, а можно поподробней, куда и как его добавить, а так же что это даст в итоге?
Ещё спрашивал уже, но мне так ни кто и не подсказал, в учебнике описано как-то не однозначно. Как всё же правильно объявить глобальную переменную? Вот пример из учебника, я так понял она должна быть отделена строчками, ну по сути как пользовательская функция, при этом не важно вверху или внизу, главное за пределами всех функций. Правило присвоенного типа, такое же как и с обычными переменными, в зависимости от того что нам нужно. Можно ли их тоже объявлять через запятую если нужно несколько или каждая должна иметь свой блок?
//--------------------------------------------------------------------
int Tick; // Глобальная переменная
//--------------------------------------------------------------------
Изменено 12 сентября, 2014 пользователем chistaia-rodina
Да, сов. верно.
0ll, то есть я правильно понимаю, #property strict нужно прописать в самом начале, за пределами специальных функций и это позволит выявить при компиляции все возможные несоответствия, которые могут возникнуть в связи с последними изменениями в MQL4?
Да точно также как и с локальными, можно через запятую и с присвоением начальных значений и массивы - всё до кучи и всё работает. Отделять не нужно, главное за пределами функций (когда Вы спрашивали - думал про переменные уровня терминала, поэтому не писал).Правило присвоенного типа, такое же как и с обычными переменными, в зависимости от того что нам нужно. Можно ли их тоже объявлять через запятую если нужно несколько или каждая должна иметь свой блок?
Пример из моей проги:
float C, H1, L1, HF=0, LF=0, prcExt, Pw, kf_Acu, Count[];
Привет. Сегодня первый день изучаю "язык". Сергею - БОЛЬШОЕ Спасибо!!!
Писал "Martin" вслед за объяснениями, в конце получил 23!!!!! ошибки, проковырялся несколько часов и сдался. Прошу помощи у тех кто сам помнит как начинал)) в приложении картинка моего "блина". Спасибо.
Да конечно!!!, я чес говоря и не рассчитывал))
Дмитрий_2008 основная ошибка - невнимательность. Редактор не считает эквивалентными названия переменных, написанных на разных регистрах.
Поправил. Оставшиеся предупреждения можно игнорировать или исправить (получить или обработать возвращаемые функцией значения, например: bool res = OrderModify())
Юхуууу!!! Работает!!!))))
Спасибо!!!!! буду рад быть полезным.
Добрый день!
Можно узнать время закрытой сделки (OrderCloseTime), а как узнать дату?
А вы попробуйте вывести в Print или Alert TimeToString(OrderCloseTime()). Думаю вопросы отпадут.
Формат данных datetime включает в себя дату и время.
Спасибо
Всем привет! :-H
Передо мной такая задача: получить все значения с индикатора фракталов за предыдущий день. То есть советник должен знать ценовые значения всех максимумов и минимумов предыдущего дня, которые были отмечены индикатором фракталов. Индикатор беру не стандартный, wlxfractals называется, но думаю, это не суть, главное , понять принцип того, как эти фракталы искать и запоминать.
Или же можно находить экстремумы свечей, которые были отмечены индикатором, но для этого им, наверное, нужно присваивать какой-нибудь порядковый номер?
В индюке скорее всего 2 буфера - с миним. и макс., там как-раз значения экстремумов. Их нужно переписать в массив типа double или float. Чтоб подсказать оптимальное решение нужно знать что Вы дальше с этим планируете делать. Искать так:
- начало периода YstDay0 = iTime(NULL, PERIOD_D1, 1);
- конец периода YstDay1 = iTime(NULL, PERIOD_D1, 0);
- перебираешь бары на рабочем ТФ и проверяешь буфера индикатора
- если буфер имеет значение, то проверяешь дату текущего бара
- если попадает в рабочий период - пишем значение в массив (для этого ещё счетчик надо)
- всё
Кстати все свечи пронумерованы
ЦитатаЧтоб подсказать оптимальное решение нужно знать что Вы дальше с этим планируете делать.
Я хочу использовать эти значения в качестве уровней поддержки/сопротивления для следующего торгового дня, и в одном из условия открытия ордера проверять, находится ли цена в диапазоне такого уровня (диапазон +/- 5 пунктов, допустим, от значения цены на экстремуме свечи, которую индикатор отметил как фрактальную).
Цитатаперебираешь бары на рабочем ТФ и проверяешь буфера индикатора
не понимаю, как проверить буфер индикатора(
можно ли так получить значения low последних 30 баров? или надо по-другому начинать
for (int i =0, i{
double [ i ] = Low[ i ];
}
У фрактального индюка в буфере либо "0" либо цена фрактала. т.е. если не "0" то значение буфера в массив (как-то так). Могут быть 2 буфера для верха и низа.
не понимаю, как проверить буфер индикатора(
Вы массив опишите правильно (типа: double мой_массив[30]; ), потом мой_массив[ i ] = Low[ i ]; и будет работать. (только если Вам нужен лоу 0-бара)
можно ли так получить значения low последних 30 баров? или надо по-другому начинать
for (int i =0, i{
double [ i ] = Low[ i ];
}
Изменено 19 сентября, 2014 пользователем 0ll
В этом индикаторе два буфера : 0 и 1 - для нижних и для верхних фракталов, проблема в том, что я не знаю как записать буфер в массив и как проверить его значение, так как не совсем понимаю чем является буфер...
Буфер это тот-же массив, только он находится в памяти индюка, а мы хотим получить его значения в сове...
значения этого массива следует получать через iCustom (если индюк не стандартный МТ) перебирая их в цикле, типа:
- сначала находим диапазон рабочих баров СтартБар и СтопБар (вчерашний день)
double МИ0, МИ1, массив[100];
int и, м=0;
фор (и = СтартБар; и МИ0 = iCustom(..., и, ... , 0);
МИ1 = iCustom(..., и, ... , 1);
если (МИ0 > 0 ) { массив[м] = МИ0; м++; }
если (МИ1 > 0 ) { массив[м] = МИ1; м++; }
}
Можно обрезать хвост массива по значению м. (через ArrayResize)
Потом сортировка ArraySort(массив);
всё.
Ребят, подскажите как реализовать смещение по GMT, которое в дальнейшем во внешних параметрах задаётся.
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем