TICKとは? - ページ 2

 

なるほど、いい話題ですね。

では、Volumeとは何でしょうか?

 

再掲します。

私の基本的な発見は、ペアのMarketInfo()に変化があれば、「ティック」が受信されることです。

.

例外として、「変化がない」にもかかわらずティックが受信されることがありますが、それは非常にまれなことです。

価格変化のないティックを受信することは稀ではなく、そのペアのMarketInfoに何らかの変化があることを知らせています。

.

Volumeは受信したティックの数、つまり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では、ネットブレイクなど一時的にすべてのTicksを受信しない場合があります。

ということは、tick数=出来高は、サーバー上の回数なのか、変更回数なのか、あるいはブローカーが一定期間内に何回価格を変更したいのかが定義されている。

そうなんですか?

ブローカーが顧客の取引位置をヘッジするために市場に参加するために、ボリューム、それはまた、その期間中に何回その価格を変更したいブローカーによって定義されています。

なんてこったい

出来高って、どうやって使うんですか?

 

Marketinfo()に関する質問です。

無限ループの過剰なMarketinfo()呼び出しは、ブローカーによってスパムと みなされますか?

スパムと見なされない のはどのような場合ですか?

Marketinfo()を何回実行しても、ブローカーを怒らせることはないのですか?

Marketinfo()コマンドは、ブローカーのキャッシュから取得するのですか、それとも本当のrequote ですか?

ありがとうございます。

 

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
 
GREAT TOPIC!!!アップ
 

Phy - またこのトピックを開いて申し訳ありません :-)

私は、あなたが信じているティックの性質と、あなたの利益/リスクなどの計算方法との間にミスマッチがあるのではないかと思っています。(過去の投稿を読んで)

つまり、預け入れ通貨で表現したペアのpip値を求めるために、MarketInfo(Symbol(),MODE_TICKVALUE)を単体で使用しているということです。

しかし、もしあなたがMT4のティックについて信じていることが正しければ、ティック値はティック間のピップ数の倍数で変化する可能性があります。

つまり、価格が突然数ピップス跳ね上がった場合、事前に 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 表示通貨でのティックサイズ。

.

上記の "tick "を "pip "に置き換えてみてください。

.

このブローカーは、標準サイズとしてミニロットを使用します -- MODE_LOTSIZE

価格には3/5桁を使用 -- MODE_TICKSIZE

これらの「ティック」の一つの値は$0.10です -- MODE_TICKVALUE

.

GBPAUDの場合.

.

10000 MODE_LOTSIZE 基準通貨におけるロットサイズ。
0.080262 MODE_TICKVALUE 預金通貨でのティック値。
0.00001 MODE_TICKSIZE 提示通貨でのティックサイズ。

.

GBPAUDは1ロットで1ピップの移動は$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.