La decelerazione lineare è un errore di programmazione o una caratteristica di MT4? - pagina 4
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
la costruzione qui sotto vale da sola la pena.
un po' di più
e si può già vedere cosa viene eseguito in quale sequenza. Questa è solo la formattazione. Ma si può anche scomporre il codice in operazioni logicamente coerenti e separarle in funzioni separate. In questo modo l'algoritmo principale viene liberato da mucchi di codice confuso.
Il problema è la duplicazione del codice e il numero eccessivo di dichiarazioni condizionali. In effetti, il codice consiste del 99% di linee che includono in qualche modo l'operatore condizionale If; sono sicuro che se si guarda dentro, il numero di confronti potrebbe essere ridotto di 10 volte. Non solo questo rallenta l'esecuzione, ma questo codice è anche difficile da leggere. Una persona che fa aggiunte ha almeno 2 compiti principali:
1 - non romperlo
2 - Aggiungere le funzionalità necessarie.
Il codice illeggibile causa comunque un'ulteriore duplicazione di tutti i tipi di controlli e confronti - e anche questo è una spesa aggiuntiva. Guardando il codice, mi ricordo personalmente circa 25 anni fa, quando ho appena iniziato a programmare, e l'ho imparato dal manuale del PC Atari 800XL senza alcun insegnante, solo perché era interessante.
Certo, è interessante, di che "se" stiamo parlando, c'è probabilmente il mio TOR - dove scrivo "se così, allora così", e il programmatore lo interpreta nel codice, e c'è "se" legato al lavoro diretto con gli ordini, e ci sono un sacco di operazioni con gli ordini...
Naturalmente, ho pensato che si trattasse di una specie di ciclo, la cui esecuzione porta a controlli multipli delle condizioni d'ordine. E si scopre che la situazione può essere corretta solo riscrivendo il codice da zero?
la costruzione qui sotto vale da sola la pena.
un po' di più
e sappiamo già cosa viene eseguito in quale sequenza. Questa è solo una formattazione. Ma si può anche scomporre il codice in operazioni logicamente coerenti e separarle in funzioni separate. In questo modo, si libererà l'algoritmo principale da mucchi di codice affastellato.
Ma non influisce in alcun modo sulle prestazioni?
Problemi con il codice duplicato
la costruzione qui sotto vale da sola la pena.
un po' di più
e sappiamo già cosa viene eseguito in quale sequenza. Questa è solo una formattazione. Ma si può anche scomporre il codice in operazioni logicamente coerenti e separarle in funzioni separate. In questo modo l'algoritmo principale viene liberato da mucchi di codice confuso.
rev 1.1
Per impostare uno stop loss e il filtraggio degli ordini pendenti utilizziamo due opzioni di utilizzo di una MA speculare.
maMirror - calcolato utilizzando la funzione iMA standard, funziona una volta per barra, i dati sono presi dai prezzi di apertura della barra
Algoritmo di calcolo:
Per vendere:
punto di calcolo iniziale maMirror=iMA+pipsXHmaM(o/b)
punto di calcolo successivo maMirror=maMirror(1)-(iMA(0)+pipsXHmaM(o/b)-iMA(1)+pipsXHmaM(o/b))
il calcolo è completato dopo il punto finale del calcolo.
Per l'acquisto:
punto di calcolo iniziale maMirror=iMA-pipsXHmaL
punto di calcolo successivo maMirror=maMirror(1)-(iMA(0)-pipsXLmaM-iMA(1)-pipsXLmaM)
il calcolo viene terminato dopo il punto finale del calcolo.
Per semplificare il ToR è necessario mettere due blocchi di calcolo, che saranno indipendenti l'uno dall'altro nel funzionamento e nelle variabili, e possono essere impostati dall'utente
maMBlock=0 - non usare blocchi (viene usato lo stop loss standard)
maMBlock=1 - usa solo il blocco #1.
maMBlock=2 - usa solo il blocco #2 (viene usato lo stop loss standard)
maMBlock=3 - usa entrambi i blocchi
Blocco #1
Calcolo dello stop loss. Lo stop loss viene ricalcolato e l'ordine viene aggiornato ad ogni barra dal valore di maMirror.
1 La variabile StartPoint viene utilizzata per determinare il punto di partenza per il calcolo, se StartPoint=1 (il calcolo viene eseguito dopo aver toccato maT), se StartPoint=2 (il calcolo viene eseguito dopo l'apertura dell'ordine).
1.1 Se StartPointO=1 allora il calcolo è completato dopo aver toccato maT;
1.2.Se StartPointO=2, il regolamento termina dopo la chiusura dell'ordine;
1.3 Se lo stop loss non può essere impostato da maMirror, l'ordine viene chiuso.
1.4. Levl_Zerro=0 (non usato), Levl_Zerro!=0 (lo stop loss è aggiornato al valore massimo specificato contando dal prezzo di apertura, un valore negativo significa che lo stop loss è convertito in un valore positivo)
Blocco 2
Calcolo del filtraggio per gli ordini in sospeso
0.1 Per comprare un ordine, l'ordine viene piazzato se maMirror>prezzo di apertura dell'ordine pendente
0.2 Per vendere, gli ordini sono piazzati se maMirror<prezzo aperto dell'ordine pendente
1 La variabile StartPoint viene utilizzata per determinare il punto di partenza del calcolo se StartPoint=1 (il calcolo viene eseguito dopo che il maT è stato toccato), se StartPoint=2 (il calcolo viene eseguito dopo l'apertura dell'ordine).
1.1 Se StartPointB=1, il calcolo viene completato dopo aver toccato maT;
1.2 Se StartPointB=2 (il regolamento termina dopo la chiusura dell'ordine);
2. Se maMirrorDell=0 (non usato) maMirrorDell=1 (tutti gli ordini aperti sono cancellati se le condizioni dal punto 0 non corrispondono)
Variabili utente
maMirrorO (impostazioni di iMA)
maMirrorB (impostazioni iMA)
StartPointO
StartPointB
pipsXHmaMo
pipsXLmaMo
pipsXHmaMb
pipsXLmaMb
maMBlo
maMirrorDell
Aiuto stima incarico, cliente vuole un nuovo lavoro, non so quanto stimare) Come io non sono un programmatore, sono un ingegnere dell'accademia aerospaziale)
Influisce in qualche modo sulle prestazioni?
Argomenti molto forti, il tuo codice, dove posso vedere un programmatore esperto?
La duplicazione non c'entra niente, e nemmeno i se. Il vero rallentamento è dato dal lavoro con gli ordini.
Lavorare con gli ordini nel codice TK, o forse TK stesso, o MT4 che lavora con gli ordini in generale?