Risposta

Aiuto per la definizione di Shift

4 risposte

eawNewbie

Cliente, bbp_partecipante, comunità, 11 risposte.

Visita il profilo

9 anni fa #113451

Non ho capito bene cosa volete ottenere, ma potete usare il parametro Shift.

 

Shift = 0 indica il valore della barra corrente, Shift = 1 indica il valore dell'indicatore nella barra precedente e così via.

Shift = 9 significa valore dell'indicatore 9° barra indietro.

Ho citato questo da un'altra discussione. La discussione non era applicabile al mio problema, ma questo post lo è, quindi spero che la citazione vada bene.

 

 

Capisco che shift = 0 significa la barra corrente (es.: barra in corso), quello che non è chiaro è "valore alla barra corrente"?

 

L'ultima affermazione "Shift = 0 significa valore alla barra corrente" significa il prezzo/valore al momento preciso dell'evento durante il timeframe della barra corrente?

 

Da allora sto cercando una definizione completa di spostamento, sia qui che in MQL5.

 

 

Mi sono imbattuto in questo problema quando ho cercato di aprire una posizione dopo che la barra corrente è almeno 3 pip più alta del massimo della barra precedente.

 

nel frattempo questo codice funzionerà come desiderato?

 

//Var

Offset=3

 

//regola

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

 

 

grazie

0

eawNewbie

Cliente, bbp_partecipante, comunità, 11 risposte.

Visita il profilo

9 anni fa #129243

Non sono riuscito a far funzionare la regola di condizione di cui sopra, quindi ho deciso di rimuoverla e di applicare invece un "ordine di entrata allo stop" utilizzando questo codice

 

      // Azione
      sqOpenOrder("NULL", OP_BUYSTOP, getOrderSize(MagicLong, OP_BUYSTOP ), getOrderPrice(MagicLong), "", MagicLong, "OffsetBuy");
 

 

Purtroppo anche questo non funziona, quindi sto sbagliando qualcosa...?

0

Mark Fric

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

9 anni fa #129245

Sì, utilizzando Shift = 0 in High, Low o negli indicatori si otterranno i loro valori al momento specificato in cui la funzione è stata chiamata.

 

Quando verifico la tua condizione

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

 

funziona correttamente, cosa non funziona per voi? Si apre in orari diversi da quelli previsti?

 

Oppure non apre affatto le operazioni? Controllate il registro degli errori se non c'è qualche errore, gli errori di dimensione delle operazioni sono abbastanza comuni.

Marchio
Architetto StrategyQuant

0

eawNewbie

Cliente, bbp_partecipante, comunità, 11 risposte.

Visita il profilo

9 anni fa #129287

Grazie per la conferma su Shift.

 

Quando utilizzo la regola di cui sopra, la condizione non sembra essere soddisfatta in quanto ogni azione dopo il "then" non viene analizzata. Non riesco a trovare alcun indizio sul perché dalla lettura dei log, anche con verbose = 2 come se non ci fosse alcun errore solo la condizione non restituisce true.

 

Ho rimosso la condizione e le operazioni vengono aperte come previsto. La condizione filtra tutte le opportunità durante il periodo di backtesting, dovrò verificare che la condizione esista effettivamente nel periodo di test. Senza la condizione ottengo letteralmente centinaia di operazioni, mentre con la condizione il risultato è zero operazioni.

 

Se dite che non ci sono problemi con la struttura della condizione, allora verificherò manualmente che la condizione esista davvero. Forse proverò a cambiare "è maggiore di" con "è minore di".

 

Qual è la soluzione più veloce, verificare la condizione all'interno dello stato If o verificare la condizione cambiando il comando open at market in open at stop ed eseguire il test se lo stop viene raggiunto all'interno dello stato "then"? Ho scoperto che aggiungendo il comando all'interno del costrutto "then" l'azione non viene eseguita, ma viene eseguita l'azione successiva.

0

eawNewbie

Cliente, bbp_partecipante, comunità, 11 risposte.

Visita il profilo

9 anni fa #129288

Ok ho riprovato e la condizione funziona

 

Non sono sicuro di cosa sia successo 

grazie

0

Stai visualizzando 4 risposte - da 1 a 4 (di 4 totali)