Documentación
Aplicaciones
Última actualización el 15. 4. 2020 by Mark Fric
Bloques personalizados
Page contents
¿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:
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:
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:
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
arriba, muy buena idea.
¿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?
Siempre debe definir el bloque opuesto. SQ lo utilizará para negociar "el otro lado". Aunque puede ser la misma regla
¿Cómo puedo asignar un bloque personalizado para que sólo se utilice como regla de salida?
Creo que la mejor manera sería crear una plantilla en AlgoWizard con reglas de salida definidas basadas en el nuevo bloque personalizado
¿Es posible cambiar la clave del bloque tras la creación de un nuevo bloque personalizado? En caso afirmativo, ¿cómo?
¿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.
No importa, he encontrado la carga de la ficha de copia de seguridad. ¡Gracias a Dios!
¿Soy yo o las imágenes de la pantalla están borrosas? Difíciles de leer.
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
Did you also create TPL – template files for corresponding code? Let us know if any help needed
How do we create templates for AlgoWizard custom blocks?
Create a random group and add your blocks into it
Setup a random condition and set the parameter Random group to the group of blocks of yours
Espero que le sirva de ayuda.