mode_tickvalue -- 嘘だ!!!!:) - ページ 3

 
SProgrammer писал(а)>>

私はちょっと頭がいいんですよ、ね)- テスターで動かしていました。そこに未確定なものはありえない。

そこで例を挙げたのですが、手で計算できるのでしょうか?また、Marketinfoからの回答もお伝えしました。

多くの証券会社のホームページにJavaScriptの計算機があるので、それをコピーして、正しい計算方法を確認することができます。

 

気配値通貨と入金通貨が同じ通貨ペアの場合

MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_TICKSIZE) 

拡張版では、引用の通貨を分析する必要があります...

 

USDを預け、USDJPYのチャートに コードを投げると、同じ数値が表示されます。

MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_TICKSIZE) )/MarketInfo(Symbol(),MODE_BID)
だから、ティックワームを信じていいんだ...。
 
SProgrammer >>:

Вы ручками считать проверяли?

自動でやる方法しか知らない。

#property show_inputs

extern string BaseCurrency = "USD";

bool RealSymbol( string Str )
{
  return(MarketInfo( Str, MODE_BID) != 0);
}

double GetTickValue( string Symb, bool Average )
{
  string Str, ProfitCurrency, SymbolPrefix;
  double Res, PriceExchage;
  
  ProfitCurrency = StringSubstr( Symb, 3, 3);
  SymbolPrefix = StringSubstr( Symb, 6);
  
  if ( ProfitCurrency == BaseCurrency)
    Res = MarketInfo( Symb, MODE_LOTSIZE) * MarketInfo( Symb, MODE_TICKSIZE);
  else
  {
    Str = BaseCurrency + ProfitCurrency + SymbolPrefix;
    
    if ( RealSymbol( Str))
    {
      if ( Average)
        PriceExchage = (MarketInfo( Str, MODE_BID) + MarketInfo( Str, MODE_ASK)) / 2;
      else
//        PriceExchage = MarketInfo(Str, MODE_BID); // Так считает MetaTrader4 - неправильно
        PriceExchage = MarketInfo( Str, MODE_ASK); // Правильный вариант
        
      Res = MarketInfo( Symb, MODE_LOTSIZE) * MarketInfo( Symb, MODE_TICKSIZE) / PriceExchage;
    }
    else
    {
      Str = ProfitCurrency + BaseCurrency + SymbolPrefix;

      if ( Average)
        PriceExchage = (MarketInfo( Str, MODE_BID) + MarketInfo( Str, MODE_ASK)) / 2;
      else
        PriceExchage = MarketInfo( Str, MODE_BID);
        
      Res = MarketInfo( Symb, MODE_LOTSIZE) * MarketInfo( Symb, MODE_TICKSIZE) * PriceExchage;
    }
  }
  
  return( Res);
}

void start()
{  
  double TickValue, TickValue1, TickValue2;
  
  TickValue = MarketInfo(Symbol(), MODE_TICKVALUE);
  TickValue1 = GetTickValue(Symbol(), TRUE);
  TickValue2 = GetTickValue(Symbol(), FALSE);
  
  Print("MT4 TickValue = " + DoubleToStr( TickValue, 5));
  Print("Average TickValue = " + DoubleToStr( TickValue1, 5));
  Print("Real TickValue = " + DoubleToStr( TickValue2, 5));
  
  return;
}

MODE_TICKVALUEが 正しく カウントされない場合があるのはご指摘の通りです。ASK 価格でカウントされるべき場合でも、BID 価格でしかカウントされません。

 
getch >>:

Умею только автоматом:

Вы оказались правы, MODE_TICKVALUE считается в некоторых случаях некорректно: все считается только через BID-цену, даже когда надо считать через ASK-цену.

どれくらいの誤差があるのでしょうか?

 
kombat >>:

А насколь % эта погрешность?

監査役に疑問を抱かせるには十分だ。

 
getch >>:

Достаточная, чтобы у аудиторов возникли вопросы.

オン・ザ・ティックのボリウム?

始値終値しか興味がないのでは...?

 
kombat >>:

Нуно не одна из, а та что валюта котировки, JPY в данном случае.

ウォッチ


米ドル円


テスター


2008/10/01 -> 2009/01/01


2008/10/01にスキップする


====


2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_FREEZELEVEL=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_MARGINREQUIRED=1000.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_MARGINHEDGED=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_MARGINMAINTENANCE=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_MARGININIT=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_MARGINCALCMODE=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_PROFITCALCMODE=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_SWAPTYPE=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_MAXLOT=1000.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_LOTSTEP=0.10000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_MINLOT=0.10000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_TRADEALLOWED=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_EXPIRATION=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_STARTING=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_SWAPSHORT=-0.50000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_SWAPLONG=-0.50000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_TICKSIZE=0.00100000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_TICKVALUE=1.09488252

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_LOTSIZE=100000.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_STOPLEVEL=20.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_SPREAD=19.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_DIGITS=3.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_POINT=0.00100000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_ASK=111.70900000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_BID=111.69000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_TIME=1199260860.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_HIGH=0.00000000

2010.01.13 12:14:42 2008.01.02 08:01 OTestExpert3 USDJPY,M1: MODE_LOW=0.00000000


=============


string s=Symbol();
   
   int Code2[]={  MODE_LOW,
                  MODE_HIGH,
                  MODE_TIME,
                  MODE_BID,
                  MODE_ASK,
                  MODE_POINT,
                  MODE_DIGITS,
                  MODE_SPREAD,
                  MODE_STOPLEVEL,
                  MODE_LOTSIZE,
                  MODE_TICKVALUE,
                  MODE_TICKSIZE,
                  MODE_SWAPLONG,
                  MODE_SWAPSHORT,
                  MODE_STARTING,
                  MODE_EXPIRATION,
                  MODE_TRADEALLOWED,
                  MODE_MINLOT,
                  MODE_LOTSTEP,
                  MODE_MAXLOT,
                  MODE_SWAPTYPE,
                  MODE_PROFITCALCMODE,
                  MODE_MARGINCALCMODE,
                  MODE_MARGININIT,
                  MODE_MARGINMAINTENANCE,
                  MODE_MARGINHEDGED,
                  MODE_MARGINREQUIRED,
                  MODE_FREEZELEVEL
               };
   string CodeName2[]={"MODE_LOW",
                        "MODE_HIGH",
                        "MODE_TIME",
                        "MODE_BID",
                        "MODE_ASK",
                        "MODE_POINT",
                        "MODE_DIGITS",
                        "MODE_SPREAD",
                        "MODE_STOPLEVEL",
                        "MODE_LOTSIZE",
                        "MODE_TICKVALUE",
                        "MODE_TICKSIZE",
                        "MODE_SWAPLONG",
                        "MODE_SWAPSHORT",
                        "MODE_STARTING",
                        "MODE_EXPIRATION",
                        "MODE_TRADEALLOWED",
                        "MODE_MINLOT",
                        "MODE_LOTSTEP",
                        "MODE_MAXLOT",
                        "MODE_SWAPTYPE",
                        "MODE_PROFITCALCMODE",
                        "MODE_MARGINCALCMODE",
                        "MODE_MARGININIT",
                        "MODE_MARGINMAINTENANCE",
                        "MODE_MARGINHEDGED",
                        "MODE_MARGINREQUIRED",
                        "MODE_FREEZELEVEL"
                        };
   
   for ( i=0; i< ArraySize( Code2); i++){
      
      double mre  = MarketInfo ( s, Code2[ i]);
      int    err = GetLastError();
         
      Print ( CodeName2[ i],"=", DoubleToStr( mre,9));
 
      
      if ( ERR_NO_ERROR != err )
          Print ( "error(", err,")", "--", ErrorDescription( err)  );
 
SProgrammer >>:

MODE_TICKVALUE для EURUSD по маркетинфо = 1.0000000 :), а не 10.


1 - 5桁の場合

10 - 4人分

 
kombat >>:

По тик волуму???

Мне казалось что их интересует лишь цена окрытия цена закрытия...

開発者がどうやって利益を計算しているのかわからない。MODE_TICKVALUEで 行う場合、場合によっては利益が実際よりも多くカウントされることがあります。例えば、GBPJPYの 場合。

しかし、実際にはMetaTrader4は 利益を全く間違って計算しています - それは利益の通貨をすぐに口座の基本通貨に変換します。正しくは、バリュー時です。

インターバンクでは、口座通貨以外の利益通貨でポジションを建てたり閉じたりした場合(例えば、USD口座で USDJPYの 取引をした場合)、Equityは 常に変化しています。評価(この用語の使い方が間違っているかもしれません)の時点で初めてEquityが 確定します(例として、日本円での 利益は現在のUSDJPYUSDの 為替レートで換算されます)。

一番気になるのは、例えばEUR 口座で AUDNZDの レートをブローカーから入手できない場合、利益がどのようにカウントされるかということです...