Respuesta

Ayuda para la definición del turno

4 respuestas

eawNewbie

Cliente, bbp_participant, comunidad, 11 respuestas.

Visitar el perfil

hace 9 años #113451

Tampoco entiendo muy bien lo que quieres conseguir, pero puedes utilizar el parámetro Shift.

 

Shift = 0 significa valor en la barra actual, Shift = 1 significa valor del indicador en la barra anterior y así sucesivamente.

Shift = 9 significa que el valor del indicador retrocede 9 barras.

He citado esto de otro hilo. El hilo no era aplicable a mi problema, pero este post es, así que espero que está bien para citarlo

 

 

Entiendo que shift = 0 significa la barra actual (por ejemplo: barra en curso), lo que no está claro es "valor en la barra actual" ??

 

¿La última afirmación "Shift = 0 significa valor en la barra actual" significa el precio/valor en el momento preciso del evento durante el marco temporal de la barra actual?

 

He estado buscando una definición completa de cambio desde entonces, tanto aquí como en MQL5

 

 

Me encontré con este problema al intentar abrir una posición después de la barra actual es al menos 3 pips más alto que el máximo de la barra anterior.

 

Mientras tanto, ¿funcionará este código como se desea?

 

//Var

Desplazamiento=3

 

//regla

And (High[0] > (High[1] + ConvertToRealPips(Offset))

 

 

gracias

0

eawNewbie

Cliente, bbp_participant, comunidad, 11 respuestas.

Visitar el perfil

hace 9 años #129243

No pude conseguir que la regla de condición anterior funcionara, así que decidí eliminarla y aplicar en su lugar una orden "enter at stop" utilizando este código

 

      // Acción
      sqOpenOrder("NULL", OP_BUYSTOP, getOrderSize(MagicLong, OP_BUYSTOP ), getOrderPrice(MagicLong), "", MagicLong, "OffsetBuy");
 

 

Desafortunadamente esto también falla, así que estoy haciendo algo mal ... ??

0

Mark Fric

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 9 años #129245

si, usando Shift = 0 en High, Low o indicadores obtendrás sus valores en ese momento especificado cuando la función fue llamada.

 

Cuando pruebo tu condición

And (High[0] > (High[1] + ConvertToRealPips(Offset))

 

funciona correctamente, ¿qué es lo que no le funciona? ¿Se abre a horas diferentes de las esperadas?

 

O no se abren las operaciones en absoluto? a continuación, compruebe el registro de errores si no hay algún error, errores de tamaño de comercio son bastante habituales.

Mark
Arquitecto de StrategyQuant

0

eawNewbie

Cliente, bbp_participant, comunidad, 11 respuestas.

Visitar el perfil

hace 9 años #129287

Gracias por su confirmación sobre Shift.

 

Cuando utilizo la regla anterior, la condición no parece cumplirse ya que cada acción después del "entonces" no se analiza. No puedo encontrar ninguna pista de por qué de la lectura de los registros, incluso con verbose = 2 como si no hay ningún error sólo la condición no devuelve true.

 

He eliminado la condición y las operaciones se abren como se esperaba. La condición filtra todas las oportunidades durante el periodo de backtesting, tendré que verificar que la condición existe realmente en el periodo de prueba. Sin la condición obtengo literalmente cientos de operaciones, con la condición resulta en cero operaciones.

 

Si dices que no hay ningún problema con la estructura de la condición, entonces comprobaré manualmente que la condición existe realmente. Tal vez intente cambiar "es mayor que" por "es menor que".

 

¿Qué es más rápido, comprobar la condición dentro de la sentencia "If" o comprobar la condición cambiando el comando "open at market" por "open at stop" y realizar la prueba si se alcanza el stop dentro de la sentencia "then"? He encontrado que al agregar el comando dentro de la construcción "then" la acción no se realiza pero la siguiente acción si se realiza.

0

eawNewbie

Cliente, bbp_participant, comunidad, 11 respuestas.

Visitar el perfil

hace 9 años #129288

Ok he intentado de nuevo y la condición está trabajando

 

no estoy seguro de lo que pasó allí 

gracias

0

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)