Documentación

Aplicaciones

Última actualización el 15. 4. 2020 by Mark Fric

Bloques personalizados

¿Qué son los bloques personalizados?

Los bloques personalizados le permiten crear su propia combinación de bloques y guardarla como bloque personalizado.

Por ejemplo, mire el bloque de señal ya existente en StrategyQuant:

El CCI sube

Esta señal es válida cuando:

CCI(Período)[2] < CCI(Período][1]

donde Periodo es configurable y [2] significa dos compases atrás, [1] significa un compás atrás.

Por lo tanto, es válido cuando el CCI de una barra hacia atrás es mayor que el CCI de dos barras hacia atrás - lo que significa que el valor del CCI está aumentando.

 

¿Cuál es la ventaja de crear combinaciones de bloques personalizadas?

El valor reside en disminuir la aleatoriedad utilizando señales que tengan algún sentido real.

StrategyQuant podría generar condiciones como esta aleatoriamente usando sólo bloques CCI y IsLower (<)pero la probabilidad de generar una condición SIGNIFICATIVA al azar es pequeña si tenemos en cuenta cuántas posibilidades aleatorias existen.

Otra ventaja es que cuando se utiliza el bloque CCI(Period) está subiendo, desde el exterior sólo tiene un parámetro Período que se utilizará en ambos indicadores CCI en la condición.

Usted puede ampliar StrategyQuant mediante la creación de sus propios bloques personalizados como este haciendo un fragmento en código Java. Esta es una buena manera, pero no todo el mundo es un programador.
Por lo tanto, desde SQ Build 127 hay una manera de crear bloques personalizados como este de una manera visual en el editor AlgoWizard sin ningún tipo de codificación.

En esta documentación mostraremos cómo hacerlo exactamente.

 

Paso 1: Defina su nuevo bloque personalizado

En StrategyQuant abra el AlgoWizard (1.), haga clic en Personalice (2.) en la parte superior. A continuación, cambie a Bloques personalizados (3.) tab:

Este es el panel de gestión y edición de bloques personalizados.

Como ejemplo, crearemos un nuevo bloque personalizado que será válido cuando el CCI esté subiendo durante 3 barras consecutivas. En pseudocódigo podemos escribir esta condición como:

CCI(Periodo)[3] < CCI(Periodo) [2] < CCI(Periodo) [1]

 

Haga clic en el botón Añadir bloque . Se abrirá un cuadro de diálogo en el que podremos especificar los parámetros de nuestro nuevo bloque:

Clave de bloqueo

es la clave única (ID) de este bloque. Sólo puede constar de letras y números, sin espacios ni caracteres especiales. Llamaremos a nuestro nuevo bloque CCIRising3Bars.

Nombre del bloque 

es su nombre que veremos en la selección de Building blocks. Lo llamaremos CCI alcista para 3 barras

Tipo de bloque 

es un bloque de tipo. Por ahora se admiten dos tipos:

  • Condición - bloque que devuelve un valor verdadero/falso que se puede utilizar como parte de las condiciones de entrada o salida. Normalmente se trata de una comparación. Los bloques de este tipo serán visibles en la sección Señales de Bloques de construcción.
  • Nivel de precios - Bloque que calcula el nivel de precio que se puede utilizar para las órdenes stop/límite. El bloque de este tipo es visible en la sección Niveles de precios Stop / Límite en la categoría Bloques de entrada Stop / Límite en la configuración de Bloques de construcción.

Haga clic en Guardar y se creará un nuevo bloque personalizado:

Bloque personalizado SQ añadido

Observe que este bloque aún está vacío, hemos creado una definición pero el nuevo bloque aún no tiene contenido.

Añadamos la primera condición al bloque haciendo clic en Añadir otra condición:

Condición de adición de bloque personalizada

Esto abre un diálogo estándar para elegir entre todos los bloques de construcción existentes que conoce del editor AlgoWizard. Busquemos CCI para nuestra primera comparación:

No olvide poner Shift a 3, porque queremos obtener el valor del CCI desde 3 barras atrás. Después de hacer clic en Confirme se crea la primera parte de nuestra condición personalizada:

Ahora haga clic en Es mayor (>) y cambiarlo por Es inferior (<).

A continuación, haga clic en 0 y sustituirlo por CCI(14)[2].

Repita estos dos pasos para añadir una segunda condición CCI(14)[2] < CCI(14)[1].

El resultado debería ser el siguiente:

Esta es una condición completa. Es válida cuando CCI(14) está subiendo durante las últimas 3 barras.

Es posible que haya observado que el periodo del CCI está establecido en un valor fijo de 14.
Si utilizáramos este bloque personalizado en su estado actual, tendría el siguiente aspecto:

Nuestro nuevo bloque personalizado sólo tendría el parámetro obligatorio Chart, y ningún otro parámetro.

Esto significa que el período CCI utilizado en el bloque será siempre 14 - el período será no generados aleatoriamente en StrategyQuant y no podrá configurarlo posteriormente.
Es posible que lo que para algunos parámetros, pero queremos CCI período que se genera aleatoriamente.

Aquí es donde entran en juego los parámetros de bloque personalizados. Hay Parámetros en la parte inferior izquierda:

Parámetros de bloque personalizados
Ahora mismo sólo contiene un parámetro - Gráfico - que es obligatorio para todos los bloques personalizados.
Añadamos un nuevo parámetro Periodo. Haga clic en Añadir parámetro . Esto añadirá un nuevo parámetro a la tabla. Cámbiale el nombre a Periodo y cambia su tipo a periodo:

Puedes nombrar tu parámetro como quieras, y tienes varias opciones para un tipo:

  • gráfico - significa que es un parámetro gráfico. Los indicadores se calculan a partir de datos gráficos, y el parámetro gráfico nos permite a nosotros y a StrategyQuant configurar qué gráfico utilizar.
  • periodo - un tipo especial que debe utilizarse para los periodos de los indicadores. Es un tipo separado porque StrategyQuant necesita saber que este parámetro es un período, por lo que estará limitado por los límites de rango de período establecidos en el generador.
  • turno - otro tipo especial que debe utilizarse para los turnos. Shift es un índice de la historia de las barras. Shift=0 significa barra actual, Shift=1 significa barra anterior, Sift=2 significa dos barras atrás. De nuevo es un tipo separado porque StrategyQuant necesita saber que este parámetro es un desplazamiento, de modo que estará limitado por los límites de desplazamiento de periodo establecidos en el generador.
  • int, doble, bool - tipos de variables estándar disponibles

Hemos añadido un nuevo parámetro de periodo pero todavía no se utiliza en nuestras condiciones de bloque personalizadas, siguen teniendo el valor fijo 14:

Para utilizar el parámetro en la condición debemos hacer doble clic en cada condición para abrirla para su edición. A continuación, haga clic en el icono azul [...] junto al parámetro Periodo. Se abrirá una lista en la que podrá elegir entre los posibles parámetros de bloque para el periodo. Elegiremos nuestro nuevo parámetro Periodo.

El resultado es que el periodo en nuestro indicador CCI ya no será un valor fijo, sino que será configurable externamente mediante el parámetro Period:

Repítalo para el resto de las condiciones CCI, el resultado debería ser el siguiente:


De esta forma creamos un nuevo bloque personalizado llamado CCI al alza durante 3 barras. Después de guardar sus bloques personalizados, podrá utilizarlos inmediatamente en el editor AlgoWizard:

Así como en Configuración de bloques de construcción de un constructor:

Lo bueno es que no necesita hacer nada más. Debido a que este bloque personalizado fue creado utilizando componentes de bloque ya existentes, StrategyQuant sabe cómo generar código fuente para él para su plataforma de negociación de destino.

 

Paso 2: Especificar un bloque opuesto

Creamos un nuevo bloque personalizado CCI al alza durante 3 barras. La estrategia de negociación suele tener reglas largas y cortas, donde las condiciones de entrada cortas son opuestas a las condiciones de entrada largas.

Cada bloque estándar en StrategyQuant tiene su bloque opuesto especificado, para que SQ "sepa" cómo crear un bloque opuesto para uno generado.

Si el bloque personalizado no tiene un bloque opuesto definido, se copia y se utiliza también como bloque opuesto.
Así, las condiciones de tu estrategia serían las siguientes:

Entrada en largo = CCI al alza durante 3 barras
Entrada en corto = CCI al alza durante 3 barras

Normalmente no queremos esto, querríamos que las reglas fueran como:

Entrada larga = CCI al alza durante 3 barras
Entrada en corto = CCI cayendo durante 3 barras

Bloque CCI cayendo durante 3 barras aún no existe. Para que funcione debemos crearla. Afortunadamente, es muy sencillo. Vuelve al editor de bloques personalizados y haz clic en Enlace no establecido:

Se abrirá un cuadro de diálogo en el que podemos crear un nuevo bloque personalizado que se utilizará como bloque opuesto, o elegir uno ya existente, si es que existe.
Crearemos un nuevo bloque y lo llamaremos CCI cayendo durante 3 barras:


Haga clic en Guardar y se crea el nuevo bloque:

Tenga en cuenta que no está vacío - StrategyQuant lo creó negando el bloque original para su conveniencia. La negación es correcta, así que ya no queda nada por hacer. Tenemos dos bloques definidos como queríamos:

 

Actualización de bloques opuestos

Esta negación automática sólo se produce una vez al crear el bloque opuesto. Si ahora ha realizado algunos cambios en el bloque CCI al alza durante 3 barrasEstos cambios no se reflejan en el bloque opuesto. CCI cayendo durante 3 barras automáticamente.

Para aplicar los cambios automáticamente negando de nuevo el bloque personalizado de origen, puede ir al bloque opuesto y hacer clic en el botón Negar desde el bloque opuesto botón.

Ten en cuenta que debes hacerlo en el bloque opuesto.
Por lo tanto, si edita el bloque CCI al alza durante 3 barras debe cambiar a un bloque CCI cayendo durante 3 barras y allí haga clic en el botón Negar desde el bloque opuesto para negar automáticamente el contenido del bloque modificado y utilizarlo en el bloque opuesto.

¿Le ha resultado útil este artículo? El artículo era útil El artículo no era útil

Suscríbase a
Notificar a
11 Comentarios
Más antiguo
Más reciente Más votados
Feedbacks de Inline
Ver todos los comentarios
tnickel
tnickel
22. 4. 2020 10:25 am

arriba, muy buena idea.

Fernando Morales
Fernando Morales
19. 8. 2020 8:53 pm

¿Puedo utilizar el mismo bloque para ambas señales de COMPRA/VENTA? Es decir, al no crear el bloque contrario, ¿SQ lo utilizará para comprar/vender?

tomas262
tomas262
Responder a  Fernando Morales
26. 8. 2020 10:52 pm

Siempre debe definir el bloque opuesto. SQ lo utilizará para negociar "el otro lado". Aunque puede ser la misma regla

Fernando Morales
Fernando Morales
19. 8. 2020 8:56 pm

¿Cómo puedo asignar un bloque personalizado para que sólo se utilice como regla de salida?

tomas262
tomas262
Responder a  Fernando Morales
26. 8. 2020 10:51 pm

Creo que la mejor manera sería crear una plantilla en AlgoWizard con reglas de salida definidas basadas en el nuevo bloque personalizado

PaperoneJ12
8. 1. 2022 17:42

¿Es posible cambiar la clave del bloque tras la creación de un nuevo bloque personalizado? En caso afirmativo, ¿cómo?

Daniel Eagan
Daniel Eagan
16. 8. 2022 22:00

¿Cómo puedo guardar el contenido de mis bloques personalizados y grupos aleatorios? Por alguna razón todos los contenidos han desaparecido dentro de cada uno de mis bloques personalizados. Los valores de los parámetros permanecen, pero el contenido ha desaparecido. Probablemente me llevará entre 12 y 15 horas de trabajo volver a introducir todos los valores. Cualquier ayuda será muy apreciada. Muchas gracias.

Daniel Eagan
Daniel Eagan
Responder a  Daniel Eagan
16. 8. 2022 10:04 pm

No importa, he encontrado la carga de la ficha de copia de seguridad. ¡Gracias a Dios!

Redlock55
22. 5. 2023 11:56 am

¿Soy yo o las imágenes de la pantalla están borrosas? Difíciles de leer.

Hodei Ostolaza bernedo
Hodei Ostolaza bernedo
5. 2. 2024 5:02 pm

Hello , i have a problem ,
I have created two custom blocks, I have managed to perform tests and works great but when I want to look at the code I get an error. It doesn’t allow me to see the code in any programming language.

error!one ore more block strategies uses isnt implemented in MQL code

tomas262
Admin
Responder a  Hodei Ostolaza bernedo
6. 2. 2024 5:38 pm

Did you also create TPL – template files for corresponding code? Let us know if any help needed