Buonasera a tutti, come sempre grazie anticipatamente per la disponibilità.
In precedenza ho chiesto aiuto agganciandomi ad un topic già esistente, ma probabilmente essendo vecchiotto
e probabilmente non attinente, non è stato preso in considerazione.
Sto cercando di creare una strategia di questo tipo:
Prendiamo come riferimento indice wall street, Io vorrei entrare a mercato (buy) al prezzo live (esempio 31600)
Target profit 100 pip.
Se il target viene raggiunto rientrare a 31700.
Se il prezzo riscende a 31600, tenere aperta la posizione precedente(31700 in perdita) aprirne una nuova a 31600).
Se il prezzo scende a 31500 tenere aperte le due precedenti e aprirne una nuova a 31500.
Se il mercato risale a 31600 non apriremmo una nuova posizione, perché già aperta in precedenza (profit 100 pip).
Stessa cosa se sale a 31700 abbiamo già la posizione aperta (profit 100 pip ).
Ne apriremmo una nuova a 31800 e cosi via.
Ogni singola posizione chiude a target 100 pipsize.
Si riesce a fare qualcosa del genere in automatico?
Grazie
Eccola:
DEFPARAM CumulateOrders = True
ONCE Passo = 100 * PipSize //ogni 100 pips aumentare una posizione
ONCE MaxPos = 999 //max. 999 posizioni aperte
//
SET TARGET pPROFIT 100 //Take Profit = 100 pips
// salva il reale prezzo d'entrata ad ogni nuova operazione
IF (OnMarket AND Not OnMarket[1]) OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THEN
Massimo = TradePrice(1)
Minimo = Massimo
ENDIF
//
ONCE P = 200
MieCondizioniLong = close CROSSES OVER average[P,0](close)
MieCondizioniShort = close CROSSES UNDER average[P,0](close)
// entrata LONG
IF MieCondizioniLong AND Not Onmarket THEN
BUY 1 Contract at Market
ENDIF
// entrata SHORT
IF MieCondizioniShort AND Not Onmarket THEN
SELLSHORT 1 Contract at Market
ENDIF
//
// accumuli
IF (close >= (Massimo + Passo)) OR (close <= (Minimo - Passo)) AND (abs(CountOfPosition) < MaxPos) THEN
Massimo = Max(Massimo,close)
Minimo = Min(Minimo, close)
IF LongOnMarket THEN
BUY 1 Contract at Market
ELSIF ShortOnMarket THEN
SELLSHORT 1 Contract at Market
ENDIF
ENDIF
// debugging
//graphonprice Massimo coloured(0,0,255,255)
//graphonprice Minimo coloured(255,0,0,255)
puoi variare i Punti del passo e quelli del TP, come pure il massimo di posizioni aperte (adesso è a 999).
Ovviamente dovrai variare le condizioni, io ne ho messe due per fare la prova.
Grazie lo provo subito.
Scusami ho aperto un altro topic ” “Ingresso a step senza stop loss”
pensando che questo non era attinente all’argomento.
Non so se dobbiamo cancellare o spostare la tua risposta sul nuovo.
Scusami ancora
Purtroppo non accumula gli ordini,
ho provato a modificarlo solo Long… ma non va neanche.
Dovrebbe acquistare ad ogni step di 100 pip, (se in quello step di 100 non siamo a mercato)
rimanere aperta la posizione fino a quando non va in profit di 100 pip.
Se entriamo ad esempio ad una quota di 36000,
ed il mercato scende a 35900 acquistiamo anche a quota 35900.
Se poi il mercato sale, va in profit di 100 a 36000 ed esce con quel contratto a+100.
A quota 36000 non entriamo di nuovo perchè eravamo già a mercato con l’ordine precedente.
Ogni ordine avrebbe quindi il suo profit di 100 pip.
A me funziona correttamente. Certamente, essendoci un TP di 100, come il passo, quando va in profitto e arriva a 100 non fa ulteriori entrate perché chiude, ma se metti il TP a 200, o più, vedrai che fa più entrate.
Se ritieni non vada, indicami un’operazione in cui non è entrato correttamente (time frame, data, ora della candela d’entrata e di quando avrebbe dovuto entrare e non l’ha fatto, oppure di quando è entrato senza che dovesse farlo). Ovviamente devi fare la mi devi fare la prova con il codice che ho postato io, senza modifiche. Se cambi un valore devi dirmi che valori hai messo (oppure posti il codice che hai usato). In questo modo posso verificarla accuratamente.
Riprovo, lo metto in demo
sicuramente interpreto male il test.