¡Pide! - página 163

 
jizhong68:
Estimado Gurú,

Estoy usando un array de dos dimensiones, digamos, ZigZag[2][100]. y quiero ordenar por la primera dimensión. Utilizo la siguiente función

ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND);

pero parece que no ordena ni por la primera dimensión, ni por la segunda. ¿hay alguien que me pueda ayudar?

Muchas gracias

La documentación de MQL dice que ArraySort ordena por la primera dimensión, si no obtienes los resultados correctos, publica tu entrada y salida del array.

Escribir una simple función quicksort no te llevaría mucho tiempo. Crear un nuevo array, almacenar los resultados ordenados, luego hacer un bucle for para buscar ZigZag y copiar la segunda dimensión. Ineficiente, probablemente, pero hace el trabajo.

 

aquí está el código

beckham.is.619:
La documentación de MQL indica que ArraySort ordena por la primera dimensión, si no obtienes los resultados correctos, publica tu entrada y salida del array. Escribir una simple función quicksort no te llevará mucho tiempo. Crear un nuevo array, almacenar los resultados ordenados, luego hacer un bucle for para buscar ZigZag y copiar la segunda dimensión. Ineficiente, probablemente, pero hace el trabajo.

Gracias por su respuesta.

Quiero calcular y mostrar las líneas de soporte y resistencia en un gráfico. el algoritmo de lo que es la búsqueda de 100 ZigZag en la historia y contar el peso de cada ZigZag. ¿cómo calcular el peso de cada ZigZag? Para cada ZigZag, trato de buscar en toda la matriz para encontrar la cantidad de otros ZigZags cuyo valor es de 5 Puntos cerca de este determinado ZigZag, digamos, si un determinado ZigZag es 1.5000, entonces quiero encontrar todos los otros ZigZags que la distancia de estos dos ZigZag está dentro de 5 Puntos, si es así, agrego 1 cuenta a este determinado ZigZag, y hago eso para todos los 100 ZigZags.

Cuando termino esto, trato de ordenar todos estos ZigZags por la dimensión del contador. como se puede encontrar en el indicador. pero he intentado mucho por la impresión del valor antes y después de la función ArraySort(0 fue excuted. encontrar ninguna diferencia.

Yo publico el indicador para su referencia.

Gracias de antemano.

aquí está el código para el Indicador:

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

//| Risisstancia y Soporte.mq4 ||||||||||

//| Derechos de autor ?200 ||

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

#property copyright "Copyright ?2006, Nick Bilak"

// pirateado en un canal ind. por t_david en algún momento a principios de 2007

#property indicator_chart_window

extern int Gap = 5;

extern int Profundidad = 24;

extern int Deviation=5;

extern int BackStep=3;

extern int BackStart=288;

int ZigN=100;

double ZigZag[2][100];

int ShowBars = 500;

int dist=24;

int init() {

return(0);

}

int inicio() {

int k,i,j,limit,hhb,llb;

int barras_contadas=IndicatorCounted();

//---- la última barra contada será recontada

if(counted_bars>0) counted_bars--;

ShowBars=Barras_contadas;

FindZigZag();

SoporteDeResistencia();

// for(i=0;i<10;i++)

{

// ObjectDelete("P_Line");

// ObjectCreate("P_Line", OBJ_HLINE,0, CurTime(),Close[0]);

ObjectDelete("RS0");

ObjectCreate("RS0",OBJ_HLINE,0,CurTime(),ZigZag[1][0]);

ObjectDelete("RS1");

ObjectCreate("RS1",OBJ_HLINE,0,CurTime(),ZigZag[1][1]);

ObjectDelete("RS2");

ObjectCreate("RS2",OBJ_HLINE,0,CurTime(),ZigZag[1][2]);

ObjectDelete("RS3");

ObjectCreate("RS3",OBJ_HLINE,0,CurTime(),ZigZag[1][3]);

ObjectDelete("RS4");

ObjectCreate("RS4",OBJ_HLINE,0,CurTime(),ZigZag[1][4]);

ObjectDelete("RS5");

ObjectCreate("RS5",OBJ_HLINE,0,CurTime(),ZigZag[1][5]);

ObjectDelete("RS6");

ObjectCreate("RS6",OBJ_HLINE,0,CurTime(),ZigZag[1][6]);

ObjectDelete("RS7");

ObjectCreate("RS7",OBJ_HLINE,0,CurTime(),ZigZag[1][7]);

ObjectDelete("RS8");

ObjectCreate("RS8",OBJ_HLINE,0,CurTime(),ZigZag[1][8]);

ObjectDelete("RS9");

ObjectCreate("RS9",OBJ_HLINE,0,CurTime(),ZigZag[1][9]);

}

// if (ShowBars >= Bars) ShowBars = Bars;

/*

for (i=0;i<ShowBars;i++) {

b1=0;

b2=0;

b3=0;

b4=0;

b5=0;

b6=0;

b8=0;

hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i-dist/2);

llb = iLowest(Symbol(),0,MODE_LOW,dist,i-dist/2);

si (i==hhb)

b3=Alto+SignalGap*Punto;

si (i==llb)

b4=Low[llb]-SignalGap*Point;

b1=Alto;//+SignalGap*Punto;

b2=Low[llb];//-SignalGap*Point;

}

*/

return(0);

}

//encontrar el diez ZigZag,

void FindZigZag()

{

int i=BackStart;

int ii=0;

int m=0;

int n=0;

while(ii<ZigN)

{

if(iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i)>0.1) //1=High

{

ZigZag[0]=0;

ZigZag[1]=iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i);

// Imprimir("ZigZag: ",ZigZag[1]);

ii++;

}

i++;

}

}

// Encontrar la resistencia y el soporte

void ResistenciaSoporte()

{

int i,n

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

{

for(n=0;n<ZigN;n++)

{

if(MathAbs(ZigZag[1]-ZigZag[1][n])<Punto*Gap)

{

ZigZag[0]++;

}

// Print(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1]);

}

// Print("Fin");

}

ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND);

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

{

// Print(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1]);

}

// Print("Fin");

}

 

¿Puedo hacerle alguna pregunta para el MQL4?

Hola desde Berlín,

Soy nuevo en este foro y he leído el Curso MQL4 de Coders` guru. ¡Muchas gracias por su enseñanza! Ahora quiero probar algunos programas fáciles y ya flopeé ¿Por qué la línea MA no se muestra en mi gráfico principal? Gracias por su ayuda.

#property indicator_chart_window

#property indicador_color1 Rojo

extern int Period_MA = 21;

bool Fact_Up = true;

bool Fact_Dn = true;

int inicio()

{

doble MA;

MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

si (Oferta > MA && Fact_Up == true)

{

Fact_Dn = true;

Fact_Up = false;

Alert("El precio está por encima de la MA(",Period_MA,")."

}

if (Oferta < MA && Fact_Dn == true)

{

Fact_Up = true;

Fact_Dn = false;

Alert("El precio está por debajo de la MA(",Period_MA,")."

}

return(0);

}

 

Hola,

Estoy trabajando en una idea para un indicador personalizado. Necesito saber si esto es posible en un script:

¿Puede MT4 reconocer qué vela está bajo mi ratón en cualquier momento? Así que quiero dibujar una línea horizontal en la apertura o el cierre de una vela determinada (que selecciono haciendo clic o pasando el ratón por encima de), ¿es esto posible?

No he podido encontrar ninguna información sobre esto.

¡Sería de gran ayuda, gracias!

 

Gestor de órdenes/transacciones para EAs

Hola,

¿Alguien conoce una librería MQ4 para la gestión de órdenes/transacciones para EAs? Estoy interesado principalmente en las siguientes dos funcionalidades:

1. Colocación de órdenes stop virtuales : en lugar de utilizar OrderSend(...) aplicada con una orden stop, se utiliza MyOrderSend(...) con los mismos parámetros y el gestor se encargará de todo manteniendo el seguimiento del precio y colocará la orden de mercado cuando el precio toque el stop.

El objetivo principal de esto es superar la carga innecesaria del STOPLEVEL, pero también permitirá las órdenes "en la sombra".

2. El gestor recogerá el estado y las estadísticas de las órdenes pendientes, ejecutadas y terminadas. Usando esta información uno puede implementar estrategias de MM y estrategias de stop extravagantes (por ejemplo, el número de veces que una posición viva ha estado in-the-money puede ser usado para la preservación de beneficios o mecanismos de stop).

He buscado por ahí durante bastante tiempo, así que no espero que exista una librería así en su totalidad, pero si conoces soluciones parciales y fragmentos de código relevantes sería genial.

Saludos,

Trendick

 

Gestorde órdenes/transacciones para EAs

Acabo de descubrir que se ha desarrollado un gestor de órdenes muy bueno en mql5 para permitir posiciones cubiertas. Ver paulsfxrandomwalk blogspot (todavía no se permite publicar enlaces).

No está completo pero es un código muy bonito.

No debe ser fácil, pero aún es posible traducirlo a mql4, ya que uno tiene que rebajar el código OOP de c++ al extremadamente limitado mql4. Parece un gran desperdicio

Así que mi petición de sus enlaces sigue en pie...

 

Líneas MA en el gráfico

ssh95:
Hola desde Berlín,

Soy nuevo en este foro y he leído el Curso MQL4 de Coders` guru. Muchas gracias por sus enseñanzas. Ahora quiero probar algunos programas fáciles y ya flopeé ¿Por qué la línea MA no se muestra en mi gráfico principal? Gracias por su ayuda.

#property indicator_chart_window

#property indicador_color1 Rojo

extern int Period_MA = 21;

bool Fact_Up = true;

bool Fact_Dn = true;

int inicio()

{

doble MA;

MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

si (Oferta > MA && Fact_Up == true)

{

Fact_Dn = true;

Fact_Up = false;

Alert("El precio está por encima de la MA(",Period_MA,")."

}

if (Oferta < MA && Fact_Dn == true)

{

Fact_Up = true;

Fact_Dn = false;

Alert("El precio está por debajo de la MA(",Period_MA,")."

}

return(0);

}

Hola Berliner,

Parece que las rutinas para dibujar las líneas MA en el gráfico faltan en tu código de arriba.

Haz una búsqueda rápida en este foro de TSD para ver muchos buenos ejemplos de indicadores de MA que puedes mirar el código para aprender a dibujar las líneas de MA en el gráfico.

¡Buena suerte... y sigue aprendiendo!

Robert

 

Problema de actualización del indicador MTF

Hola,

Necesito ayuda en este indicador. Su pendiente MTF MACD, pero tiene un problema en la actualización, tengo que cambiar TF para corregirlo.

Ya trate de cambiar

limit=Bars-counted_bars; a limit=Bars-counted_bars/Period();

y también añadiendo Refreshrates();

con ningún resultado.

Así que lo siento, tengo que subir el código en .mql, trate de subir usando la etiqueta php pero es demasiado largo.

También he subido la imagen en el hilo de MTF

Gracias antes chicos.

Archivos adjuntos:
 
codersguru:
Hola amigos,

Tengo un montón de mensajes privados pidiéndome ayuda con algunos trozos de código.

Aquí podéis publicar vuestras preguntas relacionadas con MQL4, y haré lo posible por responderlas.

Codesguru,

no tengo ningún conocimiento de programación. Y necesito que tú o cualquiera me ayude poniendo alarma y alerta (como indicador externo) en este indi execute_line.

Gracias de antemano.

Saludos, Terry

Archivos adjuntos:
 

Waddah Attar scalping

¡Hola!

He encontrado un indicador interesante que está orientado al scalping.

Quiero probarlo pero no imprime ninguna barra después de unos días.

¿Puede ver por favor lo que debe ser editado en el código con el fin de hacer que la impresión de unos pocos miles de barras? Si hay una opción para escribir un número en el meta editor por favor dígame. No he podido encontrar nada.

Gracias por tu tiempo

Xander

waddah_attar_scalping.ex4

waddah_attar_scalping.mq4

Archivos adjuntos:
Razón de la queja: