![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
Otra pregunta
ahora mi EA como este
if(FastMA2 SlowMA1)
{
CerrarPosiciones();
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,Ask+(45*Point),"",MAGIC,0,Blue);
return(0);
Quiero cambiar así
1. 15minutus timeflame suceder signo de compra
2. si entonces 5minutos timeflame MA cruzar signo de compra ya, también
ClosePosition. y obtener una nueva posición
3. si entonces 5minutos timeflame MA cambiar vender signo ya
esperar 5minutos timeflame cambiar signo de compra ,
entonces ClosePosition. y obtener nueva posición
Por favor, dígame cómo escribir este programa.
Hola
Estoy buscando un poco de ayuda Tengo un EA que estoy usando en la demo y también aprender a código con. Estoy tratando de averiguar cómo agregar un comentario al sistema para mostrarme cuál de los 4 criterios de entrada se utilizó para abrir la posición. por ejemplo, si se utilizó long2 entonces mostrar la señal de long2
cualquier ayuda seria genial
saludos
Beno
Hola
Estoy buscando un poco de ayuda Tengo un EA que estoy usando en la demo y también aprender a código con. Estoy tratando de averiguar cómo añadir un comentario al sistema para mostrarme cuál de los 4 criterios de entrada se utilizó para abrir la posición. por ejemplo, si se utilizó long2 entonces mostrar la señal de long2
cualquier ayuda seria genial
Saludos
BenoDespués de que se cumpla su condición y utilice el comando Ordersend(), sólo tiene que insertar una declaración Comment(), Alert(), o Print(). Cualquiera que quieras usar.
Algo como esto
if ( long2 == true)
{
Ordersend();
{
Print(" señal long2 tomada ");
}
}
Espero que eso ayude.![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
Gracias Wolfe
He tenido que reírme, he puesto lo que has sugerido y ha funcionado más o menos, pero ahora sólo tengo el comentario y ninguna posición abierta.
bool Long = MAofRSI11>MAofRSI21 && MAofRSI12VolHL && RSIndex1HL2 && TrStop0.0 && SDLL && ma<Close[shift];
bool Short = MAofRSI11=MAofRSI22 && VolCH>VolHL && RSIndex1HLM && TrStop>Close[shift] && MOMClose[shift];bool Long2 = MAofRSI11>HLM && MAofRSI12HLM && MAofRSI22VolHL && TrStop0.0 && SDLL && ma<Close[shift];
bool Short2 = MAofRSI11=HLM && MAofRSI21=HLM && VolCH>VolHL && TrStop>Close[shift] && MOMClose[shift];bool Long3 = RSIndex1-RSIndex2>20<HL2 && TrStop0.0 && SDLL && ma<Close[shift];
bool Short3 = RSIndex2-RSIndex1>20>HL1 && TrStop>Close[shift] && MOMClose[shift];bool Long4 = zscore>0,0 && ma<Close[shift];
bool Short4 = zscoreClose[shift];
buysig = Long || Long2 || Long3 | Long4;
sellsig = Short || Short2 | Short3 | Short4;
closebuy=sellsig;
closesell=buysig;
si (curprof>=SaldoDeCuenta()*SalidaDeBeneficio/100.0) {
exit=true;
}
if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {
remorder=true;
}
}
void CheckForOpen() {
int res,tr;
//---- condiciones de venta
co=CalcularOrdenesactuales(Symbol());
if(sellsig && lastsig!=-1) {
co=CalcularOrdenesActual(Símbolo());
si (co==0) {
if ( Short == true)
si ( Short2 == true)
si ( Short3 == true)
res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);
Print(" Señal de venta tomada ");
Print(" Señal corta2 tomada ");
Print(" Señal corta3 tomada ");
Print(" Señal corta4 tomada ");
}
lastsig=-1;
last=Tiempo[0];
devolver;
}
//---- condiciones de compra
if(buysig && lastsig!=1) {
co=CalcularOrdenesactuales(Símbolo());
if (co==0) {
if ( Long == true)
si ( Long2 == true)
si ( Long3 == true)
si ( Long4 == true)
res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);
Print(" Señal larga tomada ");
Print(" Señal larga2 tomada ");
Print(" Señal Long3 tomada ");
Print(" Señal Long4 tomada ");
}
last=Tiempo[0];
lastsig=1;
devolver;
}
}
Corregido Gracias
Depuración de código
¿Cómo y dónde utilizarías un trozo de código como este? Tengo un error de división a cero que no encuentro cómo solucionar.
extern bool DEBUGGING = true
...
if(DEBUGGING && variableName == 0) Print("CodePoint 1 -- Esta variable es ahora ", variableName);
... más código
if(DEBUGGING && variableName == 0) Print("CodePoint 2 -- Esta variable es ahora ", variableName);
... más código
if(DEBUGGING && variableName == 0) Print("CodePoint 3 -- Esta variable es ahora ", variableName);
...
me pueden ayudar? ¿por qué hay muchos errores en el código?
esto es para calcular el SMMA:
for(j=0;j<Bars;j++)
{
for(i=0,sum=0;i<ma_period;i++)
{
suma=suma+Cierre[j+i];
// buffer[j]=(suma/ma_periodo+Cerrar[j+i])/ma_periodo;
}
buffer[j]=(suma/ma_periodo+Cerrar[j])/ma_periodo;
}
esto es para calcular LWMA
for(j=0;j<Bars;j++)
{
for(i=0,sum=0,sum1=0;i<ma_period;i++)
{
sum=suma+Cierre[j+i];
sum1=sum1+Close[j+i]*(j+i);
// buffer[j]=suma/ma_periodo;
}
buffer[j]=suma1/suma;
}
¿y cómo se calcula la EMA?
![](https://c.mql5.com/forextsd/smiles/cry_smile.png)
pregunta sobre los indicadores
Hola a todos.
Estoy atascado en una cuestión de programación. ¿Alguien sabe cómo utilizar el resultado de un indicador para cambiar otra configuración? Por ejemplo, si el stockasti diario estuviera por encima de 20, querría una media móvil de (x). He tratado de conseguir el código de trabajo a continuación, pero para saber infructuoso. Parece que no soy capaz de conseguir el interruptor o el comando if else para trabajar eithor.
double fourhrUP;
double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);
double daystoch20 = 20;
si (daystoch1 > daystoch20) four_hrUP = 5 ;
double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)
Hola a todos.
Estoy atascado en un tema de programación. ¿Alguien sabe cómo utilizar el resultado de un indicador para cambiar otra configuración? Por ejemplo, si el stockasti diario estuviera por encima de 20, querría una media móvil de (x). He tratado de conseguir el código de trabajo a continuación, pero para saber en vano. Parece que no soy capaz de conseguir el interruptor o el comando if else para trabajar eithor.
double fourhrUP;
double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);
double daystoch20 = 20;
si (daystoch1 > daystoch20) four_hrUP = 5 ;
double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)¿Dónde está la variable de su MA?
Tal vez esto podría ayudar
double ma4hr=iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift);
si el cálculo de stoch está en el mismo bucle, digamos "for(int shift=limit-1; shift>=0; shift--)", el código de stoch debería ser
double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,shift+1);
CMIIW
Un poco de ayuda con un indicador - Coder's Please Look
Estoy probando la plataforma de un corredor MT4 que utiliza pips fraccionarios (pipetas) en sus cotizaciones de precios: Por ejemplo en el EURJPY se cotiza como 164.381 en lugar de 164.38 - Esto significa que el spread tiene un decimal como 4.1 pips (en lugar de 4).
¿Puede alguien decirme cómo MODIFICAR el siguiente código para que el Spread se lea correctamente? Ahora mismo un spread de 4.1 pips se leería como 41.0 en el Indicador. Se agradece cualquier ayuda.
Dan
//---- spread
Spread=NormalizeDouble((Ask-Bid)/Point,1);
ObjectSetText("Spread Monitor1", "Spread:", 10, "Arial", labelColor);
ObjectSetText("Spread Monitor2",DoubleToStr(Spread,1),10, "Arial", clockColor);