Выбирает ордер для дальнейшей работы с ним. Возвращает true при успешном завершении функции. Возвращает false при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
bool OrderSelect( ulongticket// тикет ордера );
Параметры
ticket
[in] Тикет ордера.
Как этот тикет присваивается? Где его взять? Или как установить?
В справке же написано
OrderGetTicket
Возвращает тикет соответствующего ордера и автоматически выбирает ордер для дальнейшей работы с ним при помощи функций. Надо перебрать все ордера по индексу и получить тикет, если надо. Хотя эта функция и сама выбирает ордер. Тикет устанавливает брокер, изменить его нельзя.
ulongOrderGetTicket(
int index // номер в списке ордеров
);
Написал функцию, которая должна каждый день рисовать "не торговую временную зону" на графике. Но вот незадача - при запуске, модуль OnInit, рисует как положено, а при срабатывании в модуле OnTimer по неведомой мне причине, переменная date сохраняет значения которые были присвоены в модуле OnInit.
Вопрос: Почему?
intOnInit()
{
EventSetTimer(1);
MqlDateTime date;
TimeLocal(date);
offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной datereturn(INIT_SUCCEEDED);
}
...
void onTimer()
{
MqlDateTime date;
TimeLocal(date);
if (date.hour==9 && date.min==0 && date.sec==0) offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date
}
...
Написал функцию, которая должна каждый день рисовать "не торговую временную зону" на графике. Но вот незадача - при запуске, модуль OnInit, рисует как положено, а при срабатывании в модуле OnTimer по неведомой мне причине, переменная date сохраняет значения которые были присвоены в модуле OnInit.
Потому что А) Вижу визуально, "временная зона" рисуется не сегодня с 21:00 до 23:59, а с вчерашнего 21:00 до сегодняшнего 23:59
Б) Если открыть свойства графического объекта (закрашенный прямоугольник - "временная зона") , то видно, что первая переменная не изменилась, т.е. она имеет значение как вчерашняя 21:00
INGFX: Ну да OnTimer, ошибся когда сюда переписывал ... в самом коде все правильно
Вы бы проверили свой код. Надоело сшивать Ваши кусочки - поэтому Вот, проверочный код. В OnTimer подставьте своё локальное время и сравните принты при инициализации и в таймере:
//+------------------------------------------------------------------+//| TestEA.mq5 |//| Copyright 2015, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2015, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
EventSetTimer(1);
MqlDateTime date;
TimeLocal(date);
offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной datereturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnTimer()
{
MqlDateTime date;
TimeLocal(date);
if(date.hour==22 && date.min==33 && date.sec==00)
offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date
}
//+------------------------------------------------------------------+/*void offtimeCreate(MqlDateTime &struct_date)
{
string text="";
text=IntegerToString(struct_date.hour)+":"+
IntegerToString(struct_date.min)+":"+
IntegerToString(struct_date.sec);
Comment(text);
//ChartRedraw();
}*///+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+bool offtimeCreate(MqlDateTime &stm)
{
color clr=Black;
datetime tm1,tm2;
tm1 = StringToTime((string)stm.year+"."+(string)stm.mon+"."+(string)stm.day+" 21:00");
tm2 = StringToTime((string)stm.year+"."+(string)stm.mon+"."+(string)stm.day+" 23:59");
Print(tm1+" "+tm2);
//RectangleCreate(0,"offtime",0,tm1,0,tm2,200,clr); // chrart_id,object_name,sub_window,time1,price1,time2,price2,colorreturn(true);
}
//+------------------------------------------------------------------+
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Э нет. И он пропускает. Но меньше чем другие. Но пропускает
Это хорошо, спасибо.
Еще вопрос:
OrderSelect
Выбирает ордер для дальнейшей работы с ним. Возвращает true при успешном завершении функции. Возвращает false при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
bool OrderSelect(
ulong ticket // тикет ордера
);
Параметры
ticket
[in] Тикет ордера.
Как этот тикет присваивается? Где его взять? Или как установить?
OrderGetTicket
Возвращает тикет соответствующего ордера и автоматически выбирает ордер для дальнейшей работы с ним при помощи функций. Надо перебрать все ордера по индексу и получить тикет, если надо. Хотя эта функция и сама выбирает ордер. Тикет устанавливает брокер, изменить его нельзя.
Всем привет!
Написал функцию, которая должна каждый день рисовать "не торговую временную зону" на графике.
Но вот незадача - при запуске, модуль OnInit, рисует как положено, а при срабатывании в модуле OnTimer по неведомой мне причине, переменная date сохраняет значения которые были присвоены в модуле OnInit.
Вопрос: Почему?
Всем привет!
Написал функцию, которая должна каждый день рисовать "не торговую временную зону" на графике.
Но вот незадача - при запуске, модуль OnInit, рисует как положено, а при срабатывании в модуле OnTimer по неведомой мне причине, переменная date сохраняет значения которые были присвоены в модуле OnInit.
Вопрос: Почему?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Karputov Vladimir, 2016.01.09 20:51
С чего Вы взяли, что в таймере переменной date передаётся значение ранее определённое в OnInit()?
Нужно смотреть в вашу функцию, которая рисует зону.
Дополнено:
Правильно будет OnTimer, а не onTimer
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
INGFX, 2016.01.09 21:20
Потому что А) Вижу визуально, "временная зона" рисуется не сегодня с 21:00 до 23:59, а с вчерашнего 21:00 до сегодняшнего 23:59
Б) Если открыть свойства графического объекта (закрашенный прямоугольник - "временная зона") , то видно, что первая переменная не изменилась, т.е. она имеет значение как вчерашняя 21:00
Ну да OnTimer, ошибся когда сюда переписывал ... в самом коде все правильно
Вы бы проверили свой код. Надоело сшивать Ваши кусочки - поэтому Вот, проверочный код. В OnTimer подставьте своё локальное время и сравните принты при инициализации и в таймере:
Вы бы проверили свой код.
Владимир, спасибо за ваше терпение и помощь!
Действительно ошибся в коде ...
Впредь буду внимательнее.
Владимир, спасибо за ваше терпение и помощь!
Действительно ошибся в коде ...
Впредь буду внимательнее.
День добрый.
Подскажите как решить проблему. При попытке отправки файла функцией SendFTP() возникает ошибка 4014 - Системная функция не разрешена для вызова.
С настройками FTP все в порядке - отчеты и тестовый файл отправляются.
Заранее благодарен.