Errori, bug, domande - pagina 2301
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Per un oggetto testo situato su High[], il punto di ancoraggio (proprietà OBJPROP_ANCHOR) deve essere impostato su ANCHOR_LOWER (punto di ancoraggio in basso al centro).
Per un oggetto testo che si trova su Low[], il punto di ancoraggio (proprietà OBJPROP_ANCHOR) deve essere impostato su ANCHOR_UPPER (punto di ancoraggio in alto al centro).
O ANCHOR_CENTER per entrambe le posizioni, il punto di ancoraggio è centrato.
Provate.
Ma questo richiede la creazione di DUE oggetti chiamati, per esempio, Hi e Lo (estremità superiori e inferiori di uno zigzag o estremità superiori e inferiori dell'attuale tendenza locale verso l'alto o verso il basso) e legarli entrambi al grafico con i corrispondenti valori di ANCHOR_LOWER e ANCHOR_UPPER. Non sarebbe più facile legare (in qualche modo) la parte superiore dello ZigZag - alla parte inferiore precedentemente "legata"? Questo è più o meno quello che ho fatto, aggiungendo una linea alla funzione precedente
ObjectSetInteger(0,Obj,OBJPROP_ANCHOR,ANCHOR_CENTER); e introducendo una "correzione di offset" alla linea di uscita if(tvT) ORT(kBtT,Low[kBtT]-2*_Point,DtT,LowClr); else ORT(kBtT,High[kBtT]+2*_Point,DtT,HighClr); //
Finora sembra funzionare. Grazie!
Ma questo richiede la creazione di DUE oggetti chiamati, per esempio, Hi e Lo (estremità superiori e inferiori dello zigzag o estremità superiori e inferiori dell'attuale tendenza locale al rialzo o al ribasso) e il loro legame al grafico con i corrispondenti valori di ANCHOR_LOWER e ANCHOR_UPPER. Non sarebbe più facile legare (in qualche modo) la parte superiore dello ZigZag - al fondo precedentemente "legato"? Questo è più o meno quello che ho fatto, aggiungendo una linea alla funzione precedente
ObjectSetInteger(0,Obj,OBJPROP_ANCHOR,ANCHOR_CENTER); e introducendo una "correzione di offset" alla linea di uscita if(tvT) ORT(kBtT,Low[kBtT]-2*_Point,DtT,LowClr); else ORT(kBtT,High[kBtT]+2*_Point,DtT,HighClr); //
Finora sembra funzionare. Grazie!
Qual è il punto? Puoi cambiare l'allegato in qualsiasi momento. O mi manca qualcosa? Si cambia il colore. Così si cambia il collegamento.
Dopo aver chiuso la finestra del debug viewer, ricompilato ed eseguito una singola esecuzione nel Tester senza visualizzazione, ho ottenuto questo
Non ho potuto fare nulla per 20 secondi. Il pulsante Start è rimasto in grigio per tutto il tempo.
Registri dell'agente.
I registri mostrano che il Tester ha cercato di connettersi all'Agente alle 01:52, ma l'Agente (Server) si è fermato solo alle 01:54. Da qui l'incapacità di connettersi e di appendere. È un bug di vecchia data, ma almeno la causa è ora chiara.
Risultati del profilatore su dati storici
L'OrderSend interno richiede un terzo del tempo. Cosa provoca risultati così spiacevoli?
Risultati del profilatore su dati storici
L'OrderSend interno richiede un terzo del tempo. Cosa provoca risultati così spiacevoli?
Nel tester, tutta la logica di trading è qui, non sul server commerciale.
Nel tester, tutta la logica di trading è qui, non sul server commerciale.
Quasi tre milioni di tick e solo 16K OrderSend. Ma questi ordini commerciali richiedono un terzo del tempo. E su ogni tick ci sono dei calcoli nell'Expert Advisor.
Da qui la mia domanda. Potresti eseguire il codice di OrderSend nel profiler? In quale luogo c'è un tale intoppo?
Suppongo che se si sostituisce la funzione standard con la propria, funzionerà più velocemente. Probabilmente, ci sono alcuni controlli e gesti costosi in OrderSend. Per esempio, se non ci sono funzioni History e OnTrade* nell'Expert Advisor (+ indicatori), allora formare i record/eventi appropriati è una perdita di tempo.
Capisco che per alcune persone una corsa dura molti minuti. Ma ci sono casi come sopra - unità di secondi, se si presta attenzione alla velocità di esecuzione. E qui si scopre che lancio Optimize per tre ore, e di queste un'ora è OrderSend, il cui tempo medio di esecuzione è 69 µs (vedi screenshot):
Ho profilato il tester molte volte. E so dov'è l'intoppo. Si tratta di calcoli finanziari che comportano diverse normalizzazioni dei risultati al numero di cifre della valuta di deposito
Scriverò il mio OrderSend e lo confronterò.