MODE_TICKVALUE -- 거짓말!!!! :) - 페이지 3

 
SProgrammer писал(а) >>

나는 똑똑합니다. :) - 테스터에서 삐걱 거리는 소리를 냈습니다. 결정되지 않은 것은 없습니다.

나는 거기에서 예를 들었습니다 - 당신은 펜으로 계산할 수 있습니까? 그리고 Marketinginfo에서 답변도 드렸습니다.

많은 DC의 사이트에는 JavaScript로 만든 계산기가 있습니다. 계산기를 찢고 올바르게 계산하는 방법을 볼 수 있습니다.

 

견적 통화가 예금 통화와 동일한 통화 쌍의 경우

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

확장 버전에서는 견적 통화를 분석해야 합니다...

 

창고 통화는 USD이고 USDJPY 차트 에 코드를 던지고 피고인의 증언은 동일합니다.

 MarketInfo ( Symbol ( ) , MODE_LOTSIZE ) * MarketInfo ( Symbol ( ) , MODE_TICKSIZE ) ) / MarketInfo ( Symbol ( ) , MODE_BID )
mona의 뜻은 tikvolum...
 
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잘못된 것으로 간주됩니다. ASK 가격을 통해 계산해야 하는 경우에도 모든 것이 BID 가격을 통해서만 계산됩니다.

이 오류는 얼마입니까?

 
kombat >> :

이 오류는 얼마입니까?

감사원에게 질문을 던지기에 충분합니다.

 
getch >> :

감사원에게 질문을 던지기에 충분합니다.

틱 볼륨으로???

시가, 종가에만 관심이 있는 것 같았는데...

 
kombat >> :

Nuno는 중 하나 아니지만 이 경우 견적 통화인 JPY입니다.

보다 -


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

마케팅 정보별 EURUSD의 MODE_TICKVALUE = 1.0000000 :), 10이 아닙니다.


1 - 5자

10 - 4인용

 
kombat >> :

틱 볼륨으로???

시가, 종가에만 관심이 있는 것 같았는데...

개발자가 이익을 계산하는 방법을 모르겠습니다. MODE_TICKVALUE 를 통해 수행하면 경우에 따라 이익이 실제보다 더 잘못된 것으로 간주됩니다. 예를 들어, GBPJPY .

그러나 실제로 MetaTrader4는 이익을 전혀 잘못 계산 합니다. 이익 통화를 계정의 기본 통화로 즉시 변환합니다. 값 설정 시 이렇게 하는 것이 맞습니다.

은행 간 시장에서 계좌 통화와 같지 않은 이익 통화로 포지션을 개설 및 청산한 경우(예: USD 계좌에서 USDJPY 로 거래를 한 경우) 자산 은 지속적으로 변화합니다. 그리고 가치의 순간에만(아마도 이 용어를 잘못 사용했을 수 있음) 자산 은 고정되어 있습니다(예: JPY 의 이익은 USDJPY 의 현재 환율로 USD 로 변환됨).

가장 흥미로운 점은 예를 들어 브로커에 EURNZD 환율이 없을 때 EUR 계정의 AUDNZD 로 이익이 계산되는 방식입니다...