Ayuda para la definición del turno
4 respuestas
eawNewbie
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
eawNewbie
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 ... ??
Mark Fric
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
eawNewbie
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.
eawNewbie
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
Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)