MODE_TICKVALUE -- YALAN!!!! :) - sayfa 3

 
SProgrammer писал(а) >>

Biraz akıllıyım, bilirsiniz :) - Test cihazında bir gıcırtı başlattım. Belirsiz bir şey olamaz.

Orada bir örnek verdim - kalemlerle hesaplayabilir misiniz? Ben de pazarlama bilgisinden cevabı verdim.

Birçok DC'nin sitesinde JavaScript'te yapılmış bir hesap makinesi var, onu yırtıp doğru şekilde nasıl hesaplanacağını görebilirsiniz.

 

Karşıt para biriminin mevduat para birimiyle aynı olduğu döviz çiftleri için

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

genişletilmiş versiyonda, teklif para birimini analiz etmeniz gerekecek ...

 

Depo para birimi USD, USDJPY grafiğindeki kodu atıyoruz, sanıkların ifadesi aynı

 MarketInfo ( Symbol ( ) , MODE_LOTSIZE ) * MarketInfo ( Symbol ( ) , MODE_TICKSIZE ) ) / MarketInfo ( Symbol ( ) , MODE_BID )
mona tikvolum'a güvenmek anlamı...
 
SProgrammer >> :

Elle saymayı denediniz mi?

sadece otomatik yapabilirim

 #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 ;
}

Haklıydınız, MODE_TICKVALUE bazı durumlarda yanlış kabul edilir: ASK fiyatı üzerinden hesaplamak gerekse bile her şey sadece BID fiyatı üzerinden hesaplanır.

 
getch >> :

sadece otomatik yapabilirim

Haklıydınız, MODE_TICKVALUE bazı durumlarda yanlış kabul edilir: ASK fiyatı üzerinden hesaplamak gerekse bile her şey sadece BID fiyatı üzerinden hesaplanır.

Bu hata ne kadar?

 
kombat >> :

Bu hata ne kadar?

Denetçilerin soru sormasına neden olacak kadar.

 
getch >> :

Denetçilerin soru sormasına neden olacak kadar.

Tik hacmine göre???

Bana sadece açılış fiyatıyla, kapanış fiyatıyla ilgileniyorlarmış gibi geldi...

 
kombat >> :

Nuno, bu durumda JPY'den biri değil , teklif para birimi olan JPY'dir.

Görmek -


USD/JPY


dönem test cihazı


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


2008/10/01'e atla


====


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_BAŞLATMA=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=10000.000000000

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

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 >> :

Pazarlama bilgisine göre EURUSD için MODE_TICKVALUE = 1.0000000 :), 10 değil.


1 - 5 karakter için

10 - 4 için

 
kombat >> :

Tik hacmine göre???

Bana sadece açılış fiyatıyla, kapanış fiyatıyla ilgileniyorlarmış gibi geldi...

Geliştiricilerin karı nasıl hesapladığını bilmiyorum. Bunu MODE_TICKVALUE aracılığıyla yaparlarsa, bazı durumlarda kârın yanlış olduğu kabul edilir - gerçekte olduğundan daha fazla. Örneğin, GBPJPY'de .

Ama aslında, MetaTrader4 karı hiç yanlış hesaplar - hemen kar para birimini hesabın temel para birimine dönüştürür. Bunu değer zamanında yapmak doğrudur.

Bankalararası piyasada, hesap para birimine eşit olmayan bir kâr para birimine sahip bir pozisyon açıp kapattıysanız (örneğin, bir USD hesabında USDJPY'de işlem yaptıysanız) Özkaynak sürekli değişir. Ve yalnızca değer anında (belki de bu terimi yanlış kullanıyorum) Öz sermaye sabittir (örneğin, JPY cinsinden kâr, geçerli USDJPY oranından USD'ye dönüştürülür).

En ilginç şey, örneğin, komisyoncu bir EURNZD oranına sahip olmadığında, bir EUR hesabındaki AUDNZD'de kârın nasıl hesaplandığıdır...