MODE_TICKVALUE -- LIEGT!!!! :) - Seite 3

 
SProgrammer писал(а) >>

Ich bin ziemlich schlau, weißt du :) - Ich habe es im Testgerät laufen lassen. Dort kann es nichts Unbestimmtes geben.

Ich habe dort ein Beispiel gegeben - können Sie mit der Hand rechnen? Ich habe Ihnen auch die Antwort von Marketinfo gegeben.

Auf den Websites vieler Maklerfirmen finden Sie einen JavaScript-Rechner, den Sie kopieren können, um zu sehen, wie man richtig rechnet.

 

Für Währungspaare, bei denen die Kurswährung dieselbe ist wie die Einzahlungswährung

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

In der erweiterten Version müssen Sie die Währung des Angebots analysieren...

 

Depo-Währung USD, Code auf USDJPY-Chart werfen, die Werte sind die gleichen

MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_TICKSIZE) )/MarketInfo(Symbol(),MODE_BID)
Wir können also dem Zeckenwurm vertrauen...
 
SProgrammer >>:

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

Ich weiß nur, wie man es automatisch macht:

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

Sie hatten Recht, MODE_TICKVALUE zählt in einigen Fällen nicht korrekt: alles zählt nur über den BID-Preis, auch wenn es über den ASK-Preis zählen sollte.

 
getch >>:

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

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

Wie groß ist die Fehlermarge?

 
kombat >>:

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

Genug, um den Prüfern Fragen zu stellen.

 
getch >>:

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

Auf dem Tic Volum?

Ich dachte, sie wären nur am Eröffnungskurs und am Schlusskurs interessiert...?

 
kombat >>:

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

Uhr -


USDJPY


Tester auf Zeit


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


Sprung zu 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 - für 5 Ziffern

10 - für 4

 
kombat >>:

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

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

Ich weiß nicht, wie die Entwickler den Gewinn berechnen. Wenn sie dies über MODE_TICKVALUE tun, wird der Gewinn in einigen Fällen falsch gezählt - mehr als er tatsächlich ist. Zum Beispiel bei GBPJPY.

Tatsächlich aber berechnet MetaTrader4 die Gewinne überhaupt nicht korrekt - er rechnet die Gewinnwährung sofort in die Kontobasiswährung um. Richtig ist es, dies zum Zeitpunkt des Wertes zu tun.

Auf dem Interbankenmarkt ändert sich das Eigenkapital ständig, wenn Sie eine Position mit einer anderen Gewinnwährung als der Kontowährung eröffnet und geschlossen haben (z. B. wenn Sie auf einem USD-Konto einen USDJPY-Handel abgeschlossen haben). Und erst zum Zeitpunkt der Bewertung (vielleicht verwende ich den Begriff falsch) wird das Eigenkapital festgelegt (in diesem Beispiel wird der Gewinn in JPY zum aktuellen Wechselkurs USDJPY zu USD umgerechnet).

Das Interessanteste ist, wie der Gewinn gezählt wird, z.B. für AUDNZD auf dem EUR-Konto, wenn der EURNZD-Kurs vom Broker nicht verfügbar ist...

Grund der Beschwerde: