Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 215

 
AlGuru Por favor, avisa. ¿Cómo especificar en el Asesor Experto que se cierre en la siguiente vela?
datetime Hora[] - Matriz Horaque contiene la hora de apertura de cada barra del gráfico actual.Hora[0] - La hora de apertura de la última barra. Si el OrderOpenTime() es menor queTime[0] - esto significa que la orden fue abierta en la última barra, y de acuerdo con su estrategia, es el momento de cerrar esta orden.
 
STARIJ:
datetime Time[] - Matriz de tiempoque contiene la hora de apertura de cada barra del gráfico actual.Hora[0] - La hora de apertura de la última barra. Si el OrderOpenTime () está abierto en menos que Time[0]- esto significa que la orden fue abierta en la última barra, y de acuerdo con su estrategia, es el momento de cerrar esta orden.
O bien, se ha olvidado y se abrió hace un año, por ejemplo ;)
 
STARIJ:
datetime Time[] - Serie de tiempo, que contiene la hora de apertura de cada barra del gráfico actual.Hora[0] - hora de la última barra abierta . Si el OrderOpenTime() es menor queTime[0] - esto significa que la orden fue abierta en la última barra, y de acuerdo con su estrategia, es el momento de cerrar esta orden.


Gracias. Acabo de resolver el problema con la función iTime. Todavía no soy bueno con las matrices )).

 
AlGuru:


Gracias. Acabo de resolver el problema utilizando la función iTime. Todavía no soy bueno con las matrices )).

Muéstrame cómo lo has resuelto.

Hay algo que quizá no hayas tenido en cuenta:

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Cualquier pregunta de los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos

Artyom Trishkin, 2017.05.25 19:43

STARIJ:
datetime Time[] - Matriz de tiempo, que contiene la hora de apertura de cada barra del gráfico actual.Hora[0] - La hora de apertura de la última barra. Si el OrderOpenTime () esmenor que Time[0]- significa que la orden se abre en la última barra, y de acuerdo con su estrategia, es el momento de cerrar esta orden.

O bien se ha olvidado y se descubrió hace un año, por ejemplo ;)

 
Artyom Trishkin:

Muéstrame cómo lo has resuelto.

Hay algunas cosas que quizá no hayas tenido en cuenta:



OrderOpenTime() < iTime(Symbol(), 0, 0)
 
AlGuru:

OrderOpenTime() < iTime(Symbol(), 0, 0)

¿Y si la hora de apertura del pedido fue hace una semana? Entonces definitivamente no está en la última vela (si el gráfico no es semanal). ¿Debemos cerrarlo también?

Por supuesto, todo depende de los requisitos de tu ST, pero yo iría por el otro lado...

 
Artyom Trishkin:

¿Y si la hora de apertura del pedido fue hace una semana? Entonces definitivamente no está en la última vela (si el gráfico no es semanal). ¿Debemos cerrarlo también?

Por supuesto, todo depende de los requisitos de tu ST, pero yo iría por el otro lado...


Esta es una condición adicional. Una posición debe cerrarse cuando el precio alcanza la línea MA. A veces el precio se abre justo en la línea y abre y cierra posiciones en cada tick. He resuelto este problema cerrando una posición no antes de la siguiente vela.
 

¡Buenos días a todos!

Por favor, aconséjeme cómo codificar la siguiente acción en el probador de estrategias

Idea general

1. orden abierta N -X (volumen = 0,1)

2.Si esta orden se cierra en SL, entonces. para compensar la pérdida, inmediatamente al precio de cierre en SL de una orden N X, abra la orden N - X1 (volumen = 0,3)

TENEMOS QUE HACER.

3 Si la orden (volumen = 0,3) se cierra en SL, sólo se recordará el valor de la hora de apertura de la orden N - X para compensar las pérdidas con las que se abrió.

Sé cómo abrir ambas órdenes, pero no encuentro el camino hasta el final, cómo memorizar el valor de la hora para una orden con un volumen de 0,1 lotes que se cerró en el SL.

NOTA: Esto está relacionado con los cierres de órdenes en el mismo tick.

A veces se cierra más de una orden con el volumen de 0,1 y 0,3 en un solo tick.

Si 3 órdenes de 0,1, por ejemplo, se cierran en un solo tick en un SL, en lugar de abrir 3 órdenes de 0,3. - sólo se abre un pedido de 0,3 lotes

En este caso si cierro sólo 1 orden de 0,3 lotes en el SL, no obtendré valores de la hora cuando se abran dos órdenes de 0,1 lotes que compensen sus pérdidas.

Es decir, necesito que se abran 3 órdenes de 0,3 lotes en este caso, no una.


A veces, 3 órdenes de 0,3 lotes serán cerradas por un SL en un solo tick, a pesar de que sus correspondientes órdenes de 0,1 lotes fueron abiertas en diferentes ticks (pero a un solo precio).

En este caso, el programa guarda el valor correcto sólo para una última orden de 0,1 lotes.

Necesito que el programa guarde el valor de la hora de cada orden (0,1 lote) cerrada por SSL.


Aquí está mi código, que tenemos que modificar.

Gracias por su ayuda.

int  A2;
int A1;
int A;
int start()                                             
{                                               
int ot = OrdersTotal();                                         
int Ht = OrdersHistoryTotal();
                                                
                                                
if(Bid == iOpen(NULL,PERIOD_H1,0))
if ( A!= Hour() )
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
A = Hour();
}                                               
//**************************************************************************************
int Счет=0, Номер=OrdersHistoryTotal()-1;
//int A1=0;
  for( ; Номер>=0; Номер--)
  {
    if(!OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY)) continue;
    A1=OrderOpenTime();
    if(OrderProfit()>=0) break;
    Счет++;
    if(Счет ==1&&A2!=OrderOpenTime())
    {
    A2=OrderOpenTime();
     OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
    }
  }
//************************************************************************************** 
return;
}

Este es un ejemplo de una situación en la que se cierran varias órdenes en un solo tick

        08:51:38.906    2017.03.27 13:09:44  Tester: stop loss #200  at 1.08858 (1.08856 / 1.08858)
2       08:51:38.906    2017.03.27 13:09:44  1 = 1 = 1 = 1 EURUSD,M1: open #214  sell 0.30 EURUSD at 1.08856 sl: 1.09258 tp: 1.08658 ok
0       08:51:38.906    2017.03.27 13:10:28  Tester: stop loss #192  at 1.08879 (1.08877 / 1.08879)
0       08:51:38.906    2017.03.27 13:10:28  Tester: stop loss #193  at 1.08879 (1.08877 / 1.08879)
2       08:51:38.906    2017.03.27 13:10:28  1 = 1 = 1 = 1 EURUSD,M1: open #215  sell 0.30 EURUSD at 1.08877 sl: 1.09279 tp: 1.08679 ok
0       08:51:38.906    2017.03.27 13:10:29  Tester: stop loss #194  at 1.08880 (1.08878 / 1.08880)
 
AlGuru:

Esta es una condición adicional. Una posición se cierra cuando el precio cruza la línea МА. A veces el precio se abre justo en la línea y abre y cierra una posición en cada tick. He solucionado el problema cerrando la posición antes de la siguiente vela.

Este problema debería resolverse comprobando si hay, o ha habido, una posición abierta y cerrada en esta misma barra.

De lo contrario, lo amontonarás todo. La función de señal debe enviar señales, mientras que la función de negociación debe comprobar ya la validez de la señal.

 

Hola. ¿Por qué los pares de divisas euro vs usdmuestran 149,16325 en lugar de 1,0616?


Razón de la queja: