Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 51
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Tal vez no entendí mi pregunta.
Estando en el gráfico del periodo M1 quiero llenar el buffer si en el periodo M5, la línea del indicador " Estocástico" está ahora por encima del nivel 55.
////////////////////////////////////////////////
for(int i=limit; i>=0; i--) {
int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55.0)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
if(sto2_0<44.0)
{
BufferDN[i]=high[i]+distance*MyPoint;
}
Comment(sto2_0);
}
En el comentario el valor actual es correcto con M5, pero en el historial las flechas ponen no en condición, caos.
¿Qué puede ser?
En el " sótano" el estocástico de M5
Las flechas están rodeadas no según la señal
Estoy escribiendo un Asesor Experto que coloca simultáneamente dos StopOrders, una de venta y otra de compra.
¿Cómo escribo la condición para que cuando se dispare una StopOrder se elimine la segunda (la contraria)?
Gracias.
Estoy escribiendo un Asesor Experto que coloca simultáneamente dos StopOrders, una de venta y otra de compra.
¿Cómo escribo la condición para que cuando se dispare una StopOrder se elimine la segunda (la contraria)?
Gracias.
La condición es simple. Cuando se dispara una StopOrder, aparece una posición en el mercado, significa que debemos rastrear la posición, y si existe, debemos eliminar la orden contraria.
Este es un trozo de código para pensar)
bool b, s;
switch(op) {
case OP_BUY : b=ExistPositions(sy, OP_BUY , mn); break;
case OP_SELL: s=ExistPositions(sy, OP_SELL, mn); break;
}
if(b) {
DeleteOrders(sy, OP_SELLLIMIT, mn, cl);
DeleteOrders(sy, OP_SELLSTOP , mn, cl);
}
if(s) {
DeleteOrders(sy, OP_BUYLIMIT, mn, cl);
DeleteOrders(sy, OP_BUYSTOP , mn, cl);
}}
Vitaly Muzichenko, según tengo entendido, ahora hay que añadir las funcionesExistPositions yDeleteOrders
Vitaly Muzichenko, según tengo entendido, ahora hay que escribir las funcionesExistPositions yDeleteOrders
No tienes que escribirlas, ambas estánhechas.
Bueno..., para fines educativos es bastante útil...
A efectos prácticos, es muy caro ejecutar ciclos en cada función.
Bueno..., para la formación es muy útil...
A efectos prácticos, es muy costoso ejecutar ciclos en cada función.
Qué hacer si el tope/parada es de 200
pero
tp=NormalizarDoble((precio+(TakeProfit*_Punto)),Dígitos);
en un dólar-yen dará 317.000 al cambio de 117.000
el resultado esperado es 117.200
Qué hacer si el tope/parada es de 200
pero
tp=NormalizarDoble((precio+(TakeProfit*_Punto)),Dígitos);
en un dólar-yen dará 317.000 al cambio de 117.000
el resultado esperado es 117.200
¿Por qué tantos paréntesis? Es cuestión de gustos, por supuesto, pero sigue siendo demasiado.
tp=NormalizarDoble(precio+TakeProfit*_Punto,_Dígitos);
Los valores se sustituyen incorrectamente si el resultado es incorrecto en la salida, porque esta línea de código calculará todo correctamente, incluso con paréntesis adicionales.