¡Pide! - página 82

 

Codersguru por favor ayuda

Codersguru

Estoy tratando de escribir una alerta sonora para el indicador Bullspower cuando cruza la línea cero. No tengo experiencia con MQL, pero puse un poco de código de varios otros indicadores. al compilar el código no hay ningún error. aunque la alerta del indicador no funciona ¿podría ayudar para corregirlo o tal vez poner un nuevo código para esta alerta sonora cuando Bullbears cruza la línea cero?

muchas gracias de antemano

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

//| |

//| |

//| |

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

#property copyright "forex-tsd"

#property link "https://www.forex-tsd.com"

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Crimson

#property indicador_nivel1 0

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double valbull[];

double valbear[];

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

//| Función de inicialización de los indicadores personalizados ||.

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

int init()

{

IndicatorBuffers(3);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexDrawBegin(0,2);

SetIndexLabel(0, "ExtMapBuffer1");

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 4);

SetIndexDrawBegin(1,2);

SetIndexLabel(1, "ExtMapBuffer2");

//---- indicadores

//----

return(0);

}

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

//| Función de desinicialización de los indicadores de Custor ||

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

int deinit()

{

//---- TODO: añada su código aquí

//----

return(0);

}

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

//| Función de iteración del indicador personalizada ||

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

int inicio()

{

int desplazamiento,counted_bars=IndicadorContado();

double valbear[], valbull[];

//---- comprobar posibles errores

if(counted_bars<0) return(-1);

//---- se vuelve a contar la última barra contada

if(counted_bars>0) counted_bars--;

shift=Barras-1;

while(shift>=0)

{

valbull[shift]=iBullsPower(NULL, 0, 13,PRICE_CLOSE,0);

valbear[shift]=iBearsPower(NULL, 0, 13,PRICE_CLOSE,0);

si (valbull[shift]>0)

{

ExtMapBuffer1[shift]=valbull[shift];

ExtMapBuffer2[shift]=0;

}

si no

{

ExtMapBuffer2[shift]=valbull[shift];

ExtMapBuffer1[shift]=0;

}

shift--;//

}

//---- módulo de alerta

#define SEÑAL_BAR 1

//---- Variables estáticas donde se almacenan la última hora de la barra

//---- y la última dirección de la alerta se almacenan

static int PrevSignal = 0, PrevTime = 0;

//---- Si la barra seleccionada para ser analizada no es una barra cero,

// no tiene sentido comprobar la alerta

//---- varias veces. Si no se empieza a formar una nueva barra, salga.

if(SIGNAL_BAR > 0 && Time[0] <= PrevTime )

return(0);

//---- Marcar que esta barra fue comprobada

PrevTime = Tiempo[0];

if(PrevSignal <= 0)

{

if(valbull[SIGNAL_BAR] > 0 )

{

PrevSignal = 1;

Alert("BullChannell_positiv (", Symbol(), ", ", Period(), ") - BUY!!!");

}

}

if(PrevSignal >= 0)

{

if(valbull[SIGNAL_BAR] < 0 )

{

PrevSignal = -1;

Alert("BearChannell_negativ (", Symbol(), ", ", Period(), ") - VENDER!!!");

}

}

//---- fin del módulo de alerta

//----

return(0);

}

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

 

¿Cómo utilizar la función para diferenciar entre órdenes abiertas y órdenes pendientes?

¿Cómo utilizar la función para diferenciar entre órdenes abiertas y órdenes pendientes?

Gracias.

 
vntb:
¿Cómo utilizar la función para diferenciar entre órdenes abiertas y órdenes pendientes? Gracias.

Comprueba el OrderType() :

OrderType() == OP_BUY //Orden de compra (abierta)

OrderType() == OP_SELL //Orden de venta (abierta)

OrderType() == OP_BUYLIMIT //Orden de compra limitada (pendiente)

OrderType() == OP_SELLLIMIT //Orden de límite de venta (pendiente)

OrderType() == OP_BUYSTOP //Orden de compra limitada (pendiente)

OrderType() == OP_SELLSTOP //Orden de stop de venta (pendiente)

 

iMAOnArray en EA

Hola amigos,

Estoy tratando de hacer un EMA basado en cruces de medias móviles en indicadores (por ejemplo, CCI, Fuerza, RSI). Sin embargo, no consigo entender cómo declarar un array y ejecutar la función iMAOnArray para hacer las variables.

Por ejemplo, en el código de abajo quiero poner los datos del RSI para el gráfico en un buffer y luego utilizar los datos para producir una media móvil con la que desencadenar las operaciones. ¿Qué estoy haciendo mal?

Gracias por cualquier comentario o sugerencia.

otoño

doble RSI[];

ArrayResize(RSI,Bars);

ArraySetAsSeries(RSI,true);

for(int i=Barras; i>=0; i--)

{

RSI = (iRSI(NULL,0,RSIPeriod,RSIPrice,i));

}

double Green0 = iMAOnArray(RSI,0,GreenPeriod,0,GreenPrice,0);

 

Hola

¿alguien tiene el paso-momento con alerta?

Será un gran indicador creo

gracias

¡saludos!

 

Cerrar la operación por nivel

Hola, me gustaría saber cómo cerrar la operación cuando el precio alcanza cierto nivel. Por ejemplo, 55 puntos por encima de la línea MA. Traté de incluir la MA en la parte TakeProfit de OrderSend, pero probador de rechazar mi EA con: "algo inválido" mensaje de error. Gracias.

 
Sendra:
Hola, me gustaría saber cómo cerrar la operación cuando el precio alcanza cierto nivel. Digamos, 55 puntos por encima de la línea MA. Traté de incluir la MA en la parte de TakeProfit de OrderSend, pero probador de rechazar mi EA con: "algo inválido" mensaje de error. Gracias.

En primer lugar, obtenga la media móvil:

double MA = iMA(...);

luego calcule el TakeProfit así

double TP = MA + (55*Punto); // o TP = MA-(55*Punto); en el caso de Venta.

 

¡Funciona!

Gracias, CodersGuru. Sí que funciona. Pero también me hace pensar: Si puedo mover el take profit a un cierto nivel que no es estático, puedo hacer lo mismo con mi stoploss (sin usar trailingstop).

Y lo he intentado.

Funcionó, con mal resultado. Por lo tanto, supongo que tengo que hacer con trailingstop. ¿Es eso correcto? (Eso sí, aún no he aprendido a codificar el trailingstop).

Gracias.

 

Trailing stop interno

Sendra:
Gracias, CodersGuru. Sí que funciona. Pero también me hace pensar: Si puedo mover el take profit a un cierto nivel que no es estático, puedo hacer lo mismo con mi stoploss (sin usar trailingstop).

Y lo intenté.

Funcionó, con mal resultado. Así que, supongo que tengo que hacer con trailingstop. ¿Es eso correcto? (Eso sí, aún no he aprendido a codificar el trailingstop).

Gracias.

Hice algo así para un trailing stop interno: (este es un ejemplo para una orden larga) Parece que funciona. Espero que esto ayude.

extern int Trailing_Stop=20;

static double Trailing_Long;

bool Read_Long_Open;

if (Inserte su decisión de entrada larga)

{

Función Ordersend() aquí

Read_Long_Open=true;

}

si (Read_Long_Open==true)

{

if(OrderSelect(T_1L, SELECT_BY_TICKET)==true)

{

Trailing_Long=OrderOpenPrice();

Print(" Trailing_Long =",Trailing_Long);

Read_Long_Open=false;

}

}

if (Read_Long_Open==false)

{

if (Trailing_Long < Bid)

{

Trailing_Long=Bid;

Print("Trailing_Long ajustado =",Trailing_Long);

}

}

if (Oferta <= Trailing_Long-Trailing_Stop*Punto)

{

Función OrderClose()

Print("Orden larga cerrada");

}

 

Gracias

Hola, Wolfe,

Probé tu código, pero obtuve un resultado más negativo. Por favor, no preguntes por qué, porque tampoco sé la respuesta. Eso sí, todavía estoy en la fase de golpear y correr en la codificación. Pero gracias de todos modos, su código me había dado suficiente inspiración para escribir el mío propio con suficiente resultado para mí.

Así que, gracias.

Razón de la queja: