E’ del tutto regolare, DEFPARAM CUMULATEORDERS=FALSE impedisce che ProOrder esegua più di UN trade contemporaneamente, però ProOrder SA che un trade è stato aperto solo dalla barra successiva (perché la strategia viene eseguita solamente alla chiusura di ogni barra, non prima).
Nei primi 3 trade del 25 Gennaio essi si aprono e si chiudono PRIMA che la barra si chiuda, infatti GRAPH dimostra che la variabile TRADARE è sempre settata ad 1, perché ONMARKET non è vero nel momento in cui ProOrder esegue la strategia alla chiusura della barra. Quando fa il 4° trade, invece, poiché si prolunga per più di una barra, azzera TRADARE in quanto è ONMARKET e NON fa ulteriori operazioni.
I prezzi di entrata, per le operazioni successive sono dovute al tipo di ordine pendente, per quello LIMIT viene assicurata l’esecuzione al prezzo indicato o MIGLIORE, quindi può anche non essere eseguito, mentre per quello STOP è garantita l’esecuzione, ma non il prezzo che può essere PEGGIORE (e di solito lo è, raramente può essere migliore a causa di slippage positivi, a me è capitato solo una volta, in trading manuale) come nel caso delle operazioni del 25/1 successive alla prima.
E’ un comportamento un pò bizzarro, che niente ha a che vedere con gli orari, che necessita di una maggiore interazione tra PRT ed il BROKER, in modo che ProOrder venga a sapere, in ogni caso, quando un’operazione si apre e si chiude in corso di formazione della candela.
Ad ogni modo il problema (non so se è già stato segnalato nei suggerimenti della piattaforma, versione inglese https://www.prorealcode.com/topic/centralization-of-queries-and-suggestions-on-prorealtime/#post-23211) si risolve salvando l’ammontare del guadagno/perdita della strategia all’inizio di ogni giorno (quando IntraDayBarIndex=0) ed aggiungere, alle condizioni per operare, che la STRATEGYPROFIT sia uguale a quella salvata, perché se è diversa significa che c’è stata almeno un’operazione.
defparam cumulateorders=false
DEFPARAM Flatbefore = 140000
DEFPARAM Flatafter = 220000
once tradare = 0
once Profitto=0
if intradaybarindex = 0 then
Profitto=StrategyProfit
tradare = 1
prezzoore8=0
endif
if onmarket then
tradare = 0
prezzoore8=0
endif
//individuo apertura ore 14
once prezzoore8 = 0
if time = 140000 then
prezzoore8=close
endif
if not onmarket and tradare and StrategyProfit=Profitto then
buy 10 contract at prezzoore8 + 40 * pipsize stop
buy 10 contract at prezzoore8 + 40 * pipsize limit
SET STOP pLOSS 40
SET TARGET pPROFIT 20
endif
graph close
graph prezzoore8
graph prezzoore8 + 40 * pipsize
graph onmarket
graph tradare
L’uso di GRAPH (purtroppo consente un massimo di 5 variabili da tenere d’occhio) è utilissimo, nel momento dell’uso sembra faccia perdere tempo, in realtà, a conti fatti, lo fa guadagnare perché ti può aiutare a risolvere problemi, come in tal caso, difficilmente comprensibili.
Ti allego le 4 schermate con evidenziate le 4 operazioni del 25 Gennaio ed i valori che ad ogni barra, assumono le variabili messe sotto controllo.
Ovviamente con la versione corretta di cui sopra spariscono le operazioni oltre la prima.
E’ un comportamento un pò bizzarro di PRT, perché lascia a noi dovere controllare se c’è stata un’operazione, mentre potrebbe farlo ProOrder direttamente, anche perché se aggiorna il risultato di STRATEGYPROFIT significa che un’operazione è avvenuta nel corso della formazione della candela, non è certo stato un bonus (se è positivo) da parte di IG!