Documentazione

Applicazioni

Ultimo aggiornamento il 15. 4. 2020 da Mark Fric

Blocchi personalizzati

Cosa sono i blocchi personalizzati?

I blocchi personalizzati consentono di creare la propria combinazione di blocchi e di memorizzarla come blocco personalizzato.

Ad esempio, si consideri il blocco di segnali già esistente in StrategyQuant:

Il CCI è in aumento

Questo segnale è valido quando:

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

dove Periodo è configurabile e [2] significa due battute indietro, [1] significa una battuta indietro.

Quindi, è valido quando il CCI di una barra precedente è superiore al CCI di due barre precedenti, il che significa che il valore del CCI è in aumento.

 

Qual è il vantaggio di creare combinazioni di blocchi personalizzate?

Il valore sta nel diminuire la casualità utilizzando segnali che abbiano un senso reale.

StrategyQuant potrebbe generare condizioni come queste in modo casuale utilizzando solo i blocchi CCI e IsLower (<), ma la possibilità di generare casualmente una condizione significativa è piccola se si considera quante possibilità casuali ci sono.

Un altro vantaggio è che quando si usa il blocco Il CCI(Periodo) è in aumentodall'esterno ha un solo parametro Periodo che verrà utilizzato in entrambi gli indicatori CCI nella condizione.

È possibile estendere StrategyQuant creando blocchi personalizzati, come questo, con un frammento di codice Java. Questo è un buon metodo, ma non tutti sono programmatori.
Quindi, da SQ Build 127 esiste un modo per creare blocchi personalizzati come questo in modo visivo nell'editor di AlgoWizard senza alcuna codifica.

In questa documentazione mostreremo come farlo esattamente.

 

Passo 1: Definire il nuovo blocco personalizzato

In StrategyQuant aprite la finestra incorporata AlgoWizard (1.), fare clic su Personalizzare (2.) in alto. Passare quindi a Blocchi personalizzati (3.) tab:

Questo è il pannello di gestione e modifica dei blocchi personalizzati.

A titolo di esempio, creeremo un nuovo blocco personalizzato che sarà valido quando il CCI è in aumento per 3 barre consecutive. In pseudo codice possiamo scrivere questa condizione come:

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

 

Fare clic sul pulsante Aggiungi blocco pulsante. Si aprirà una finestra di dialogo in cui si potranno specificare i parametri del nuovo blocco:

Chiave di blocco

è la chiave unica (ID) di questo blocco. Può essere composta solo da lettere e numeri, senza spazi o caratteri speciali. Chiameremo il nostro nuovo blocco CCIRising3Bars.

Nome del blocco 

è il nome che vedremo nella selezione dei blocchi di costruzione. Lo chiameremo CCI crescente per 3 barre

Tipo di blocco 

è un blocco di tipi. Per ora sono supportati due tipi:

  • Condizione - blocco che restituisce un valore vero/falso che può essere utilizzato come parte delle condizioni di entrata o di uscita. Di solito si tratta di un confronto. I blocchi di questo tipo saranno visibili nella sezione Segnali dei blocchi di costruzione.
  • Livello di prezzo - blocco che calcola il livello di prezzo che può essere utilizzato per gli ordini stop/limit. Il blocco di questo tipo è visibile nella sezione Livelli di prezzo stop/limite della categoria Blocchi di entrata stop/limite nella configurazione dei blocchi di costruzione.

Cliccare Risparmiare e verrà creato un nuovo blocco personalizzato:

Aggiunta del blocco personalizzato SQ

Si noti che questo blocco è ancora vuoto, abbiamo creato una definizione ma il nuovo blocco non ha ancora contenuto.

Aggiungiamo la prima condizione al blocco facendo clic su Aggiungere un'altra condizione:

Condizione di aggiunta del blocco personalizzato

Si apre una finestra di dialogo standard per scegliere tra tutti i blocchi di costruzione esistenti che si conoscono nell'editor di AlgoWizard. Troviamo CCI per il nostro primo confronto:

Non dimenticate di impostare Shift su 3, perché vogliamo ottenere il valore CCI da 3 barre indietro. Dopo aver fatto clic su Confermare viene creata la prima parte della nostra condizione personalizzata:

Ora fate clic su È maggiore (>) e cambiarlo in È inferiore (<).

Quindi fare clic su 0 e sostituirlo con CCI(14)[2].

Ripetere questi due passaggi per aggiungere una seconda condizione CCI(14)[2] < CCI(14)[1].

Il risultato dovrebbe essere questo:

Si tratta di una condizione completa. È valida quando il CCI(14) è in aumento nelle ultime 3 barre.

Avrete notato che il periodo CCI è impostato su un valore fisso 14.
Se si utilizzasse questo blocco personalizzato allo stato attuale, l'aspetto sarebbe il seguente:

Il nostro nuovo blocco personalizzato avrà solo il parametro obbligatorio Chart e nessun altro parametro.

Ciò significa che il periodo CCI usato nel blocco sarà sempre 14 - il periodo sarà non generato casualmente in StrategyQuant e non è possibile configurarlo in seguito.
Si potrebbe fare così per alcuni parametri, ma vogliamo che il periodo CCI sia generato in modo casuale.

È qui che entrano in gioco i parametri di blocco personalizzati. C'è Parametri nella parte inferiore sinistra:

Parametri di blocco personalizzati
Al momento contiene solo un parametro - Grafico - che è obbligatorio per ogni blocco personalizzato.
Aggiungiamo un nuovo parametro Periodo. Fare clic su Aggiungi parametro pulsante. In questo modo si aggiungerà un nuovo parametro alla tabella. Rinominarlo in Periodo e modificarne il tipo in Periodo:

Si può dare al parametro il nome che si desidera e si può scegliere tra diverse opzioni per il tipo:

  • grafico - significa che si tratta di un parametro grafico. Gli indicatori sono calcolati a partire dai dati del grafico e il parametro del grafico consente a noi e a StrategyQuant di impostare il grafico da utilizzare.
  • periodo - un tipo speciale da utilizzare per i periodi degli indicatori. Si tratta di un tipo separato perché StrategyQuant deve sapere che questo parametro è un periodo, in modo da essere limitato dai limiti dell'intervallo di periodi impostati nel generatore.
  • turno - un altro tipo speciale da utilizzare per i turni. Shift è un indice della cronologia delle barre. Shift=0 significa barra corrente, Shift=1 significa barra precedente, Sift=2 significa due barre indietro. Anche in questo caso si tratta di un tipo separato perché StrategyQuant deve sapere che questo parametro è uno spostamento, in modo da essere limitato dai limiti di spostamento del periodo impostati nel generatore.
  • int, double, bool - tipi di variabili standard disponibili

Abbiamo aggiunto il nuovo parametro del periodo, ma non è ancora utilizzato nelle nostre condizioni di blocco personalizzate, che hanno ancora il valore fisso 14:

Per utilizzare il parametro nella condizione, occorre fare doppio clic su ogni condizione per aprirla e modificarla. Quindi fare clic sul simbolo blu [...] accanto al parametro Periodo. Si aprirà un elenco in cui è possibile scegliere tra i possibili parametri di blocco per il periodo. Sceglieremo il nostro nuovo parametro Periodo.

Il risultato è che il periodo del nostro indicatore CCI non sarà più un valore fisso, ma sarà configurabile esternamente tramite il parametro Period:

Ripetete l'operazione per le altre condizioni CCI e il risultato dovrebbe essere questo:


In questo modo abbiamo creato un nuovo blocco personalizzato chiamato CCI in aumento per 3 barre. Dopo aver salvato i blocchi personalizzati, è possibile utilizzarli immediatamente nell'editor di AlgoWizard:

Così come nella configurazione dei blocchi di costruzione di un costruttore:

La cosa positiva è che non è necessario fare altro. Poiché questo blocco personalizzato è stato creato utilizzando componenti di blocco già esistenti, StrategyQuant sa come generare il codice sorgente per la piattaforma di trading di destinazione.

 

Passo 2: Specificare un blocco opposto

Abbiamo creato un nuovo blocco personalizzato CCI in aumento per 3 barre. La strategia di trading prevede solitamente regole Long e Short, dove le condizioni di ingresso Short sono opposte a quelle Long.

Ogni blocco standard in StrategyQuant ha il suo blocco opposto specificato, in modo che SQ "sappia" come creare un blocco opposto per uno generato.

Se il blocco personalizzato non ha un blocco opposto definito, viene semplicemente copiato e utilizzato anche come blocco opposto.
Quindi, le condizioni della vostra strategia saranno le seguenti:

Entrata long = CCI in aumento per 3 barre
Entrata short = CCI in aumento per 3 barre

Di solito non vogliamo questo, vorremmo che le regole fossero del tipo:

Entrata long = CCI in aumento per 3 barre
Entrata short = CCI in calo per 3 barre

Blocco CCI in calo per 3 barre non esiste ancora. Per farlo funzionare dobbiamo crearlo. Fortunatamente, è molto semplice. Tornare all'editor dei blocchi personalizzati e fare clic su Collegamento non impostato:

Si aprirà una finestra di dialogo in cui si potrà creare un nuovo blocco personalizzato da utilizzare come blocco opposto, oppure sceglierne uno esistente, se esiste.
Creeremo un nuovo blocco e lo chiameremo CCI in calo per 3 barre:


Fare clic su Risparmiare e il nuovo blocco viene creato:

Si noti che non è vuoto: StrategyQuant lo ha creato annullando il blocco originale per comodità. La negazione è corretta, quindi non resta altro da fare. Abbiamo due blocchi definiti nel modo desiderato:

 

Aggiornamento dei blocchi opposti

Questa negazione automatica avviene solo una volta quando si crea il blocco opposto. Se ora si sono apportate alcune modifiche al blocco CCI in aumento per 3 barreQueste modifiche non si riflettono sul blocco opposto. CCI in calo per 3 barre automaticamente.

Per applicare le modifiche automaticamente, negando nuovamente il blocco personalizzato di origine, è possibile andare al blocco opposto e fare clic sul pulsante Negare dal blocco opposto pulsante.

Si noti che questa operazione deve essere eseguita sul blocco opposto.
Quindi se si modifica il blocco CCI in aumento per 3 barre si dovrebbe poi passare a un blocco CCI in calo per 3 barre e cliccare sul pulsante Negare dal blocco opposto per annullare automaticamente il contenuto del blocco modificato e utilizzarlo nel blocco opposto.

Questo articolo è stato utile? L'articolo è stato utile L'articolo non è stato utile

Abbonarsi
Notificami
11 Commenti
Il più vecchio
Più recente I più votati
Feedback in linea
Visualizza tutti i commenti
tnickel
tnickel
22. 4. 2020 10:25

superiore, ottima idea.

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

Posso utilizzare lo stesso blocco per entrambi i segnali BUY/SELL? Cioè, non creando il blocco opposto, SQ lo utilizzerà per acquistare/vendere?

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

Dovreste sempre definire il blocco opposto. SQ lo utilizzerà per negoziare "l'altro lato". Tuttavia, la regola può essere la stessa

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

Come posso assegnare un blocco personalizzato da utilizzare solo come regola di uscita?

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

Penso che il modo migliore sia quello di creare un modello in AlgoWizard con regole di uscita definite in base al nuovo blocco personalizzato.

PaperoneJ12
8. 1. 2022 5:42 pm

È possibile modificare la chiave di blocco dopo la creazione di un nuovo blocco personalizzato? Se sì, come?

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

Come posso salvare il contenuto dei miei blocchi personalizzati e dei gruppi casuali. Per qualche motivo tutti i contenuti sono scomparsi all'interno di ciascuno dei miei blocchi personalizzati. I valori dei parametri rimangono, ma i contenuti sono spariti. Probabilmente mi ci vorranno 12-15 ore di lavoro per rimettere tutti questi valori. Qualsiasi aiuto sarebbe molto apprezzato. Grazie.

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

Non importa, ho trovato il caricamento dalla scheda di backup. Grazie a Dio!

Redlock55
22. 5. 2023 11:56

Sono io o le immagini sullo schermo sono sfocate? Difficile da leggere.

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
Rispondi 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