Cos'è un TICK? - pagina 2

 

OK, Grande argomento !!!!

allora cos'è il volume? il conteggio delle volte di cambio tick, o il conteggio delle volte di scambio, o la quantità di fondo di scambio in un periodo?

 

Per ripetere:

La mia constatazione di base è che se c'è un cambiamento in MarketInfo() per la coppia, viene ricevuto un "tick".

.

Ci possono essere eccezioni, come "nessun cambiamento trovato" ma un tick è stato ricevuto, ma è molto raro.

I tick ricevuti senza variazioni di prezzo non sono rari, e segnalano qualche altro cambiamento nel MarketInfo per la coppia.

.

Il volume è uguale al numero di tick ricevuti, cioè il numero di volte che la funzione start() è stata chiamata, non è specificamente scambi o cambiamenti Bid/Ask. Il cambiamento di MarketInfo() fa scattare un tick, e il numero di tick = volume.

 
phy:

.

Il volume è uguale al numero di tick ricevuti, cioè il numero di volte che la funzione start() è stata chiamata.


Sì, ma alcuni tick possono essere mancati (la funzione start() non è stata chiamata) perché la precedente start() non è ancora completa.

All'arrivo di nuove quotazioni, viene eseguita la funzione start() degli esperti e degli indicatori personalizzati allegati. Se la funzione start() lanciata alla quotazione precedente era in esecuzione quando è arrivata una nuova quotazione, la nuova quotazione sarà saltata dall'esperto. Tutte le nuove quotazioni entrate durante l'esecuzione del programma vengono saltate dal programma fino al completamento dell'attuale esecuzione della funzione start(). Dopo di che, la funzione start() sarà eseguita solo quando una nuova quotazione successiva entra. Per gli indicatori personalizzati, la funzione start() sarà lanciata per il ricalcolo dopo che il simbolo del grafico corrente o il timeframe è stato cambiato indipendentemente dalle nuove quotazioni in arrivo. La funzione start() non sarà lanciata quando la finestra delle proprietà dell'esperto è aperta. Quest'ultima non può essere aperta durante l'esecuzione dell'esperto.

 

Non sto usando la funzione Start() per innescare, sto usando uno script con un ciclo infinito per esaminare MarketInfo().

Riscriverò lo script, dato che l'esperimento ha preso una direzione inaspettata.

.


//+------------------------------------------------------------------+
//| 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);
}
 

Ticks ricevuti con variazione di prezzo o senza variazione di prezzo, tick count = volume.

Ma il client MT forse non ha ricevuto tutti i tick per alcune ragioni come la rottura della rete temporaneamente alcuni secondi.

Quindi il conteggio dei tick = volume è il conteggio o il cambiamento dei tempi sul server. o definito dal broker vuole cambiare il suo prezzo quante volte in un periodo.

È giusto?

Per un broker prendere parte al mercato per coprire posizioni teade clienti, Volume, è anche definito da broker vuole cambiare il suo prezzo come muvh volte in un periodo.

Mio Dio!

Come utilizzare i dati di volume?

 

Domande su Marketinfo().

Un numero eccessivo di chiamate a Marketinfo() in un ciclo infinito sarà considerato spam dal Broker?

Cosa non sarebbe considerato spam?

Quanto spesso si può eseguire Marketinfo() senza infastidire il Broker?

Il comando Marketinfo() attinge dalla cache del Broker o è un vero e proprio requote?

Grazie

 

Le chiamate aMarketInfo() non vanno al Dealer, leggono i valori più recenti già ricevuti dal Dealer.

Le chiamate al Dealer richiedono circa 100-300 millisecondi ciascuna per essere completate.

// 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
 
GRANDE ARGOMENTO!!! SU
 

Phy - scusa se riapro questo argomento :-)

Sto pensando che c'è una mancata corrispondenza tra ciò che credi sulla natura di un tick e il tuo metodo di calcolo del profitto/rischio ecc. (dalla lettura di alcuni post precedenti).

Cioè che tu usi MarketInfo(Symbol(),MODE_TICKVALUE) da solo per determinare il valore in pip della coppia espresso in termini di valuta di deposito.

Tuttavia, se ciò che si crede sui tick in MT4 è corretto, allora il valore del tick può cambiare di un fattore pari al numero di pip tra i tick.

In altre parole, se il prezzo salta improvvisamente un paio di pip, una chiamata precedente a MarketInfo potrebbe rivelare che TICKSIZE e TICKVALUE sono rispettivamente 0.0001 e 7.16. Allora la chiamata successiva potrebbe restituire 0,0002 e 14,32.

In questo caso dovreste sempre mettere a fattore sia MarketInfo(Symbol(),MODE_TICKSIZE) che MarketInfo(Symbol(),MODE_TICKVALUE) nelle vostre formule di profitto/rischio e mai MarketInfo(Symbol(),MODE_TICKVALUE) da solo.

Questo è accurato?


CB

 
MODE_TICKVALUE 16 Valore del tick nella valuta del deposito.
MODE_TICKSIZE 17 Dimensione del tick nella valuta di quotazione.

.

Per Euro in MBTrading:

10000 MODE_LOTSIZE Dimensione del lotto nella valuta di base.
0.1 MODE_TICKVALUE Valore del tick nella valuta di deposito.
0.00001 MODE_TICKSIZE Dimensione del tick nella valuta di quotazione.

.

Sostituisci la parola "tick" con "pip" qui sopra, se vuoi.

.

Questo broker usa il mini-lotto come dimensione standard -- MODE_LOTSIZE

Usano 3/5 cifre per il prezzo -- MODE_TICKSIZE

Il valore di uno di questi "tick" è $0.10 -- MODE_TICKVALUE

.

Per GBPAUD:

.

10000 MODE_LOTSIZE Dimensione del lotto nella valuta di base.
0.080262 MODE_TICKVALUE Valore del tick nella valuta di deposito.
0.00001 MODE_TICKSIZE Dimensione del tick nella valuta di quotazione.

.

Il movimento di un singolo pip su un lotto di GBPAUD paga $0,080262

.

La tua idea per calcolare il cambiamento di prezzo del tuo ordine da un momento all'altro...

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.