Мой основной вывод: если есть изменение в MarketInfo() для пары, то "тик" получен.
.
Могут быть исключения, например, "изменений не обнаружено", но тик был получен, но это очень редко.
Тики, полученные без изменения цены, не являются редкостью, и сигнализируют о каком-то другом изменении в MarketInfo для пары.
.
Объем равен количеству полученных тиков, т.е. количеству раз, когда была вызвана функция start(), это не конкретно сделки или изменения Bid/Ask. Изменение в MarketInfo()запускает тик, а количество тиков = объем.
Объем равен количеству полученных тиков, т.е. количеству раз, когда была вызвана функция start().
Да, но некоторые тики могут быть пропущены (функция start() не была вызвана), потому что предыдущий start() еще не завершился.
При поступлении новых котировок будет выполняться функция start() подключенных экспертов и пользовательских индикаторов. Если функция start(), запущенная на предыдущей котировке, была запущена при поступлении новой котировки, то новая котировка будет пропущена экспертом. Все новые поступления котировок во время выполнения программы пропускаются программой до завершения текущего выполнения функции start(). После этого функция start() будет выполняться только при поступлении очередной новой котировки. Для пользовательских индикаторов функция start() будет запускаться для пересчета после смены текущего символа графика или таймфрейма независимо от поступления новых котировок. Функция start() не будет запущена, если открыто окно свойств эксперта. Последнее не может быть открыто во время выполнения эксперта.
Тики, полученные с изменением цены или без изменения цены, количество тиков = объем.
Но клиент MT может не получить ВСЕ тики по некоторым причинам, например, из-за временного разрыва сети на несколько секунд.
Тогда счетчик тиков = объем - это счетчик или изменение времени на сервере. или определенный брокером, который хочет изменить свою цену сколько раз за период.
Правильно ли это?
Если брокер участвует в рынке для хеджирования позиций клиентов, то объем, он также определяется тем, сколько раз за период брокер хочет изменить свою цену.
ВызовыMarketInfo() не обращаются к дилеру, они считывают последние значения, уже полученные от дилера.
Вызовы к дилеру требуют около 100-300 миллисекунд на каждый.
// script
int start(){
int startTime = GetTickCount();
for(int i = 0; i < 10000; i++){
int spread = MarketInfo(Symbol(), MODE_SPREAD);
}
int endTime = GetTickCount();
Print("Time to collect 10000 instances of data = " + (endTime -startTime) + " milliseconds");
startTime = GetTickCount();
OrderSend(Symbol(), OP_BUY, 1, Ask, 0, 0, 0 , "", 0, 0, CLR_NONE);
endTime = GetTickCount();
Print("Time to send one order to Server = " + (endTime -startTime) + " milliseconds");
return(0);
}
2008.10.27 16:32:37 Test GBPJPY,M15: Time to send one order to Server = 531 milliseconds
2008.10.27 16:32:37 Test GBPJPY,M15: open #8556064 buy 1.00 GBPJPY at 144.77 ok
2008.10.27 16:32:37 Test GBPJPY,M15: Time to collect 10000 instances of data = 438 milliseconds
Я думаю, что существует несоответствие между тем, во что вы верите относительно природы тика, и вашим методом расчета прибыли/риска и т.д. (из чтения некоторых предыдущих постов).
То есть, вы используете MarketInfo(Symbol(),MODE_TICKVALUE) самостоятельно, чтобы определить стоимость пункта пары, выраженную в валюте депозита.
Однако если то, что вы думаете о тиках в МТ4, верно, то стоимость тика может меняться в зависимости от количества пунктов между тиками.
Другими словами, если цена внезапно подскочит на пару пунктов, предварительный звонок в MarketInfo может показать, что TICKSIZE и TICKVALUE равны 0,0001 и 7,16 соответственно. Тогда следующий вызов может вернуть 0.0002 и 14.32.
В этом случае вы всегда должны были бы учитывать и MarketInfo(Symbol(),MODE_TICKSIZE) и MarketInfo(Symbol(),MODE_TICKVALUE) в своих формулах прибыли/риска и никогда MarketInfo(Symbol(),MODE_TICKVALUE) сам по себе.
10000 MODE_LOTSIZE Размер лота в базовой валюте. 0.1 MODE_TICKVALUE Стоимость тика в валюте депозита. 0.00001 MODE_TICKSIZE Размер тика в валюте котировки.
.
Замените слово "тик" на "пункт" выше, если хотите.
.
Этот брокер использует мини-лот в качестве стандартного размера -- MODE_LOTSIZE
Они используют 3/5 цифр для цены -- MODE_TICKSIZE
Стоимость одного из этих "тиков" составляет $0.10 -- MODE_TICKVALUE
.
Для GBPAUD:
.
10000 MODE_LOTSIZE Размер лота в базовой валюте. 0.080262 MODE_TICKVALUE Стоимость тика в валюте депозита. 0.00001 MODE_TICKSIZE Размер тика в валюте котировки.
.
GBPAUD движение на один пункт на один лот оплачивается $0.080262
.
Ваша идея для вычисления изменения цены вашего ордера от одного момента к другому...
MB Trading Futures, Inc.
MBTrading- Demo Server
MB Trading Futures, Inc.
MBT MetaTrader 4
D:\Program Files ( x86)\MetaTrader\MBT MetaTrader 4/ reports/ MarketInfo_MB Trading Futures, Inc._. txt
2009.07.1516:47:49
Report for EURUSD
1.39775MODE_LOWLow day price.1.41344MODE_HIGHHigh day price.2009.07.1516:47:48MODE_TIME The last incoming tick time ( last known server time).1.41044MODE_BID Last incoming bid price. For the current symbol, it is stored in the predefined variable Bid1.41054MODE_ASK Last incoming ask price. For the current symbol, it is stored in the predefined variable Ask0.00001MODE_POINTPoint size in the quote currency. For the current symbol, it is stored in the predefined variable Point5MODE_DIGITS Count of digits after decimal point in the symbol prices. For the current symbol, it is stored in the predefined variable Digits10MODE_SPREAD Spread value in points.0MODE_STOPLEVEL Stop level in points.10000MODE_LOTSIZE Lot size in the base currency.0.1MODE_TICKVALUE Tick value in the deposit currency.0.00001MODE_TICKSIZE Tick size in the quote currency.-0.6MODE_SWAPLONG Swap of the long position.-2.4MODE_SWAPSHORT Swap of the short position.0MODE_STARTING Market starting date ( usually used for futures).0MODE_EXPIRATION Market expiration date ( usually used for futures).1MODE_TRADEALLOWED Trade is allowed for the symbol.0.1MODE_MINLOT Minimum permitted amount of a lot.0.1MODE_LOTSTEP Step for changing lots.10000MODE_MAXLOT Maximum permitted amount of a lot.2MODE_SWAPTYPE Swap calculation method.0- in points;1- in the symbol base currency;2- by interest;3- in the margin currency.0MODE_PROFITCALCMODE Profit calculation mode.0- Forex;1- CFD;2- Futures.0MODE_MARGINCALCMODE Margin calculation mode.0- Forex;1- CFD;2- Futures;3- CFD for indices.0MODE_MARGININIT Initial margin requirements for1 lot.0MODE_MARGINMAINTENANCE Margin to maintain open positions calculated for1 lot.0MODE_MARGINHEDGED Hedged margin calculated for1 lot.141.05MODE_MARGINREQUIRED Free margin required to open 1 lot for buying.0MODE_FREEZELEVEL Order freeze level in points. If the execution price lies within the range defined by the freeze level, the order cannot be modified, cancelled or closed.
Report for GBPAUD
2.04 MODE_LOW Low day price.
2.06095 MODE_HIGH High day price.
2009.07.15 16:47:42 MODE_TIME The last incoming tick time (last known server time).
2.04538 MODE_BID Last incoming bid price. For the current symbol, it is stored in the predefined variable Bid
2.04588 MODE_ASK Last incoming ask price. For the current symbol, it is stored in the predefined variable Ask
0.00001 MODE_POINT Point size in the quote currency. For the current symbol, it is stored in the predefined variable Point
5 MODE_DIGITS Count of digits after decimal point in the symbol prices. For the current symbol, it is stored in the predefined variable Digits
50 MODE_SPREAD Spread value in points.
0 MODE_STOPLEVEL Stop level in points.
10000 MODE_LOTSIZE Lot size in the base currency.
0.080262 MODE_TICKVALUE Tick value in the deposit currency.
0.00001 MODE_TICKSIZE Tick size in the quote currency.
-1.47 MODE_SWAPLONG Swap of the long position.
-3.65 MODE_SWAPSHORT Swap of the short position.
0 MODE_STARTING Market starting date (usually used for futures).
0 MODE_EXPIRATION Market expiration date (usually used for futures).
1 MODE_TRADEALLOWED Trade is allowed for the symbol.
0.1 MODE_MINLOT Minimum permitted amount of a lot.
0.1 MODE_LOTSTEP Step for changing lots.
10000 MODE_MAXLOT Maximum permitted amount of a lot.
2 MODE_SWAPTYPE Swap calculation method. 0 - in points; 1 - in the symbol base currency; 2 - by interest; 3 - in the margin currency.
0 MODE_PROFITCALCMODE Profit calculation mode. 0 - Forex; 1 - CFD; 2 - Futures.
0 MODE_MARGINCALCMODE Margin calculation mode. 0 - Forex; 1 - CFD; 2 - Futures; 3 - CFD for indices.
0 MODE_MARGININIT Initial margin requirements for 1 lot.
0 MODE_MARGINMAINTENANCE Margin to maintain open positions calculated for 1 lot.
0 MODE_MARGINHEDGED Hedged margin calculated for 1 lot.
164.21 MODE_MARGINREQUIRED Free margin required to open 1 lot for buying.
0 MODE_FREEZELEVEL Order freeze level in points. If the execution price lies within the range defined by the freeze level, the order cannot be modified, cancelled or closed.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Хорошо, отличная тема !!!!
тогда что такое объем? количество смен тиков в раз, или количество сделок в раз, или количество торгового фонда за период?
Переформулирую:
Мой основной вывод: если есть изменение в MarketInfo() для пары, то "тик" получен.
.
Могут быть исключения, например, "изменений не обнаружено", но тик был получен, но это очень редко.
Тики, полученные без изменения цены, не являются редкостью, и сигнализируют о каком-то другом изменении в MarketInfo для пары.
.
Объем равен количеству полученных тиков, т.е. количеству раз, когда была вызвана функция start(), это не конкретно сделки или изменения Bid/Ask. Изменение в MarketInfo()запускает тик, а количество тиков = объем.
.
Объем равен количеству полученных тиков, т.е. количеству раз, когда была вызвана функция start().
Да, но некоторые тики могут быть пропущены (функция start() не была вызвана), потому что предыдущий start() еще не завершился.
При поступлении новых котировок будет выполняться функция start() подключенных экспертов и пользовательских индикаторов. Если функция start(), запущенная на предыдущей котировке, была запущена при поступлении новой котировки, то новая котировка будет пропущена экспертом. Все новые поступления котировок во время выполнения программы пропускаются программой до завершения текущего выполнения функции start(). После этого функция start() будет выполняться только при поступлении очередной новой котировки. Для пользовательских индикаторов функция start() будет запускаться для пересчета после смены текущего символа графика или таймфрейма независимо от поступления новых котировок. Функция start() не будет запущена, если открыто окно свойств эксперта. Последнее не может быть открыто во время выполнения эксперта.
Я не использую функцию Start() для запуска, я использую скрипт с бесконечным циклом для исследования MarketInfo().
Я перепишу скрипт, поскольку эксперимент принял неожиданное направление.
.
Тики, полученные с изменением цены или без изменения цены, количество тиков = объем.
Но клиент MT может не получить ВСЕ тики по некоторым причинам, например, из-за временного разрыва сети на несколько секунд.
Тогда счетчик тиков = объем - это счетчик или изменение времени на сервере. или определенный брокером, который хочет изменить свою цену сколько раз за период.
Правильно ли это?
Если брокер участвует в рынке для хеджирования позиций клиентов, то объем, он также определяется тем, сколько раз за период брокер хочет изменить свою цену.
Боже мой!
Как использовать данные об объеме?
Вопросы по функции Marketinfo().
Будет ли чрезмерное количество вызовов Marketinfo() в бесконечном цикле рассматриваться Брокером как спам?
Что не будет считаться спамом?
Как часто можно выполнять Marketinfo() и не расстраивать Брокера?
Берется ли команда Marketinfo() из кэша Брокера, или это настоящий реквот?
Спасибо
ВызовыMarketInfo() не обращаются к дилеру, они считывают последние значения, уже полученные от дилера.
Вызовы к дилеру требуют около 100-300 миллисекунд на каждый.
// script int start(){ int startTime = GetTickCount(); for(int i = 0; i < 10000; i++){ int spread = MarketInfo(Symbol(), MODE_SPREAD); } int endTime = GetTickCount(); Print("Time to collect 10000 instances of data = " + (endTime -startTime) + " milliseconds"); startTime = GetTickCount(); OrderSend(Symbol(), OP_BUY, 1, Ask, 0, 0, 0 , "", 0, 0, CLR_NONE); endTime = GetTickCount(); Print("Time to send one order to Server = " + (endTime -startTime) + " milliseconds"); return(0); }Phy - извините, что снова открываю эту тему :-)
Я думаю, что существует несоответствие между тем, во что вы верите относительно природы тика, и вашим методом расчета прибыли/риска и т.д. (из чтения некоторых предыдущих постов).
То есть, вы используете MarketInfo(Symbol(),MODE_TICKVALUE) самостоятельно, чтобы определить стоимость пункта пары, выраженную в валюте депозита.
Однако если то, что вы думаете о тиках в МТ4, верно, то стоимость тика может меняться в зависимости от количества пунктов между тиками.
Другими словами, если цена внезапно подскочит на пару пунктов, предварительный звонок в MarketInfo может показать, что TICKSIZE и TICKVALUE равны 0,0001 и 7,16 соответственно. Тогда следующий вызов может вернуть 0.0002 и 14.32.
В этом случае вы всегда должны были бы учитывать и MarketInfo(Symbol(),MODE_TICKSIZE) и MarketInfo(Symbol(),MODE_TICKVALUE) в своих формулах прибыли/риска и никогда MarketInfo(Symbol(),MODE_TICKVALUE) сам по себе.
Правильно ли это?
CB
.
Для евро на MBTrading:
10000 MODE_LOTSIZE Размер лота в базовой валюте.
0.1 MODE_TICKVALUE Стоимость тика в валюте депозита.
0.00001 MODE_TICKSIZE Размер тика в валюте котировки.
.
Замените слово "тик" на "пункт" выше, если хотите.
.
Этот брокер использует мини-лот в качестве стандартного размера -- MODE_LOTSIZE
Они используют 3/5 цифр для цены -- MODE_TICKSIZE
Стоимость одного из этих "тиков" составляет $0.10 -- MODE_TICKVALUE
.
Для GBPAUD:
.
10000 MODE_LOTSIZE Размер лота в базовой валюте.
0.080262 MODE_TICKVALUE Стоимость тика в валюте депозита.
0.00001 MODE_TICKSIZE Размер тика в валюте котировки.
.
GBPAUD движение на один пункт на один лот оплачивается $0.080262
.
Ваша идея для вычисления изменения цены вашего ордера от одного момента к другому...
PositionValueChange = PriceChangeInPips * MarketInfo( OrderSymbol(), MODE_TICKVALUE) * OrderLots();
.