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
( Antes de intentar escribir este comentario, creo que he investigado mucho para encontrar la solución, sí he encontrado hilos similares, pero no he encontrado la solución para este problema. )
Utilizo el siguiente código para la orden de venta que me muestra el Stop Loss en pips, me muestra el valor correcto hasta que el Stop Loss se convierte en positivo.
Por lo tanto, no tengo ninguna idea de cómo puedo intentar algo para resolver este problema.
Cualquier comentario bueno, sería mejor, por favor.
( nota: No estoy usando Trailing Stop por ahora. También por debajo de código sólo para actualizaciones de información, no para OrderSend() o cosas similares. )
{
riskinpips=change_to_pips(OrderStopLoss()-OrderOpenPrice());
}
Print("stop loss in pips",DoubleToString(riskinpips,2));
Gracias de antemano.
( nota: etiquetas de captura de pantalla hecha por el programa de edición de fotos para describir mi problema )Bueno, es el valor más alto menos el valor más bajo el que te da el resultado, así que puedes comprobar cuál es el más alto
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
Bueno es el valor más alto menos el valor más bajo el que te da el resultado así que puedes comprobar cual es el más alto
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
Sólo me río de mí mismo que nunca me importa. Creo que esto podría ayudarme. Pronto lo probaré.
Muchas gracias Sr. Marco
#Cálculo de divisas de beneficios - Cerrado
Hasta ahora funciona perfectamente.
Muchas gracias @Marco vd Heijden y @whroeder1
#Tiempo - Abierto
Desde que empecé a investigar sobre el Tiempo / Reloj para mi EA. Veo que los autores utilizan start() JUSTO en el indicador para ello.
Yo uso OnTimer() y OnTick() en mi EA, no me gustaría usar start().
Así que sólo necesito estar seguro / aprender qué función especial sería mejor para la función de Tiempo y Reloj?
Voy a seguir investigando sobre este tema 10 horas más tarde.
( nota: Ya he encontrado algunos indicadores de Tiempo y Reloj de la página Mql5.com Codebase - pero no me gusta copiar y pegar )
Cualquier buen comentario, compartir el foro, y los enlaces y algo más sería mejor para mí.
Gracias de antemano.
La función de inicio se sustituye por OnStart sólo en los scripts. En los Asesores Expertos y en los indicadores debe ser renombrada como OnTick y OnCalculate, respectivamente. El código que debe ejecutarse durante la operación de un programa mql5 debe ubicarse en estas tres funciones:
Ver: https://www.mql5.com/en/docs/migration
La función de inicio se sustituye por OnStart sólo en los scripts. En los Asesores Expertos y en los indicadores debe ser renombrada como OnTick y OnCalculate, respectivamente. El código que debe ejecutarse durante la operación de un programa mql5 debe ubicarse en estas tres funciones:
#Tiempo - Abierto
Desde que empecé a investigar sobre el Tiempo / Reloj para mi EA. Veo que los autores utilizan start() JUSTO en el indicador para ello.
Yo uso OnTimer() y OnTick() en mi EA, no me gustaría usar start().
Así que sólo necesito estar seguro / aprender qué función especial sería mejor para la función de Tiempo y Reloj?
Voy a seguir investigando sobre este tema 10 horas más tarde.
( nota: Ya he encontrado algunos indicadores de Tiempo y Reloj de la página Mql5.com Codebase - pero no me gusta copiar y pegar )
Cualquier buen comentario, compartir el foro, y los enlaces y algo más sería mejor para mí.
Gracias de antemano.
Utilice OnTimer().
Usar TimeLocal() dará una mejor apariencia, pero no se sincronizará con la zona horaria del broker.
Usando TimeCurrent() se sincronizará con su broker, pero puede retrasarse y luego "saltar" segundos dependiendo de cuando lleguen los ticks. Este ejemplo resalta el problema:
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
#Tiempo - Cerrado
Utilice OnTimer().
Usar TimeLocal() dará una mejor apariencia, pero no se sincronizará con la zona horaria del broker.
Usando TimeCurrent() se sincronizará con su broker, pero puede retrasarse y luego "saltar" segundos dependiendo de cuando lleguen los ticks. Este ejemplo resalta el problema:
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
Foro sobre trading, sistemas de trading automatizados y prueba de estrategias de trading
Asesor experto - preguntas varias
honest_knave, 2016.11.30 01:28
IMHO sería mejor si mantuvieras todos tus cálculos de lote juntos, en lugar de dividirlos entre OnChartEvent() y _lotCalc(). Una función que compruebe min / max / step y haga el incremento / decremento.
const long & lparam , // Parameter of type long event
const double & dparam , // Parameter of type double event
const string & sparam // Parameter of type string events
)
{
_lotCalc();
//-------Process Button---------------------------------------------------------|
if ( sparam == _btnLotMinus )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
_lotSize = fmax(_lotMin, _lotSize-_lotStep);
_calcUpdade( CALC_CHANGE_LOT );
printf( " | Lot: %.2f ", _lotSize );
return;
} //---if Close
// ...
}
void _lotCalc()
{
//---
_lotMin = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MIN );
_lotMax = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MAX );
_lotStep = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP );
//---
}
#Lot Step - ReOpen
@honest_knave- gracias por su mayor ayuda sobre el tamaño del lote y el paso del lote.
Así que sólo tengo que mejorar esta parte del código para cuando "Tamaño del lote >= ( Paso del lote * 100 )" que el paso del lote se incrementa en "Paso del lote * 100"
if(sparam==lotbuttonplus)
{
if(lotsize>=(lotstep*100))
{
lotstep=lotstep*100;
Print("lot step: ",lotstep);
}
lotmaxdivide=lotmax/lotmax *(lotvalue*10);
lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? lotstep*10 : lotstep));
// global variable
infoupdate();
printf("Lot: %.2f ",lotsize);
ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
return;
}
Gracias de antemano.