Ошибки, баги, вопросы - страница 1143
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Откуда в Youtube HTTPS? Вот обычный код ролика - http://youtu.be/KG0PIVuJ2kU
Всё бывает! Перейдите по ссылке.
сегодня один вопрос и он у многих какого брокера выбрать тобы подписмка работала ? например джон паул 77 ?
Тут есть несколько вариантов:
1) Параметры индикаторов меняются во времени по каким-то критериям (условиям). Поэтому нет необходимости пересоздавать хендлы на каждом тике. Проверять условие и если оно выполнено - пересоздавать.
Допустим условием является наступление события "новый бар" на минутном таймфрейме. Примеров определений события "новый бар" много - поищите на сайте. Мне больше всего нравиться вот этот вариант.
2) Если всё же надо на каждом тике - дожидаться окончания проверки CopyBuffer() в цикле (используя sleep()). Но, скорее всего, тики будут пропускаться. Как вариант - считать индюки не на всю историю, а на последнюю пару сотен баров (лезть в код стандартных индюков и править код) - будет пропускать меньше тиков.
В общем добавил проверку и обнаружил следующее.
Считывание производил в начале каждого нового 15М бара.
На живом рынке все работает на ура без ошибок. В тестере в самом начале и далее сразу после изменения входных параметров индикаторов появляется однократно! такая ошибка "Ошибка при копировании из индикатора iBands! (№4806)". То есть хэндл получаю без проблем но индикатор ещё не создался и копирование по этому хэндлу не проходит. Почему тестер себя так ведет не понятно.
Нужен Internet Explorer как минимум 8 версии, чтобы интерфейс маркета заработал. На IE6 уже никуда не уедешь.
О необходимости IE8 пишется при старте терминала в логах.
Вы исходите из того, что пользователь при запуске приложения проверяет логи. К сожалению, данный вид пользователя относится к вымирающим и в повседневной жизни практически уже не встречается.
Возможно ли сделать так, чтобы инсталлер MT4/5 проверял версию интернет эксплорера, и если она меньше 8й - предлагал её обновить?
На живом рынке все работает на ура без ошибок. ... То есть хэндл получаю без проблем но индикатор ещё не создался и копирование по этому хэндлу не проходит. Почему тестер себя так ведет не понятно.
На живом рынке тоже встречается, если в индикаторах используются "тяжелые" расчеты. Разница между тестером и живым рынком, в данном случае, проявляется во времени, прошедшим между созданием индикатора и обращением к его буферу.
Это легко проверить. Добавьте глобальную переменную
После получения хендла индикатора добавьтеstart=GetTickCount();
А после получения значений из буфера индикатора добавьте
Доброго времени суток. Озаботился проверкой разрешенности торговли. Получил довольно-таки странные результаты. В чем ошибка не понял. Исполнение происходило на демо-счете Alpari.
Скрипт:
void OnStart()
{
MqlDateTime str_dt;
TimeTradeServer(str_dt);
for (int i=0; i<10; i++){
datetime session_start_time, session_expiration_time;
if(!SymbolInfoSessionTrade("EURUSD", (ENUM_DAY_OF_WEEK)str_dt.day_of_week, i, session_start_time, session_expiration_time)) break;
Print(" session_start_time = ",TimeToString(session_start_time,TIME_DATE|TIME_MINUTES));
Print(" session_expiration_time = ",TimeToString(session_expiration_time,TIME_DATE|TIME_MINUTES));
}
datetime symbol_start_time=(datetime)SymbolInfoInteger("EURUSD", SYMBOL_START_TIME);
Print(" symbol_start_time = ",TimeToString(symbol_start_time,TIME_DATE|TIME_MINUTES));
datetime symbol_exiration_time=(datetime)SymbolInfoInteger("EURUSD", SYMBOL_EXPIRATION_TIME);
Print(" symbol_exiration_time = ",TimeToString(symbol_exiration_time,TIME_DATE|TIME_MINUTES));
}
Результаты исполнения:
symbol_exiration_time = 1970.01.01 00:00
symbol_start_time = 1970.01.01 00:00
session_expiration_time = 1970.01.02 00:00
session_start_time = 1970.01.01 00:00
session_expiration_time = 1970.01.01 00:00
session_start_time = 1970.01.01 00:00
На живом рынке тоже встречается, если в индикаторах используются "тяжелые" расчеты. Разница между тестером и живым рынком, в данном случае, проявляется во времени, прошедшим между созданием индикатора и обращением к его буферу.
Это легко проверить. Добавьте глобальную переменную
После получения хендла индикатора добавьтеА после получения значений из буфера индикатора добавьте
Ммммммм а прикольно ! :))
Вот что получается в тестере :
KF 0 18:16:15.702 Core 1 Param1=160
QH 0 18:16:15.702 Core 1 Param2=11
KR 0 18:16:15.702 Core 1 StLot=0.01
LI 0 18:16:15.702 Core 1 2004.09.01 00:00:00 Ошибка при копировании из индикатора iBands! (покупка) (№4806)
QL 0 18:16:15.702 Core 1 2004.09.01 01:00:00 Время между созданием индикатора и первым обращением к его буферу 0 ms
CO 0 18:16:15.702 Core 1 2004.09.01 01:00:00 B_up_s=1.218321775887096 M_av_s=1.2176
GO 0 18:16:15.702 Core 1 2004.09.01 01:00:00 B_low_b=1.195841860476532 M_av_b=1.2176
JG 0 18:16:15.702 Core 1 2004.09.01 02:00:00 Время между созданием индикатора и первым обращением к его буферу 0 ms
EJ 0 18:16:15.702 Core 1 2004.09.01 02:00:00 B_up_s=1.218876391942192 M_av_s=1.2177
CQ 0 18:16:15.702 Core 1 2004.09.01 02:00:00 B_low_b=1.195850880785081 M_av_b=1.2177
То есть на первом баре не успевает. И далее в процессе работы также при изменении входных параметров появляется эта ошибка на одном баре а на следующем уже все в порядке.
А вот то что получается на рынке:
Мне эта ошибка в тестере не очень мешает но желательно чтобы её не было. Если ввести sleep то это наверное замедлит скорость оптимизации. Возможно имеется более изящное решение для таких случаев. В MT4 такой проблемы не возникает но он и работает по другому это понятно.