MarginRate - Seite 2

 
Carl Schreiber:

Kannst Du das in mit dem kl.  Skript dokumentieren und dann mit dem Ausdruck hier veröffentlichen?

Ich hab zZ. nur Forex eines MQ-Demokontos, da gibts nur Forex

hab ich mal gepostet, allerdings löst das mein ursprüngliches Problem noch nicht ;-)

 
amando :
...

nur das eben 

immer 0 bringt , und daher eine Division durch 0 den EA beendet


was mich auch wundert, es gibt in der Symbol übersicht, die Initial Margin long und short, aber in MQL5 gibts nur Initial Margin

Ich schlug von Carl vor, dies sei ein Maklerproblem. Es kommt sehr oft vor, dass nicht alle Parameter korrekt eingerichtet werden. Und normalerweise bestreiten sie es, weil die Unterstützung nicht kompetent genug ist, um es zu wissen.
 
Alain Verleyen:
Ich schlug von Carl vor, dies sei ein Maklerproblem. Es kommt sehr oft vor, dass nicht alle Parameter korrekt eingerichtet werden. Und normalerweise bestreiten sie es, weil die Unterstützung nicht kompetent genug ist, um es zu wissen.

Mittlerweilehab ich den Fehler gefunden, die doku ist wieder mal falsch

https://www.mql5.com/en/docs/marketinformation/symbolinfomarginrate

Die initial_margin_rate ist ein output parameter, kein input parameter

Documentation on MQL5: Market Info / SymbolInfoMarginRate
Documentation on MQL5: Market Info / SymbolInfoMarginRate
  • www.mql5.com
[in] A double type variable for receiving an initial margin rate. Initial margin is a security deposit for 1 lot deal in the appropriate direction. Multiplying the rate by the initial margin, we receive the amount of funds to be reserved on the account when placing an order of the specified type. [out] A double type variable for...
 
amando:

Mittlerweilehab ich den Fehler gefunden, die doku ist wieder mal falsch

https://www.mql5.com/en/docs/marketinformation/symbolinfomarginrate

Die initial_margin_rate ist ein output parameter, kein input parameter

Habe eben auch mal etwas gestöbert.

Die CSymbol Klasse liefert wohl auch die Daten.

https://www.mql5.com/en/docs/standardlibrary/tradeclasses/csymbolinfo


Documentation on MQL5: Standard Library / Trade Classes / CSymbolInfo
Documentation on MQL5: Standard Library / Trade Classes / CSymbolInfo
  • www.mql5.com
Standard Library / Trade Classes / CSymbolInfo - Reference on algorithmic/automated trading language for MetaTrader 5
 
Christian:
#include <Trade\SymbolInfo.mqh>
 
void OnStart()
  {
     
     CSymbolInfo m_Symbol;
     
     m_Symbol.Name("GBPAUD");
     m_Symbol.Refresh();
     
     
     Print("MarginRates for: " + m_Symbol.Name());
     Print("Initial: " + m_Symbol.MarginInitial());
     Print("Long :" + m_Symbol.MarginLong());
     Print("Short:" + m_Symbol.MarginShort());
  }


Nützt nur nix, wenn die Werte "intern" im MetaTrader nicht korrekt weitergeleitet werden.

Man dreht sich im Kreis :-)

Daten eines bekannten Brokers ECN Konto.


Ich vermute die Funktion ist aktuell noch in HOLD modus. Bis sie korrekt umgesetzt werden kann. Solange liefert sie immer 0. Status BETA.

Typisch MetaQuotes. Anstatt die Funktion wegzulassen , lässt man sie falsche Werte liefern. Bei großen Unternehmen ist so was dicht an einer Abmahnung des Coders  :-)

Amando du must weiterhin warten oder von Hand die Werte nehmen oder kommt bei dir nun was "richtiges" raus ?

 

Nun ja, die funktion funktioniert ja, nur die doku ist falsch, da die init margin rate ausgegeben wird

https://www.mql5.com/en/docs/marketinformation/symbolinfomarginrate


die CTrade Klasse liefert 0 als ergebnis, das hab ich getestet

Documentation on MQL5: Market Info / SymbolInfoMarginRate
Documentation on MQL5: Market Info / SymbolInfoMarginRate
  • www.mql5.com
[in] A double type variable for receiving an initial margin rate. Initial margin is a security deposit for 1 lot deal in the appropriate direction. Multiplying the rate by the initial margin, we receive the amount of funds to be reserved on the account when placing an order of the specified type. [out] A double type variable for...
 
Christian:


Nützt nur nix, wenn die Werte "intern" im MetaTrader nicht korrekt weitergeleitet werden.

Man dreht sich im Kreis :-)

Daten eines bekannten Brokers ECN Konto.


Ich vermute die Funktion ist aktuell noch in HOLD modus. Bis sie korrekt umgesetzt werden kann. Solange liefert sie immer 0. Status BETA.

Amando du must weiterhin warten oder von Hand die Werte nehmen oder kommt bei dir nun was "richtiges" raus ?

Ich versuche mal diese Situation zu verstehen aus Sicht des Brokers.

Was ist, wenn der Broker meint eine Pending-Order kann jeder zu jeder Zeit erteilen (es ist ja erstmal nur eine Handelsabsicht) und die Gültigkeit der Marge-Bedingung wird erst überprüft wenn die Pending-Order ausgelöst wird?

Immerhin könnte sich ja in der Zwischenzeit der Kontostand und anderes auch sich geändert haben. So vermeidet der Broker Diskussionen, dass plötzlich eine Pending-Order wegen der Marge nicht ausgelöst wird, obwohl die Marge der Pending-Order (damals) noch ok war.

Man kann ja die Margen für Buy und Sell auch für Pending-Orders nehmen.

Allerdings ist das wohl nicht im Sinne des Erfinders.

 
amando:

Nun ja, die funktion funktioniert ja, nur die doku ist falsch, da die init margin rate ausgegeben wird

https://www.mql5.com/en/docs/marketinformation/symbolinfomarginrate


die CTrade Klasse liefert 0 als ergebnis, das hab ich getestet

Zeig mal bitte ein Beispiel
 
Carl Schreiber:

Ich versuche mal diese Situation zu verstehen aus Sicht des Brokers.

Was ist, wenn der Broker meint eine Pending-Order kann jeder zu jeder Zeit erteilen (es ist ja erstmal nur eine Handelsabsicht) und die Gültigkeit der Marge-Bedingung wird erst überprüft wenn die Pending-Order ausgelöst wird?

Immerhin könnte sich ja in der Zwischenzeit der Kontostand und anderes auch sich geändert haben. So vermeidet der Broker Diskussionen, dass plötzlich eine Pending-Order wegen der Marge nicht ausgelöst wird, obwohl die Marge der Pending-Order (damals) noch ok war.

Man kann ja die Margen für Buy und Sell auch für Pending-Orders nehmen.

Allerdings ist das wohl nicht im Sinne des Erfinders.

Wir reden doch aber von Konstanten. Die sind einmalig und verändern sich nicht. Außer, wenn es der Broker per Email ankündigt. Was ja auch öfters gemacht wird.

Deswegen sind sie ja auch gelistet bei jedem Broker.

Wenn sich das Konto ändert, während die Pending-Order im Markt ist, ist das Sache des Programmierers dies zu beachten.

Die Sache liegt bei MQ.

 
Christian:
Zeig mal bitte ein Beispiel

Hab es eben probiert . Ja die Funktion geht.

void OnStart()
  {
     
     CSymbolInfo m_Symbol;
     double margin_initial = 0;
     double margin_main = 0;
     
     m_Symbol.Name("GBPAUD");
     m_Symbol.Refresh();
     
     Print("CSymbol:");
     Print("MarginRates for: " + m_Symbol.Name());
     Print("Initial: " + m_Symbol.MarginInitial());
     Print("Long :" + m_Symbol.MarginLong());
     Print("Short:" + m_Symbol.MarginShort());
     
     bool res = SymbolInfoMarginRate("GBPAUD", ORDER_TYPE_BUY, margin_initial, margin_main);
     
     Print("SymbolInfoMarginRate: Typ BUY");   
     Print("Initial: " + margin_initial);
     Print("Main: " + margin_main);
     Print(GetMarginRequired("GBPAUD"));
  }

double GetMarginRequired( const string Symb )
{
  MqlTick Tick;
  double MarginInit = 0, MarginMain = 0;

  return((SymbolInfoTick(Symb, Tick) && SymbolInfoMarginRate(Symb, ORDER_TYPE_BUY, MarginInit, MarginMain)) ? MarginInit * Tick.ask *
          SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}


Die Funktion  unten fand ich im Netz. Schrecklich die Leute die so Programmieren.

Riesige Codes im Return ...Debugging Horror :-) ...pfui !

Grund der Beschwerde: