Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 76
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
проблему решил по сравнению цен
В данном контексте я веду к чему:
Исходя их этого - массивы всё же лучше иметь глобальные - для закрытых и открытых ордеров и позиций. Один раз на новом тике мы проходим по одному разу по необходимому количеству ордеров/позиций, заполняя ими два массива. А далее уже на этом же тике мы получаем с них все нужные нам данные. Причём у меня рассчитываются не только последний закрытый/открытый ордер/позиция и все их данные, но и ищутся все родительские и дочерние тикеты всех позиций при частичном закрытии. Соответственно, я в любой момент времени могу поглядеть от какого тикета произошла та или иная позиция если она не единожды закрывалась частично - всё это уже работает в одном классе, который работает в таймере. Ну и многие другие необходимые мне данные я имею при небольшом итоговом количестве циклов. Для тестера задаётся нужная глубина истории для массивов.
И т.д., и т.п. ...
Sorry. Ишо дополню (не в противовес, а как дополнение), что не теряются локальные массивы со static. То есть, если условия позволяют, то можно обходиться без объявления их на глобальном уровне.
Раньше стояли обычные Ask и Bid внутри цикла и всё работало отменно, сейчас потихоньку переписываю под пятёрку. Я к тому, что цена может измениться очень быстро, и получиться ситуация что уровень будет менее допустимого стоплевел, что приведёт к ошибке.
Я так понимаю, что эта шляпа "SymbolInfoTick" нужна для получения актуальных цен?
Так для получения актуальных Ask и Bid в mql4 по-любому надо было вызывать рефреш. И получается что по нагрузке вряд-ли что изменится по сравнению с вызовом SymbolInfoTick()
Только вот такое дополнение, для безошибочного получения актуальных цен, я пишу SymbolInfoTick() в такой цикл
while(!SymbolInfoTick(_Symbol, mqlTick));
Если с первого раза получим нормальные цены, то этот цикл не увеличит время выполнения. А если какой-то сбой то повтор лучше чем хрензнаетчто вместо актуальных цен.
Так для получения актуальных Ask и Bid в mql4 по-любому надо было вызывать рефреш. И получается что по нагрузке вряд-ли что изменится по сравнению с вызовом SymbolInfoTick()
Только вот такое дополнение, для безошибочного получения актуальных цен, я пишу SymbolInfoTick() в такой цикл
while(!SymbolInfoTick(_Symbol, mqlTick));
Если с первого раза получим нормальные цены, то этот цикл не увеличит время выполнения. А если какой-то сбой то повтор лучше чем хрензнаетчто вместо актуальных цен.
Ясно, а куда это ставить, во внутрь цикла, или до?
Так для получения актуальных Ask и Bid в mql4 по-любому надо было вызывать рефреш. И получается что по нагрузке вряд-ли что изменится по сравнению с вызовом SymbolInfoTick()
Только вот такое дополнение, для безошибочного получения актуальных цен, я пишу SymbolInfoTick() в такой цикл
while(!SymbolInfoTick(_Symbol, mqlTick));
Если с первого раза получим нормальные цены, то этот цикл не увеличит время выполнения. А если какой-то сбой то повтор лучше чем хрензнаетчто вместо актуальных цен.
А если вообще не получит? Как тормозишь цикл?
Да, по логике это может быть, например терминал потерял связь - причин полно для этого, у меня он теряет связь по 50 раз на день.
Как всё-же лучше получать актуальные цены, и при этом менее ресурсозатратно, напомню - для трала сетки.
Да, по логике это может быть, например терминал потерял связь - причин полно для этого, у меня он теряет связь по 50 раз на день.
Как всё-же лучше получать актуальные цены, и при этом менее ресурсозатратно, напомню - для трала сетки.
глянь страниц 10- назад, там есть неплохая схемка