Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
#Расчеты заказов и обновление информации о счетах- Открыто
( Однажды я уже спрашивал - но мне все еще нужна помощь )
Я вызываю свои функции расчета по OnTick() или Start(), и они зависят от тиков символа графика.
И я начал искать, как мне сделать так, чтобы обновления расчетов моего советника не зависели от тиков и символов ( / Chart - Ticks, Symbols ).
Просто я пытаюсь сделать так, чтобы 'All Orders Calculations & Account Info's' обновлялисьсинхронно (/ в реальном времени) с 'Terminal > Trade'.
Пожалуйста, помогите мне, спасибо.
Заранее спасибо.
OnTimer()
https://www.mql5.com/en/docs/basis/function/events#ontimer
И SymbolName(x,1);И SymbolName(x,1);
Хороший комментарий, который мне помог, большое спасибо.
Сейчас я использую OnTick() и OnTimer(), обе эти функции работают хорошо для меня. (Я впервые использую OnTimer() для советника).
---
Также я хотел бы попробовать Тики. Мне нужны только тики от каких символов (пар) на "Terminal > Trade" и текущего символа графика. Может ли этот SymbolName() помочь мне?
Пожалуйста, помогите мне или дайте мне совет, как я могу это сделать?
Всего наилучшего.
{
Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
}
{
Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
}
Удивительный пример и действительно полезный комментарий для меня, спасибо большое.
Возможно ли, что тики приходят от торговых пар/символов, пожалуйста?
Потому что почти все время мой Market Watch показывает все символы - специально я ищу новые хорошие пары для торговли, и только поэтому я исследую некоторые способы, как я могу получить ' Terminal > Trade ' символы / пары, только в настоящее время открывая тики сделок.
Заранее большое спасибо.
Нет, но вы можете обновить цену в функции OnTimer(), установленной на низкое значение, например 250 миллисекунд будет равно 4 тикам в секунду, так зачем вам это нужно?
Спасибо за ваш комментарий.
( подтема -#Расчеты ордеров и обновление информации о счете - Открыть) Как я уже говорил, я использую расчеты прибыли ордеров, и это не синхронизируется с ' Terminal > Trade ', это единственная причина.
Так, иногда волатильность очень низкая, тиков приходит наименьшее количество, и я думаю, что функции могут работать 4 раза в секунду, так что работает впустую ( / напрасно ).
Если я не могу найти способ, который может дать мне ' Терминал > Торговля ' тики для ордеров Расчеты прибыли и информация о счете ( / обновления ) синхронизации. Я буду использовать ваши очень полезные методы - который вы показали мне, что способы в ваших последних комментариях, большое спасибо. (Я уже протестировал и этот способ работает).
Заранее спасибо.
Если вам это действительно интересно, вы можете использовать:
{
datetime time; // Time of the last prices update
double bid; // Current Bid price
double ask; // Current Ask price
double last; // Price of the last deal (Last)
ulong volume; // Volume for the current Last price
long time_msc; // Time of a price last update in milliseconds
uint flags // Tick flags
};
Структура для возврата текущих цен (MqlTick)
Это структура для хранения последних цен символа. Она предназначена для быстрого получения наиболее востребованной информации о текущих ценах.
Переменная типа MqlTick позволяет получить значения Ask, Bid, Last и Volume за один вызов функции SymbolInfoTick().
Параметры каждого тика заполняются независимо от того, есть ли изменения по сравнению с предыдущим тиком. Таким образом, можно узнать правильную цену для любого момента в прошлом без необходимости искать предыдущие значения в истории тиков. Например, даже если во время прихода тика меняется только цена Bid, структура все равно содержит и другие параметры, включая предыдущую цену Ask, объем и т.д.
Вы можете проанализировать тиковые флаги, чтобы выяснить, какие именно данные были изменены:
Пример:
{
MqlTick last_tick;
//---
if(SymbolInfoTick(Symbol(),last_tick))
{
Print(last_tick.time,": Bid = ",last_tick.bid,
" Ask = ",last_tick.ask," Volume = ",last_tick.volume);
}
else Print("SymbolInfoTick() failed, error = ",GetLastError());
//---
}
См. также
https://www.mql5.com/en/docs/constants/structures/mqltick
Структуры и классы, CopyTicks(), SymbolInfoTick()
Таким образом, вы можете использовать его для проверки, был ли новый тик для определенного символа, но это будет на один шаг больше, чем прямое чтение ценовых уровней, так что еще раз, зачем вам это нужно.
Marco vd Heijden:
Ну, если вам это действительно интересно, вы можете использовать: ...
Так что вы можете использовать его, чтобы проверить, был ли новый тик для определенного символа, но это будет на один шаг больше, чем прямое чтение ценовых уровней напрямую, так что еще раз, зачем вам это нужно.
Спасибо за ваш информативный комментарий, очень признателен.
---
Если я прав, то эта часть предложения является вопросом.
И мне нужно описать свою ситуацию.
Вся эта забота исходит отсюда.
---
Надеюсь, теперь вы поняли меня более ясно.
Всего наилучшего.
Если вы действительно хотите ждать каждого тика, вам придется написать отдельный советник для каждого символа и использовать функцию OnTick().
Но я могу сказать вам, что я также программирую микроконтроллеры, и они находятся в бесконечном цикле while (вечно), пока не произойдет сбой питания или прерывание.
Чтобы проверить, истинно или ложно условие, используется самый маленький тип данных Boolean, и ваш процессор уже делает это миллионы, если не миллиарды раз в секунду со всеми процессами, работающими в фоновом режиме, графикой и т.д.
Когда вы начинаете выполнять тяжелые вычисления с использованием больших типов данных, это становится проблемой.