Ayuda a la codificación - página 337

 
alpha24:
Hola señor Mladen,

Después de mucho tiempo les pido por favor que codifiquen Bollinger Band en MA. Lo mismo que el indicador MA en MA. en una ventana separada. La media móvil no es necesaria para visualizarla en la ventana del indicador. BB con desviación decimal (0.01), EMA o SMA forma. ¿Podría hacer como de costumbre?

Gracias de antemano

alfa24

Usted no necesita un nuevo indicador para que

Utilice cualquier ma que está en una ventana separada ya, y luego sólo tienes que arrastrar las bandas de bollinger a esa sub-ventana y elegir los datos del indicador anterior como un campo de precio

 
mladen:
alpha24

No se necesita un nuevo indicador para eso

Utilice cualquier ma ...

Sí señor, pero el problema es que no hay opción para la desviación en decimales y otro es que si trato de usar más indicadores en la misma ventana hay confusión en los datos anteriores y los primeros datos. Así que por favor

 

Hola,

No estoy seguro, si el maillink.dll funciona con build > 600.

He probado el maillink.dll con gmx y googlemail y siempre me sale "-2"

de la función MailInit(string,int,string,string); de vuelta :-(

También probé con el xpMail.dll de codersguru y se me bloquea la cuenta de metatrader, ¿alguien conoce otra posibilidad de enviar un correo desde un EA a dos direcciones de correo diferentes?

 
sunshineh:
Hola,

No estoy seguro, si el maillink.dll funciona con build > 600.

He probado el maillink.dll con gmx y googlemail y siempre me sale "-2"

de la función MailInit(string,int,string,string); de vuelta :-(

También he probado el xpMail.dll de codersguru, pero me está fallando la cuenta de metatrader, ¿alguien conoce otra posibilidad de enviar un correo desde un EA a dos direcciones de correo diferentes?

Las partes de la cadena son el problema.

El antiguo metatrader 4 utilizaba cadenas ANSI. Han cambiado eso a cadenas unicode. Las cadenas Unicode utilizan 2 bytes por carácter, mientras que ANSI utiliza sólo 1 byte por carácter. Es por eso que usted está teniendo problemas - dlls están recibiendo las cadenas que son ilegibles para ellos

 

Por favor, corrija el indicador que necesita para poner la flecha en lugar de cuadrados.

Archivos adjuntos:
.........png  141 kb
.......png  30 kb
tro_bias_ez.ex4  12 kb
 
DMNIK:
Por favor, corrija el indicador que necesita para poner la flecha en lugar de las plazas.

DMNIK

El archivo ex4 no puede ser editado y alterado

 

Gracias por la clara explicación.

¿Entonces debería funcionar, si cambio cada cadena a unicode, antes de llamar a las funciones de la dll?

¿Existen ya funciones para cambiar ANSI a unicode y unicode a ANSI?

 

¿O no funciona porque la cadena Unicode está en un array?

Otra pregunta:

¿Cómo puedo reproducir más archivos

PlaySound-wav en línea?

Lo he intentado con Sleep() entre, pero no funciona :-(

 
sunshineh:
O es que no funciona porque la cadena Unicode está en un array?

Otra pregunta:

¿Cómo puedo reproducir más archivos

PlaySound-wav en línea?

He probado con Sleep() entre, pero no funciona :-(

sunshineh

Lógicamente son lo mismo: matrices de caracteres. Excepto que el carácter ANSI ocupa 1 byte mientras que el carácter Unicode ocupa 2 bytes. Se hizo así para incluir todos los distintos idiomas del mundo (cuando se inventó Unicode - nada que ver con metatrader). Ahora, si la dll está esperando ANSI y recibe una cadena unicode la interpretará erróneamente (y viceversa). Si tu dll está usando dlls tienes que convertir las nuevas cadenas a un array explícito de unsigned chars (usando StringToShortArray() para que sea accesible a la dll ANSI) y el retorno debe ser convertido a una cadena usando CharArrayToString() (para que sea accesible a metatrader)

________________________

En cuanto al sueño: la función Sleep() está desactivada en los indicadores, sólo funciona en los EAs. Siempre ha sido así (no es una novedad de un nuevo metatrader).

Además, metatrader está ejecutando órdenes en una paz de código de forma secuencial. Es decir, no puede empezar a ejecutar un archivo de sonido y luego, sin que se termine, pasar a ejecutar otro. También, hasta donde yo sé, están limitando el tiempo de duración del archivo de sonido (con el fin de evitar la congelación de la terminal - como usted probablemente ha notado, cosas como las alertas y los sonidos están centralizados - ver cuando los diferentes gráficos de emisión de alerta al mismo tiempo - que es una sola ventana que se ve)

Ahora podría seguir y seguir, pero todo el problema de metatrader es que no resolvieron adecuadamente la ejecución de rutinas asíncronas (en realidad no tiene idea de ello) y eso trae un montón de limitaciones

 

Comprobar si las últimas órdenes cerradas fueron rentables

Hola,

Me gustaría comprobar si mis tres últimas operaciones de venta o compra cerradas fueron rentables, y cambiar un valor de cadena en función de ello.

Tengo este código (MT4):

for(int i=(OrdersHistoryTotal()-1);i>=0;i--);

{

OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==BUY)

{

//for buy order

if(OrderType()==OP_BUY && OrderProfit()>0) last=1;

if(OrderType()==OP_BUY && OrderProfit()<0) last=0;

}

}

for(int j=(OrdersHistoryTotal()-1);j>=0;j--);

{

OrderSelect(j, SELECT_BY_POS,MODE_HISTORY);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==SELL)

{

//for sell order

if(OrderType()==OP_SELL && OrderProfit()>0) last2=1;

if(OrderType()==OP_SELL && OrderProfit()<0) last2=0;

}

}

Pero no me funciona.

¿Cómo debo modificarlo?

Gracias por la ayuda.