Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 9
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
La soluzione è arrivata subito.
double GetMarginRequired( const string Symb )
{
MqlTick Tick;
return(SymbolInfoTick(Symb, Tick) ? Tick.ask * SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) * SymbolInfoDouble(Symb, SYMBOL_TRADE_CONTRACT_SIZE) *
SymbolInfoDouble(Symb, SYMBOL_POINT) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
Bene, tutto quello che dobbiamo fare è portare il margine nella valuta di deposito, perché il margine, per esempio, per AUDCAD con valuta di deposito USD deve essere in USD.
Bene, ora abbiamo bisogno di portare il margine nella valuta di deposito, perché il margine, per esempio per AUDCAD con valuta di deposito USD dovrebbe essere in USD.
Questo è ciò che è stato fatto.
Tutto funziona bene in forex, tranne che la domanda finale rimane, "perché la metà, e come posso risolvere il problema?
Tutto funziona bene in forex, ma c'è un'ultima domanda: "perché è dimezzato e come lo sistemiamo?
Ho riscontrato che su SGDJPY il margine è diverso sui server FIBOGroup-MT5 Server e MetaQuotes-Demo. Questo suggerisce che MT5 stesso calcola il margine con errori. Beh, se questo è il caso, non c'è uno standard di confronto. Pertanto, non posso dire con certezza se questo è un errore della mia implementazione o degli sviluppatori. Credo che ci sia un errore in entrambi i casi. Il problema è la mancanza di informazioni corrette.
Ho due server che mostrano correttamente, con un'eccezione - evidenziata in rosso
Come faccio a trovare la proprietà evidenziata in rosso?
Grazie!
Ho due server che mostrano correttamente, con un'eccezione - evidenziata in rosso
Come posso scoprire la proprietà evidenziata in rosso?
double GetMarginRequired( const string Symb )
{
MqlTick Tick;
double MarginInit, MarginMain;
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);
}
Devi capire chiaramente che in MT5 ci possono essere requisiti di margine molto diversi in diverse direzioni. Cioè una singola variante di MT4 potrebbe non funzionare. Sul Forex, ovviamente, questo non sarà il caso. Ma dovete ricordare. Quindi, in generale, si dovrebbe scrivere così
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
double MarginInit, MarginMain;
const bool Res = SymbolInfoMarginRate(symbol, action, MarginInit, MarginMain);
margin = Res ? MarginInit * price * volume * SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE) /
(SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0;
return(Res);
}
Questo è quello che è stato fatto.
Scherzo MT5 su FIBOGroup-MT5 Server SGDJPY
In questa situazione MyOrderCalcMargin conta correttamente ma il normale OrderCalcMargin no!
Scherzo di MT5 su FIBOGroup-MT5 Server SGDJPY
In questa situazione MyOrderCalcMargin conta correttamente ma il normale OrderCalcMargin no!