bahlParticipant
Average
Salve da poco sto cercando di impratichirmi del linguaggio di programmazione usando l’interfaccia facilitata, e mi trovo di fronte al seguente problema. In generale il trading sistem ha la forma logica “se si verificano queste condizioni allora compra/vendi” ma la mascherina di immissione prevede l’entrata a mercato solo all’apertura del giorno successivo, o all’apertura della barra successiva, e non al verificarsi delle condizioni poste nella premessa. Io vorrei, per esempio, comprare quando si verifica un certo incrocio, non all’apertura della barra successiva a quella dove si verifica l’incrocio.
Ho spostato io la tua domanda nel supporto ProOrder.
È solo una questione di termini, siccome le strategie vengono eseguite alla chiusura di ogni barra, microsecondi prima che la nuova barra si apra, è chiaro che l’entrata a mercato avviene alla nuova apertura.
La barra corrente, per le strategie, non è quella che si apre (a cui non si può accedere fino alla chiusura), ma quella appena chiusa.
Si può intervenire su una candela in formazione scendendo di time frame mediante il supporto MTF, Multi Time Frame, però non so se la creazione semplificata lo supporta.
Se vuoi maggiori dettagli su MTF basta che cerchi nel forum e troverai molti post, articoli ed esempi molto dettagliati.
bahlParticipant
Average
ho iniziato a leggere girando per il forum, ho capito che la “barra in corso” è l’ultima barra chiusa, potrei quindi impostare un sistema con condizioni su questa e barre precedenti, e poi introdurre un ordine limite o stop al raggiungimento eventuale del prezzo, nella barra successiva, al verificarsi delle condizioni di entrata.
La mascherina di programmazione facilitata non offre alternative al compra a mercato, posso solo specificare quantità, e o apertura barra successiva o giorno seguente.
Devo quindi scrivere il codice. Quindi mi metterò a studiare un po’ il linguaggio. Mi confermerebbe comunque che è possibile introdurre ordini limite e stop non indicando il prezzo ma indicando l’incrocio/raggiungiemnto da parte del prezzo di un indicatore, p.es una media mobile? Qualcosa che tradotto in linguaggio naturale suonerebbe compra stop sul valore della media mobile?
bahlParticipant
Average
Mi pare di aver fatto un po’ di progressi. Per imparare la sintassi ho preso un grafico del dax, tf giornaliero, ci ho impostato una sma a 21 periodi, e l’idea era semplicemente: se i prezzo è sceso sotto la media e poi la riincrocia al rialzo compra, vendi quando il massimo della barra supera il massimo della precedente.
le condizioni di vendita sono irrilevanti. Mi interessava vedere se davvero mi entrava nei cross al rialzo sulla media. Ebbene lo fa. Ma non sempre, e non capisco perchè. Allego il codice, e, per esempio, l’undici dicembre 2019 sarebbe dovuto entra re ed invece non entra,
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
indicator1 = Average[21](close)
c1 = (high < indicator1)
IF c1 THEN
BUY 1 Contract AT ( INDICATOR1) STOP
ENDIF
// Condizioni per uscire da posizioni long
c2 = (high >= high[1])
IF c2 THEN
SELL AT MARKET
ENDIF
Perché se il prezzo (close) nojn ritona subito sopra lamedia, però il massimo si, alla candela successiva la riga 6 pouò essere falsa e l’ordine non viuene piazzato di nuovo.
Tieni presente chegli ordini pendenti (STOP o LIMIT che siano) scadono ad ogni barra e vanno reimmessi, se si desiderano.
bahlParticipant
Average
Molte grazie, avrei un altra domanda. Esiste un modo per designare la barra in cui si è entrati a mercato, in modo da potersi riferire a quella barra per porre condizioni.
P.s vendi se il prezzo supera il massimo della barra di entrata…..
bahlParticipant
Average
mi chiedo inoltre con che sistema si possa porre la condizione tipo che una media mobile sia crescente o decrescente
TRADEINDEX è il numero della barra di entrata in posizione, pet cui con l’espressione (BARINDEX – TRADEINDEX) si troverà il numero da mettere tra parentesi quadre per fare riferimento ad essa.
Una media è crescente se è maggiore rispetto alla barra precedente, altrimenti è decrescente:
Media = average[20,0](close)
If Media > Media]1] then
//crescente
ElsIf Media < Media]1] then
//decrescente
Endif