Что такое тик? - страница 2

 

Хорошо, отличная тема !!!!

тогда что такое объем? количество смен тиков в раз, или количество сделок в раз, или количество торгового фонда за период?

 

Переформулирую:

Мой основной вывод: если есть изменение в MarketInfo() для пары, то "тик" получен.

.

Могут быть исключения, например, "изменений не обнаружено", но тик был получен, но это очень редко.

Тики, полученные без изменения цены, не являются редкостью, и сигнализируют о каком-то другом изменении в MarketInfo для пары.

.

Объем равен количеству полученных тиков, т.е. количеству раз, когда была вызвана функция start(), это не конкретно сделки или изменения Bid/Ask. Изменение в MarketInfo()запускает тик, а количество тиков = объем.

 
phy:

.

Объем равен количеству полученных тиков, т.е. количеству раз, когда была вызвана функция start().


Да, но некоторые тики могут быть пропущены (функция start() не была вызвана), потому что предыдущий start() еще не завершился.

При поступлении новых котировок будет выполняться функция start() подключенных экспертов и пользовательских индикаторов. Если функция start(), запущенная на предыдущей котировке, была запущена при поступлении новой котировки, то новая котировка будет пропущена экспертом. Все новые поступления котировок во время выполнения программы пропускаются программой до завершения текущего выполнения функции start(). После этого функция start() будет выполняться только при поступлении очередной новой котировки. Для пользовательских индикаторов функция start() будет запускаться для пересчета после смены текущего символа графика или таймфрейма независимо от поступления новых котировок. Функция start() не будет запущена, если открыто окно свойств эксперта. Последнее не может быть открыто во время выполнения эксперта.

 

Я не использую функцию Start() для запуска, я использую скрипт с бесконечным циклом для исследования MarketInfo().

Я перепишу скрипт, поскольку эксперимент принял неожиданное направление.

.


//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+


    double oldBid, oldAsk, oldVolume, oldCheckSum, oldTickValue, oldSpread, oldMarginRequired;
    int oldTime;
    int tickValueChange;
    int checkSumCount = -2;
    double checkSum;

int start()
  {

   oldBid = Bid;
   oldAsk = Ask;
   oldVolume = Volume[0];
   oldTime = Time[0];
   oldCheckSum         = GetCheckSum();
   oldTickValue         = MarketInfo(Symbol(), MODE_TICKVALUE);
   oldSpread             = MarketInfo(Symbol(),MODE_SPREAD);  
   oldMarginRequired     = MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   
   int bidChange, askChange, eitherChange, neitherChange, bothChange, tickCount, spreadChange, marginChange;

    while(!IsStopped()){

       RefreshRates();
       if(oldVolume != Volume[0]) tickCount += 1;
       if(oldBid != Bid && oldAsk == Ask) bidChange += 1;
       if(oldAsk != Ask && oldBid == Bid) askChange += 1;   
       if(oldBid != Bid && oldAsk != Ask) bothChange += 1;
       if(oldBid == Bid && oldAsk == Ask && oldVolume != Volume[0]){
           if     (oldTickValue != MarketInfo(Symbol(), MODE_TICKVALUE)) tickValueChange +=1;
           else if(oldSpread != MarketInfo(Symbol(),MODE_SPREAD)) spreadChange += 1;
           else if(oldMarginRequired != MarketInfo(Symbol(),MODE_MARGINREQUIRED)) marginChange += 1;
           else neitherChange += 1;
       }
       
       GetCheckSum();
       
       Comment("\n"+
                   " Bid Change              = " + bidChange + "\n" +
                   " Ask Change             = " + askChange + "\n" +
                   " Both Change            = " + bothChange + "\n" +
                   " MarketInfo Change  = " + checkSumCount + "\n" +
                      " TickValueChange     = " + tickValueChange + "\n" +
                      " Margin Change        = " + marginChange + "\n" +
                      " Spread Change        = " + spreadChange + "\n" +
                   " No Change              = " + neitherChange + "\n" +
                   //" Checksum           = " + checkSum + "\n" +
                   " Sum of above          = " + (bidChange + askChange + bothChange + spreadChange + neitherChange + checkSumCount +tickValueChange) + "\n" +
                   " Tick Volume            = " + tickCount);
                   
       Sleep(16);
                   
        oldVolume = Volume[0];
        oldBid = Bid;
        oldAsk = Ask;
        
    
    }


   return(0);
  }

double    GetCheckSum(){


    checkSum =
         
   (100*MarketInfo(Symbol(),MODE_LOW)) +
   (101*MarketInfo(Symbol(),MODE_HIGH)) +
   //(102*MarketInfo(Symbol(),MODE_TIME)) +
   //(103*MarketInfo(Symbol(),MODE_BID)) +
   //(104*MarketInfo(Symbol(),MODE_ASK)) +
   (105*MarketInfo(Symbol(),MODE_POINT)) +
   (106*MarketInfo(Symbol(),MODE_DIGITS)) +
   //(107*MarketInfo(Symbol(),MODE_SPREAD)) +
   (108*MarketInfo(Symbol(),MODE_STOPLEVEL)) +
   (109*MarketInfo(Symbol(),MODE_LOTSIZE)) +
   //(110*MarketInfo(Symbol(),MODE_TICKVALUE)) +
   (111*MarketInfo(Symbol(),MODE_TICKSIZE)) +
   (112*MarketInfo(Symbol(),MODE_SWAPLONG)) +
   (113*MarketInfo(Symbol(),MODE_SWAPSHORT)) +
   (114*MarketInfo(Symbol(),MODE_STARTING)) +
   (115*MarketInfo(Symbol(),MODE_EXPIRATION)) +
   (116*MarketInfo(Symbol(),MODE_TRADEALLOWED)) +
   (117*MarketInfo(Symbol(),MODE_MINLOT)) +
   (118*MarketInfo(Symbol(),MODE_LOTSTEP)) +
   (119*MarketInfo(Symbol(),MODE_MAXLOT)) +
   (120*MarketInfo(Symbol(),MODE_SWAPTYPE)) +
   (121*MarketInfo(Symbol(),MODE_PROFITCALCMODE)) +
   (122*MarketInfo(Symbol(),MODE_MARGINCALCMODE)) +
   (123*MarketInfo(Symbol(),MODE_MARGININIT)) +
   (124*MarketInfo(Symbol(),MODE_MARGINMAINTENANCE)) +
   (125*MarketInfo(Symbol(),MODE_MARGINHEDGED)) +
   //(126*MarketInfo(Symbol(),MODE_MARGINREQUIRED)) +
   (127*MarketInfo(Symbol(),MODE_FREEZELEVEL));

    if(checkSum != oldCheckSum) checkSumCount += 1;
    
    oldCheckSum = checkSum;
    
    return(checkSumCount);
}
 

Тики, полученные с изменением цены или без изменения цены, количество тиков = объем.

Но клиент 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);
}
 
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
 
ОТЛИЧНАЯ ТЕМА!!! ВВЕРХ
 

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

 
MODE_TICKVALUE 16 Значение тика в валюте депозита.
MODE_TICKSIZE 17 Размер тика в валюте котировки.

.

Для евро на 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();

.

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.15 16:47:49



Report for EURUSD

1.39775     MODE_LOW                Low day price. 
1.41344     MODE_HIGH               High day price. 
2009.07.15 16:47:48     MODE_TIME               The last incoming tick time ( last known server time). 
1.41044     MODE_BID                Last incoming bid price. For the current symbol, it is stored in the predefined variable Bid 
1.41054     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 
10     MODE_SPREAD             Spread value in points. 
0     MODE_STOPLEVEL          Stop level in points. 
10000     MODE_LOTSIZE            Lot size in the base currency. 
0.1     MODE_TICKVALUE          Tick value in the deposit currency. 
0.00001     MODE_TICKSIZE           Tick size in the quote currency. 
-0.6     MODE_SWAPLONG           Swap of the long position. 
-2.4     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. 
141.05     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. 

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.