Ayuda a la codificación - página 406

 
elfural:
Estimados mrtools y mladen

¿Puede alguien ayudarme? La media móvil de Tom Demark es un indicador clave dentro de mi estrategia, sin embargo, una alarma sería muy útil para cuando se indique un nuevo estante; estaría muy agradecido si se pudiera codificar una alarma en el indicador. Espero su amable ayuda.

Muchas gracias

Elfural, añadí una alarma a la versión que publicaste, y quiero mostrarte una versión corregida por Mladen que puede interesarte desde aquí: https: //www.mql5.com/en/forum/178551/page2 por si acaso añadí alertas a esa versión también.

 

Hola chicos,

Necesito ayuda con la codificación de este indicador. Es un gran indicador aunque retrasa 4-5 velas. Por favor, ayuda.

grail_indic.ex4

Archivos adjuntos:
 
mrtools:
Elfural, he añadido una alerta a la versión que has publicado, y quiero mostrarte una versión corregida por Mladen que puede interesarte desde aquí: https: //www.mql5.com/en/forum/178551/page2 por si acaso he añadido alertas a esa versión también.

Ahora hace exactamente lo que necesitaba.

Muchas gracias por tu gran ayuda.

 

1 operación por señal.Hola MQL pro-coders,

Me pregunto si alguien podría ayudarme. Me gustaría implementar "una operación por señal"

en mi EA. Si el EA alcanza su objetivo de beneficios, es muy posible que el EA abra

otra operación en la misma dirección de la tendencia. Esto puede llevar a una operación perdedora porque

la señal está a punto de cambiar (por favor, vea las capturas de pantalla adjuntas).

¿Cuál sería la mejor manera de implementar la funcionalidad de "una operación por señal"?

Por supuesto, podría aumentar el objetivo de beneficios para evitar que el EA abra otra operación,

pero probablemente no sea la mejor manera.

He tratado de implementar esto pero, el código compila y da una advertencia:

" Compruebe la precedencia de los operadores para un posible error; utilice paréntesis para aclarar la precedencia"

¿Cuál puede ser la mejor manera de implementar esta función?Gracias de antemano.

extern int maxshorttrades = 1;

extern int maxlongtrades = 1;

//+--------------------------+

//| Lógica de la orden / Indicadores ||

//+--------------------------+

if(openOrders<=0)

{

double CCIFilter = iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp = iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

//+-----+

//| BUY ||

//+-----+

for (i=Total de Pedidos()-1;i>=0; i--)

if(OrderType()==OP_BUY<maxlongtrades) break; // Comprueba la posición y las operaciones largas.

{

if(trendc!=trendp)

{

if(trendc==1 && CCIFilter<-80) // código para comprar

OpenBuy();

return(0);

}

openOrders++;

}

//+------+

//| SELL |

//+------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_SELL<maxshorttrades) break; // Comprueba la posición y las operaciones en corto.

{

if(trendc==-1 && CCIFilter>80) // código para vender

{

OpenSell();

return(0);

}

openOrders++;

}

}

//+-----------------+

//| Cerrar Posiciones ||

//+-----------------+

void CheckForClose()

{

RefreshRates();

double CCIFilter_c = iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc_c = iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp_c = iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

for(int i=0;i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!= MAGIC) continue;

if(OrderSymbol() != s_symbol) continue;

//+-----------+

//| Cerrar COMPRA

//+-----------+

if(trendc_c!=trendp_c) // Comprueba la tendencia

{

if(OrderType()==OP_BUY)

{

if(trendc_c==-1 && CCIFilter_c>80) // ¿Venta y filtro CCI?

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);

if(buyClose==false)

{

int ErrorCode = GetLastError();

string ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert= StringConcatenate("Cerrar orden de compra - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("Oferta: ",MarketInfo(s_symbol,MODE_BID)," Lotes: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

break; }

}

}

Archivos adjuntos:
signal1.jpg  19 kb
 

¡Hola!

¿Podría alguien ayudarme con el indicador Línea de Precio Lineal? Estoy tratando de hacer una versión modificada del mismo que reste el máximo del mínimo. Si la baja es mayor que la alta o si la alta es igual al precio de apertura y por lo tanto cero (porque no hay alta) entonces la salida debe ser un valor negativo (la línea en el indicador debe disparar bajo el nivel 0.00) Ahora mismo sigue siendo un número positivo sin importar si la parte alta de la vela es mayor que la parte baja de la vela o no.

Aquí está la versión normal y el indicador de diferencia defectuoso.linear_price_bar.zip

linear_price_bartestdiff.mq4

Gracias de antemano

Archivos adjuntos:
 
tfi_markets:

1 operación por señal.Hola MQL pro-coders,

me pregunto si alguien podría ayudarme.

Me gustaría implementar "una operación por señal"

en mi EA.

Si el EA alcanza su objetivo de beneficios, puede ser que el EA abra

otra operación en la misma dirección de la tendencia.

Esto puede llevar a una operación perdedora porque

la señal está a punto de cambiar (por favor, vea las capturas de pantalla adjuntas)

. ¿Cuál sería la mejor manera de implementar la funcionalidad de "una operación por señal"?

Podría, por supuesto, aumentar el objetivo de beneficios para evitar que el EA abra otra operación,

pero probablemente no sea la mejor manera

.

He intentado implementar esto pero,

el código compila y da una advertencia:

"

Compruebe la precedencia del operador para un posible error; utilice paréntesis para aclarar la precedencia" ¿Cuál puede ser la mejor manera de implementar esta característica?Gracias de antemano.

Prueba con esto :

bool Result;

int openedOrders = 0;

for (i=OrdersTotal()-1; i>=0; i--)

{

Result = OrderSelect(i, SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != MagicNumber) continue;

openedOrders++;

}

if (openedOrders <= 0)

{ .....

 
mrcodix:
¡Hola!

¿Podría alguien ayudarme con el indicador Línea de Precio Lineal? Estoy tratando de hacer una versión modificada del mismo que reste el máximo del mínimo. Si el mínimo es mayor que el máximo o si el máximo es el mismo que el precio de apertura y por lo tanto cero (porque no hay máximo) entonces la salida debe ser un valor negativo (la línea en el indicador debe disparar bajo el nivel 0.00) Ahora mismo sigue siendo un número positivo sin importar si la parte alta de la vela es mayor que la parte baja de la vela o no.

Aquí está la versión normal y el indicador de diferencia defectuoso.linear_price_bar.zip

linear_price_bartestdiff.mq4

Gracias de antemano

mrcodix

El mínimo nunca puede ser mayor que el máximo de la misma barra

 

Sí, lo entiendo, pero lo que me gustaría trazar en mi indicador es la diferencia entre HIGH to OPEN y LOW to OPEN. Si el número absoluto de bajo a abierto es mayor que el número absoluto de alto a abierto, entonces me gustaría que la diferencia entre esos 2 sea negativa para que sea trazada bajo la línea cero. Entonces, ¿cómo puedo hacer que la salida de (High - open)-(Low-open) sea negativa cuando la última es mayor que la primera?

Saludos cordiales

 

Ahora he probado lo siguiente

for(i=0; i<Bars; i++)

{

BarH = Alta-Apertura;

BarL = Low-Open;

BarC = Cierre-Apertura;

if(BarC>0) UpDays += 1;

else if(BarC<0) DownDays +=1;

else if(BarC==0) NeutralDays +=1;

si (BarL > BarH) ExtMapBuffer7 = 0-(BarH-BarL);

else if (BarL < BarH) ExtMapBuffer7 =(BarH-BarL);

Sin embargo, la salida sigue siendo un número positivo, por favor, ayuda.

 
mrcodix:
Sí, lo entiendo, pero lo que me gustaría trazar en mi indicador es la diferencia entre HIGH to OPEN y LOW to OPEN. Si el número absoluto de baja para abrir es mayor que el número absoluto de alta para abrir, entonces me gustaría que la diferencia entre los 2 para ser negativo para que se traza bajo la línea de cero. Entonces, ¿cómo puedo hacer que la salida de (High - open)-(Low-open) sea negativa cuando la última es mayor que la primera?

No estoy seguro de lo que estás tratando de hacer. ¿Quizás esto?

Archivos adjuntos: