[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 53

 

Me he dado cuenta de este matiz cuando prescribo una huella en mi EA, a saber:

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);

Imprimir ("+++++++++++++", Arriba);

el Asesor Experto muestra el siguiente resultado - ++++++++++++++ 2147483647. Veo el mismo número para los buffers de subida y bajada. Por favor, indique de qué tipo de código se trata. ¿Y cómo "obtener" el valor de Ikastom exactamente cuando aparece la flecha?

 

Pido un poco de ayuda a los entendidos: por favor, aconsejen el código correcto para crear un Asesor Experto/Utilidad cuyo algoritmo sea el siguiente:

- la apertura de una operación doble en UNA dirección (lotes 0,1 y 0,1) se realiza en el momento del cruce de baja (venta) / alta (compra) de la última vela formada en el gráfico actual / marco de tiempo actual con una parada cerca de la alta / baja de la vela, en el cruce de los cuales abrió una transacción determinada y la colocación en el mismo punto de orden pendiente de doble acuerdo en una dirección con los lotes, tales como 0,2 y 0,1.

 

Pregunta:

Hay un código

int inicio()

if (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==TimeSeconds(TimeCurrent())

{+ algunas condiciones

A continuación, se abre el pedido

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Buy order opened ",Ticket);

return;}

Pero si en este momento no hay ninguna garrapata no se activa

Pero si le doy más tiempo para pensar puede abrir varios pedidos.

Debería tener un solo pedido sin prestar atención a los pedidos ya abiertos.

Por favor, aconséjeme qué hacer

 
v2812:

Me he dado cuenta de este matiz cuando prescribo una huella en mi EA, a saber:

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);

Imprimir ("+++++++++++++", Arriba);

el Asesor Experto muestra el siguiente resultado - ++++++++++++++ 2147483647. También veo el mismo número para los buffers de subida y bajada. Por favor, indique de qué tipo de código se trata. ¿Y cómo "obtener" el valor de Ikastom exactamente cuando aparece la flecha?


Intente pasar los valores del indicador no a través de iCustom() sino a través de las variables globales del terminal. Estos son los que se pueden ver por F3. La cuestión es que no es una situación extraña cuando es la única forma normal de transmisión de datos. He tenido casos así.

Es muy posible que en su indicador algunos tipos de flechas se dibujen a través del buffer del indicador, mientras que otros se crean como objetos. Esta es la única razón por la que puede no haber precios de flecha en la ventana de datos - los datos se emiten a esta ventana desde los buffers de los indicadores.

 
palesandr:

Pregunta:

Hay un código

int inicio()

if (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==TimeSeconds(TimeCurrent())

{+ algunas condiciones

A continuación, se abre el pedido

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Buy order opened ",Ticket);

return;}

Pero si en este momento no hay ninguna garrapata no se activa

Pero si le doy más tiempo para pensar puede abrir varios pedidos.

Debería tener un solo pedido sin prestar atención a los pedidos ya abiertos.

Por favor, aconséjeme qué hacer


El código del EA se activa SÓLO cuando llega un nuevo tick. Se abre más de una orden porque en el siguiente tick la señal de configuración también es verdadera y no se comprueba el número de órdenes. Hay que recalcular los pedidos.
 
drknn:


Intente pasar los valores de los indicadores no a través de iCustom(), sino a través de variables de nivel global del terminal. Estos son los que se pueden ver por F3. La cuestión es que no es una situación extraña cuando es la única forma normal de transmisión de datos. He tenido situaciones de este tipo.

Es posible que en su indicador algunos tipos de flechas se dibujen a través de un buffer del indicador y otros se creen como objetos. Esta es la única razón por la que puede no haber precios de conjuntos de flechas en la ventana de datos: los datos se emiten a esta ventana desde las memorias intermedias de los indicadores.


¡Muchas gracias! Ahora intentaré recetar como has dicho.
 
palesandr:
Pero si no hay garrapata en este punto, no se activa

y si le das más tiempo para pensar, puede abrir varias órdenes.

Pero sólo necesito uno y no quiero que preste atención a los pedidos que ya están abiertos.

¿Puede decirme qué hacer
?


1. Global datetime last_dt;


2. Hacer la hora correcta

datetime dt=StrToTime(H+": "+M+": "+S);


3.

if (TimeCurrent()>=dt && last_dt<dt) // ha llegado la hora correcta y es el día siguiente

{

// abrir el pedido

if (ticket>0) last_dt=TimeCurrent(); // recuerda la hora de apertura

}

 
v2812:

entonces el EA da el siguiente resultado - ++++++++++++++ 2147483647. Y el mismo número para los buffers de subida y bajada.

2147483647 es la constante EMPTY_VALUE
 

Lo entiendo.

Tengo que ser más específico sobre el recálculo de pedidos. Tal vez un ejemplo (en forma de código) o un enlace .

Lo he probado así

if (Ticket > 0)
Alert ("Opened Buy order ",Ticket);

sleep (10000)
return;}

falló por alguna razón

drknn:

El código del EA se activa SÓLO cuando entra un nuevo tick. La orden abre más de una porque en el siguiente tick la señal de set también es verdadera y no hay comprobación del número de órdenes. Hay que recalcular los pedidos.
 

Quiero que el software ignore la fecha, sólo la hora es importante

¿Funcionarán sus consejos en este caso?

sergeev:


1. Global datetime last_dt;


2. hacer la hora correcta

datetime dt=StrToTime(H+": "+M+": "+S);


3.

if (TimeCurrent()>=dt && last_dt<dt) // es la hora correcta y es el día siguiente

{

//orden abierta

if (ticket>0) last_dt=TimeCurrent(); // recuerda la hora de apertura

}