ciao
sto elaborando un sistema che in primis mi calcoli la distanza ciclica
1 deve trovare il minimo di x barre quindi lowest[x] (low)
2 trovato il minimo deve aggiungere sequenzialmente 200 punti, quindi se il minimo e 3000 dovrà risultare 3000, 3200, 3400, 3600. 3800 ecc . Questi 200 punti sono un livello di resistenza
3 calcolato il primo livello 3200 , se la chiusura supera i 3200 entra un ordine long a 3200+10 quindi 3210
4 chiudi la posizione a 3400-10
5 se close supera 3400 entra long a 3410 chiudi a 3990
ecc ecc ecc
Dovresti specificare:
- su quale strumento vuoi operare
- su quale timeframe
- ogni quanto vuoi ricercare i nuovi massimi/minimi (continuamente ad ogni candela, oppure ad un ora precisa, oppure una sola volta al giorno)
Con questi dati posso provare a scrivere qualcosa.
Roberto
grazie Roberto per la tua puntuale risposta
1 analisi su forex e indici
2 prettamente daily ma con opzione 15 e 30 minuti
3 il periodo lo imposto io, diciamo sulle 500/1000 candele
Ho iniziato a lavorarci e mi sto accorgendo che richiede un bel pò di logica, sii paziente!
si lo so Roberto grazie per il tempo che dedichi.
ci sto lavorando anche io fino ad ora lavora al 60% di come dovrebbe
Ho buttato giù queste righe, per un uso almeno parziale della strategia (tu avevi scritto solo LONG, io ho inserito anche la parte SHORT):
DEFPARAM CumulateOrders = false
ONCE PositionSize = 1
ONCE LowHighBars = 10 //10 (numero di barre da considerare)
ONCE PriceChunk = 20 //20 numero di PIPS da aggiungere/togliere ai limiti
ONCE PriceOffset = 10 //10 numero di PIPS da aggiungere/togliere all'entrata
ONCE LowestPrice = 0
ONCE HighestPrice = 0
ONCE NewLowestPrice = 0
ONCE NewHighestPrice = 0
LowestPrice = lowest[LowHighBars](low)
HighestPrice = highest[LowHighBars](high)
IF NewLowestPrice = 0 THEN
NewLowestPrice = LowestPrice + (PriceChunk * pipsize)
ENDIF
IF NewHighestPrice = 0 THEN
NewHighestPrice = HighestPrice - (PriceChunk * pipsize)
ENDIF
// LONG
IF close > NewLowestPrice THEN
Tp = NewLowestPrice + ((PriceChunk - PriceOffset) * pipsize)
SET Target pProfit Tp
BUY PositionSize CONTRACTS AT NewLowestPrice + (PriceOffset * pipsize) LIMIT //Ordine pemdente
NewLowestPrice = NewLowestPrice + (PriceChunk * pipsize)
ENDIF
// SHORT
IF close < NewHighestPrice THEN
Tp = NewHighestPrice - ((PriceChunk + PriceOffset) * pipsize)
SET Target pProfit Tp
SELLSHORT PositionSize CONTRACTS AT NewHighestPrice - (PriceOffset * pipsize) LIMIT //Ordine pemdente
NewHighestPrice = NewHighestPrice - (PriceChunk * pipsize)
ENDIF
//
SET Stop pLoss 250 //250
//
GRAPH LowestPrice
GRAPH NewLowestPrice
GRAPH HighestPrice
GRAPH NewHighestPrice
GRAPH Tp
ma con GRAPH noto che alcune variabili, specificatamente HighestPrice e LowestPrice, assumono un valore diverso secondo quante barre vengono inizialmente caricate, non sulla base di quando la strategia parte.
Quindi non riesco ad andare avanti, anche perché la logica di entrata/uscita non è semplicissima.
Tu sei riuscito a trovare qualche soluzione?
ciao Roberto grazie per la gentile risposta e del tempo dedicato
il codice che io cerco è leggermente differente, comunque mi hai dato degli spunti utili.
in pratica non avrei bisogno del highest
una volta calcolato il minimo , quindi lowest, ad esso viene sommato ad esempio 200pt.
piubasso=lowest[x](low) //calcolo livello piu basso
livello= piubasso+200*pipsize // calcolo primo livello di acquisto
// LONG
IF close > livello THEN //condizione di acquisto
prezzodiacquisto= livello+10*pipsize //calcolo prezzo di acquisto
buy 1 contracts at prezzodiacquisto limit //acquisto effettivo
ENDIF
if longonmarket then
livello=livello[1]+200*pipsize // calcolo secondo livello
prezzodivendita= livello-10*pipsize // calcolo livello di vendita
sell at prezzodivendita limit // vendita a livello di vendita
endif
questa dovrebbe essere il primo codice che ho provato ieri, se ricordo bene
ora sono a pranzo al ristorante e non posso testare l’esattezza 😉 te lo invio per darti un idea di come dovrebbe essere
grazie in anticipo
un altra domanda, vedo che utilizzi once per dare un valore di partenza alle variabili, mi consigli di utilizzarlo sempre? le variabili potrebbero partire da valori diversi da zero?
Le variabili in qualche modo vanno sempre inizializzate, nel senso che se tu scrivi
IF close > x THEN...
ProOrder ti segnala l’errore “definisci la variabile x”.
Quindi devi mettere
x = 0
ed in questo modo, ad ogni candela, viene SEMPRE resettata a zero, qualunque fosse il suo valore precedente.
Se, invece, scrivi
ONCE x = 0
viene inizializzata a zero quando lanci la strategia, dopodiché mantiene il valore precedente tra una candela e l’altra.
Esiste anche la forma
x = undefined
cioè indefinita, ma non l’ho mai usata e non so bene che valore possa avere inizialmente ed in quali circostanze è opportuno usarla.
grazie Roberto per questa spiegazione
per il codice mi puoi aiutare?
Per il codice, come ti ho detto sopra, ho rilevato valori strani sul DAX, per cui non ho finito. Provo comunque a finire la strategia, indipendentemente dai risultati, poi vediamo.
Serve un pò di tempo.
Fino ad ora sta lavorando così. ma è in fase di miglioramento
Vedrò di aiutarti a migliorarla, purtroppo nel fine settimana non potrò metterci mano.
Ci risentiamo da lunedì.
Fr7Participant
Master
Ciao Papero,
Potresti mettere il codice di sistema dell’immagine? Aud / cad 15 minuti, sembra interessante
sicuramente è molto interessante
ma decisamente pesante da elaborare