¡Pide! - página 173

 

Cómo solucionar la falta de estructura de datos de tipo mixto

codersguru:
Hola amigos,

Tengo muchos mensajes privados pidiéndome ayuda con algunos trozos de código.

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

Hola,

Me gustaría aprovechar su invitación para plantear el siguiente problema.

Cuál sería la mejor solución para almacenar y ordenar una lista de símbolos en función de sus cambios de precio ya que no se puede utilizar una datastructure de tipo mixto como: EURUSD->1.29, USDGBP->0.22 ?

No hay enum y no hay estructuras de datos de tipo mixto que puedan contener una cadena y un valor doble relacionado en mql4. Las soluciones que se me ocurren son o bien utilizar un fichero, pero eso requeriría una actividad de lectura y escritura en disco casi constante. O utilizar tres arrays; 1 para la lista de símbolos, uno para el almacenamiento y seguimiento de los valores del lugar del índice y otro para los valores reales.

Parece que uno tiene que codificar alrededor de un problema muy básico (simple). Lo único que me gustaría es comparar todos los pares de euros entre sí para la fuerza relativa. ¿Cómo resolvería esto, qué estructura de datos recomendaría?

¡Gracias por cualquier respuesta o indicación a este novato !

Bibberpool

 

Búsqueda de indicadores de fuerza relativa y correlación

liverpool:
Hola,

¿Cuál sería la mejor solución para almacenar y ordenar una lista de símbolos en función de sus cambios de precio ya que no se puede utilizar una estructura de datos de tipo mixto como: EURUSD->1.29, USDGBP->0.22 ?

...

Parece que uno tiene que codificar alrededor de un problema muy básico (simple). Lo único que me gustaría es comparar todos los pares de euros entre sí para la fuerza relativa. ¿Cómo resolverías esto, qué estructura de datos recomendarías?

¡Gracias por cualquier respuesta o indicaciones a este novato ! Bibberpool

Hola Bibberpool,

Busca en este sitio de Forex TSD indicadores de Fuerza Relativa e indicadores de Correlación...

Este tipo de indicadores están diseñados para analizar diferentes pares y precios y sus fuerzas relativas.

Puede que encuentres buenos ejemplos para lo que quieres hacer.

Espero que esto te ayude,

Robert

 

Gracias por su respuesta

cosmiclifeform:
Hola Bibberpool,

Busque en este sitio de Forex TSD indicadores de Fuerza Relativa e indicadores de Correlación...

Este tipo de indicadores están diseñados para analizar diferentes pares y precios y sus fuerzas relativas.

Puede que encuentres buenos ejemplos para lo que quieres hacer.

Espero que esto te ayude,

Robert

Hola, gracias por tu respuesta y ciertamente buscaré en los hilos sugeridos. Sin embargo, hay tanto código alrededor.

Mientras tanto, he hecho un pequeño prototipo en C. Sólo tomé una ordenación de inserción básica ya que los datos consisten sólo en pequeños conjuntos y actualicé esa rutina para actualizar una matriz de cadenas en consecuencia.

Lo trasladaré (copiar/pegar) a mi primer programa en mql4 a finales de esta semana. Aquí está el código, tal vez sea útil para otros o alguien quiera comentarlo para crear algo mejor.

#include

int main(void) {

int max = 5;

int array[5] = { 3, 5, 2, 1, 4 };

char *symbl[5] = { "EURUSD", "EURGBP", "EURJPY", "EURCHF", "EURCAD" };

int idx = 0;

int swp = 0;

int tmp = 0;

char *tmpsymb = NULL;

printf("--- before\n");

for(idx = 0; idx <= max - 1; idx++) {

printf("%d - %s\n", array, symbl);

}

for(idx = 1 ; idx <= max - 1; idx++) {

swp = idx;

while(swp > 0 && array[swp] < array[swp - 1]) {

tmp = array[swp];

tmpsymb = symbl[swp];

array[swp] = array[swp - 1];

symbl[swp] = symbl[swp - 1];

array[swp - 1] = tmp;

symbl[swp - 1] = tmpsymb;

swp--;

}

}

printf("--- after\n");

for(idx = 0; idx <= max - 1; idx++) {

printf("%d - %s\n", array, symbl);

}

return 0;

}

el programa debe imprimir:

--- antes

3 - EURUSD

5 - EURGBP

2 - EURJPY

1 - EURCHF

4 - EURCAD

--- después

1 - EURCHF

2 - EURJPY

3 - EURUSD

4 - EURCAD

5 - EURGBP

 

Buscando indies del autor Kravchuk

Hola Comunidad,

Estoy buscando indies del autor Kravchuk, que diseña indies para vender. Yo estaba dispuesto a buyu pero no podemos recomcile en la forma de pago (no cantidad!?). ¿Alguien tiene sus indies ft.dejavu, ft.rainbow,barstatline,diver,linerenko? Agradecería su ayuda. Gracias

 
bershk:
Hola Comunidad, estoy buscando indies del autor Kravchuk, que diseña indies para vender. Estaba dispuesto a comprarlos pero no podemos recomendar la forma de pago (¡no la cantidad!). ¿Alguien tiene sus indies ft.dejavu, ft.rainbow,barstatline,diver,linerenko? Agradecería su ayuda. Gracias

Hola bershk

Si su solicitud no es obsoleta todavía podemos ayudar aquí - hemos trabajado con algunos de estos indicadores.

Por favor, tenga en cuenta que debe comprar la licencia del autor y no proporcionamos ningún material descompilado u obtenido ilegalmente.

Si usted está interesado en comprar - aquí están los precios actuales del autor:

Dejavu - $20; Rainbow - $15; Barstatline - $10; Diver - $20; LineRenko - $15.

Si necesita ayuda para comprarlos por favor escríbanos a info@raitsoft.com, le ayudaremos a comprar la licencia sin ninguna comisión.

 

hola amigos ...................

he empezado a aprender a programar en mql4, y para empezar estoy analizando idicadores y ea .

Tengo el indicador "daily_close _line" y he mirado el código y me han salido estas dos líneas de código que no tengo ni idea de lo que están haciendo y cómo funcionan.

Si no se puede, se puede ver el código y decir lo que está pasando.

gracias de antemano.

eran

//*

//* my_DailyOpen_indicator

//*

//* Revision 1.1 2005/11/13 Midnite

//* Initial DailyOpen indicator

//* based pm

//*

#property copyright "Midnite"

#property link "me@home.net"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

#property indicator_style1 2

#property indicator_width1 1

double TodayOpenBuffer[];

extern int TimeZoneOfData= 0;

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

//| Custom indicator initialization function |

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

int init()

{

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,TodayOpenBuffer);

SetIndexLabel(0,"Open");

SetIndexEmptyValue(0,0.0);

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int lastbar;

int counted_bars= IndicatorCounted();

if (counted_bars>0) counted_bars--;

lastbar = Bars-counted_bars;

DailyOpen(0,lastbar);

return (0);

}

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

//| |

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

int DailyOpen(int offset, int lastbar)

{

int shift;

int tzdiffsec= TimeZoneOfData * 3600;

double barsper30= 1.0*PERIOD_M30/Period();

bool ShowDailyOpenLevel= True;//<<<<---------- thise line-------------------------------

// lastbar+= barsperday+2; // make sure we catch the daily open

lastbar= MathMin(Bars-20*barsper30-1, lastbar);//<<<<-------------------thise line-----------------------

for(shift=lastbar;shift>=offset;shift--){

TodayOpenBuffer[shift]= 0;

if (ShowDailyOpenLevel){

if(TimeDay(Time[shift]-tzdiffsec) != TimeDay(Time[shift+1]-tzdiffsec)){ // day change

TodayOpenBuffer[shift]= Open[shift];

TodayOpenBuffer[shift+1]= 0; // avoid stairs in the line

}

else{

TodayOpenBuffer[shift]= TodayOpenBuffer[shift+1];

}

}

}

return(0);

}
 

ERAN123

Hace lo siguiente: encuentra el precio de apertura diario (teniendo en cuenta TimeZoneOfData como cambio de zona horaria) y dibuja esa línea a través de ese día. Aquí hay una imagen en la que es fácil ver cómo se dibuja el mismo precio de apertura diaria a través del día:

ERAN123:
he empezado a aprender a programar en mql4, y para empezar estoy analizando idicadores y ea.

Tengo el indicador "daily_close _line" y he mirado el código y he sacado estas dos líneas de código que no tengo ni idea de lo que están haciendo y cómo funcionan.

Si no se puede hacer nada, se puede hacer un seguimiento del código y decirme qué está pasando.

gracias de antemano.

eran

//*

//* my_DailyOpen_indicator

//*

//* Revision 1.1 2005/11/13 Midnite

//* Initial DailyOpen indicator

//* based pm

//*

#property copyright "Midnite"

#property link "me@home.net"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

#property indicator_style1 2

#property indicator_width1 1

double TodayOpenBuffer[];

extern int TimeZoneOfData= 0;

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

//| Custom indicator initialization function |

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

int init()

{

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,TodayOpenBuffer);

SetIndexLabel(0,"Open");

SetIndexEmptyValue(0,0.0);

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int lastbar;

int counted_bars= IndicatorCounted();

if (counted_bars>0) counted_bars--;

lastbar = Bars-counted_bars;

DailyOpen(0,lastbar);

return (0);

}

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

//| |

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

int DailyOpen(int offset, int lastbar)

{

int shift;

int tzdiffsec= TimeZoneOfData * 3600;

double barsper30= 1.0*PERIOD_M30/Period();

bool ShowDailyOpenLevel= True;//<<<<---------- thise line-------------------------------

// lastbar+= barsperday+2; // make sure we catch the daily open

lastbar= MathMin(Bars-20*barsper30-1, lastbar);//<<<<-------------------thise line-----------------------

for(shift=lastbar;shift>=offset;shift--){

TodayOpenBuffer[shift]= 0;

if (ShowDailyOpenLevel){

if(TimeDay(Time[shift]-tzdiffsec) != TimeDay(Time[shift+1]-tzdiffsec)){ // day change

TodayOpenBuffer[shift]= Open[shift];

TodayOpenBuffer[shift+1]= 0; // avoid stairs in the line

}

else{

TodayOpenBuffer[shift]= TodayOpenBuffer[shift+1];

}

}

}

return(0);

}
Archivos adjuntos:
daly_open.gif  30 kb
 
mladen:
ERAN123

Hace lo siguiente: encuentra el precio de apertura diario (teniendo en cuenta TimeZoneOfData como cambio de zona horaria) y dibuja esa línea a través de ese día. Aquí hay una imagen en la que es fácil ver cómo se dibuja el mismo precio de apertura diaria a través del día:

sory i ment esta línea :

double barsper30= 1.0*PERIOD_M30/Period();

y esta otra también.

lastbar= MathMin(Bars-20*barsper30-1, lastbar);

¿para qué sirve el "20" y el "-1" y cómo funcionan las 2 líneas juntas?

muchas gracias.

 

Originalmente escribí algo más.

Olvídese de esas líneas : son, por alguna razón tratando de limitar el inicio donde los valores se empiezan a calcular (y que debe ser algunas horas de la barra más antigua en el gráfico). Lo que el codificador quería conseguir con ello quizá sólo lo sepa él

ERAN123:
sory i ment esta línea :

double barsper30= 1.0*PERIOD_M30/Period();

y este también

lastbar= MathMin(Bars-20*barsper30-1, lastbar);

¿para qué sirve el "20" y el "-1" y cómo funcionan las 2 líneas juntas?

gracias a ti, un loot.
 

gracias mi amigo .....you me ayudó