Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 658
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
Controlliamo con un semplice consigliere...
Non c'è bisogno di controllare. La logica è la stessa di MQL4: Profitto, Commissione e Swap sono entità separate.
Ora controlliamo con un semplice EA...
Vladimir, il punto è che il quattro lo faccio:
swap=OrderSwap();
commission=OrderCommission();
if(swap+commission<0.0) {
costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(_symbol,SYMBOL_TRADE_TICK_VALUE)*ol))*_Point),_Digits);
} else {
costs=0.0;
}
// прибавляем количество пипок
if(((Bid-(br+costs+((BreakevenStep*_Point)*D)))>=op) && typ==0)
{
OrderModify(...);
}
Come si fa in cinque?
Vladimir, il punto è che il quattro lo faccio:
swap=OrderSwap();
commission=OrderCommission();
if(swap+commission<0.0) {
costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(_symbol,SYMBOL_TRADE_TICK_VALUE)*ol))*_Point),_Digits);
} else {
costs=0.0;
}
// прибавляем количество пипок
if(((Bid-(br+costs+((BreakevenStep*_Point)*D)))>=op) && typ==0)
{
OrderModify(...);
}
Come si fa in cinque?
Per favore, mostratelo tramite codice, ecco un codice diretto in mql5 e preferibilmente senza perversioni.
//| Get the property value "POSITION_COMMISSION" |
//+------------------------------------------------------------------+
double CPositionInfo::Commission(void) const
{
return(PositionGetDouble(POSITION_COMMISSION));
}
//+------------------------------------------------------------------+
//| Get the property value "POSITION_SWAP" |
//+------------------------------------------------------------------+
double CPositionInfo::Swap(void) const
{
return(PositionGetDouble(POSITION_SWAP));
}
//+------------------------------------------------------------------+
//| Get the property value "POSITION_PROFIT" |
//+------------------------------------------------------------------+
double CPositionInfo::Profit(void) const
{
return(PositionGetDouble(POSITION_PROFIT));
}
È quasi impossibile! Estratto da SB, codice diretto
//| Get the property value "POSITION_COMMISSION" |
//+------------------------------------------------------------------+
double CPositionInfo::Commission(void) const
{
return(PositionGetDouble(POSITION_COMMISSION));
}
//+------------------------------------------------------------------+
//| Get the property value "POSITION_SWAP" |
//+------------------------------------------------------------------+
double CPositionInfo::Swap(void) const
{
return(PositionGetDouble(POSITION_SWAP));
}
//+------------------------------------------------------------------+
//| Get the property value "POSITION_PROFIT" |
//+------------------------------------------------------------------+
Ho dimenticato di metterlo nella documentazione, ma questo"POSITION_COMMISSION" funziona?
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
fxsaber, 2016.07.19 12:40
La proprietà POSITION_COMMISSION nel tester (RoboForexEU-MetaTrader 5) restituisce sempre zero commissioni.
Anche POSITION_COMMISSION (== 8) manca nell'aiuto e nel meta-editor (evidenziazione), ma è familiare al compilatore. La commissione di posizione non è difficile da determinare con un altro metodo (di lavoro). Proprietà POSITION_COMMISSION - un rudimento?
{
double Commission = ::PositionGetDouble(POSITION_COMMISSION);
// На случай, если POSITION_COMMISSION не работает
if (Commission == 0)
{
const ulong Ticket = MT4ORDERS::GetPositionDealIn();
if (Ticket > 0)
{
const double LotsIn = ::HistoryDealGetDouble(Ticket, DEAL_VOLUME);
if (LotsIn > 0)
Commission = ::HistoryDealGetDouble(Ticket, DEAL_COMMISSION) * ::PositionGetDouble(POSITION_VOLUME) / LotsIn;
}
}
return(Commission);
}
Forum sul trading, sistemi di trading automatico e test di strategia
Domande dai principianti
fxsaber, 2016.10.29 16:23
Non sto imponendo la libreria MT4Orders. Ma forse sarebbe più facile chiamare il buon vecchio OrderCommission?
Funziona ancora non solo su conti di copertura ma anche su conti netti.
Controlliamo ora con un semplice Expert Advisor...
Qui:POSITION_PROFIT mostra il profitto della posizione
. Non tiene conto di swap e simili.
Vladimir, il punto è che il quattro lo faccio:
swap=OrderSwap();
commission=OrderCommission();
if(swap+commission<0.0) {
costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(_symbol,SYMBOL_TRADE_TICK_VALUE)*ol))*_Point),_Digits);
} else {
costs=0.0;
}
// прибавляем количество пипок
if(((Bid-(br+costs+((BreakevenStep*_Point)*D)))>=op) && typ==0)
{
OrderModify(...);
}
Come si fa in cinque?
La commissione è così imprevedibile che può essere determinata solo in uno scambio chiuso. Per una posizione aperta, puoi solo scoprire il profitto corrente (che non tiene conto né dell'impatto dello swap né dell'impatto delle commissioni) e lo swap. Ecco il codice:
Mettete un breakpoint sulla linea " m_trade.PositionClose(Symbol();" ed eseguite il test sulla storia. Quando il tester si ferma al punto di rottura, confronta le cifre nelle colonne Profit e Swap con le cifre non scritte nel log del tester.
Qui:POSITION_PROFIT mostra il profitto della posizione
. Non tiene conto di swap e simili.
Ok. Ce l'abbiamo.
Lasoluzione di fxsaber è buona, l'ho applicata.
In pratica, ho trasferito il mio programma MQL4 a MQL5 quasi senza problemi.
I dettagli sono descritti sopra.
Grazie mille!