Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 658
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Vamos a comprobarlo con un simple asesor...
No es necesario comprobarlo. La lógica es la misma que en MQL4: el Beneficio, la Comisión y el Swap son entidades separadas.
Ahora vamos a comprobar con un simple EA...
Vladimir, la cuestión es que en el cuatro hago esto:
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(...);
}
¿Cómo se hace en cinco?
Vladimir, la cuestión es que en el cuatro hago esto:
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(...);
}
¿Cómo se hace en cinco?
Por favor, muéstralo por código, aquí tienes un código directo en mql5 y preferiblemente sin perversiones.
//| 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));
}
Es casi imposible. Extraído de SB, código directo
//| 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" |
//+------------------------------------------------------------------+
Se me olvidó ponerlo en la documentación, pero ¿funciona este"POSITION_COMMISSION"?
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Bichos, errores, preguntas
fxsaber, 2016.07.19 12:40
La propiedad POSITION_COMMISSION en el probador (RoboForexEU-MetaTrader 5) siempre devuelve cero comisiones.
También POSITION_COMMISSION (== 8) falta en la ayuda y en el meta-editor (resaltado), pero es familiar para el compilador. La comisión de posición no es difícil de determinar utilizando otro método (de trabajo). Propiedad 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);
}
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Preguntas de los principiantes
fxsaber, 2016.10.29 16:23
No estoy imponiendo la biblioteca MT4Orders. Pero tal vez sería más fácil llamar a la buena y vieja OrderCommission.
Sigue funcionando no sólo en las cuentas de cobertura, sino también en las cuentas netas.
Vamos a comprobarlo ahora con un simple Asesor Experto...
Aquí:POSITION_PROFIT muestra el beneficio de la posición
. No tiene en cuenta los intercambios y similares.
Vladimir, la cuestión es que en el cuatro hago esto:
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(...);
}
¿Cómo lo hago en cinco?
La comisión es tan imprevisible que sólo puede determinarse en una operación cerrada. Para una posición abierta, sólo se puede averiguar el beneficio actual (que no tiene en cuenta ni el impacto del swap ni el de las comisiones) y el swap. Aquí está el código:
ponga un punto de interrupción en la línea " m_trade.PositionClose(Symbol();" y ejecute la prueba en el historial. Cuando el probador se detenga en el punto de ruptura, compare las cifras de las columnas de Beneficio y Cambio con las cifras que no están escritas en el registro del probador.
Aquí:POSITION_PROFIT muestra el beneficio de la posición
. No tiene en cuenta los intercambios y similares.
Bien. Lo tenemos.
La solución de fxsaber es buena, la he aplicado.
Básicamente, transferí mi programa MQL4 a MQL5 casi sin problemas.
Los detalles se indican más arriba.
¡Muchas gracias!