// 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
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.
なるほど、いい話題ですね。
では、Volumeとは何でしょうか?
再掲します。
私の基本的な発見は、ペアのMarketInfo()に変化があれば、「ティック」が受信されることです。
.
例外として、「変化がない」にもかかわらずティックが受信されることがありますが、それは非常にまれなことです。
価格変化のないティックを受信することは稀ではなく、そのペアのMarketInfoに何らかの変化があることを知らせています。
.
Volumeは受信したティックの数、つまりstart()関数が呼ばれた回数に等しく、特に取引やBid/Askの変更ではありません。MarketInfo()の変化がティックを誘発し、ティック数=出来高となります。
.
出来高は受信したティックの数、つまりstart()関数が呼ばれた回数に等しい。
しかし、前のstart()がまだ完了していない ため、いくつかのティックは見逃されるかもしれません(start()関数が呼び出されなかった)。
新しい相場が到来すると、付属のエキスパートやカスタムインジケータのstart()関数が実行されます。新しい相場が来た時に、前の相場で起動したstart()関数が実行中だった場合、新しい相場はエキスパートによってスキップ されます。プログラム実行中の新しい気配値の収入は、現在のstart()関数の実行が終了するまで、すべてプログラムによってスキップされます。その後、start()関数は、新しい相場が連続して発生したときのみ実行されます。カスタム・インディケータの場合、現在のチャート・シンボルまたはタイムフレームが変更された後、新しい気配値が入力されると、再計算のためにstart()関数が起動されます。エキスパートプロパティウィンドウが開いているときは、start()関数は実行されません。エキスパートの実行中に後者を開くことはできません。
Start()関数を使ってトリガーをかけているわけではなく、無限ループを使ったスクリプトでMarketInfo()を調べているのです。
実験が思わぬ方向に行ってしまったので、スクリプトを書き直します。
.
価格変動が ある場合、または価格変動がない場合、ティック数=出来高となります。
しかし、クライアント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); }
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
.
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();
.