[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 409
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
no
Il problema qui è semplicemente nel ciclo. i va da 0 a 2. Voi volete 2 a 0.
Mostrami un esempio per favore, l'ho fatto Non ha funzionato.
sss2019:
Mostrami un esempio per favore, l'ho fatto Non ha funzionato
Ho fatto lo script in questo modo
Come risultato, Print produce il seguente risultato
0 4
1 4
Questo è tutto, per qualche motivo il ciclo non stampa
2 4
3 4
Ho aggiunto al ciclo OrderSelect(i, SELECT_BY_POS, MODE_TRADES invece di I 0, cioè il primo ordine è sempre selezionato e lo script funziona correttamente. Risulta che quando il ciclo cancella due ordini, cerca di selezionare il terzo ordine quando ci sono solo due ordini nella lista.
Ha fatto lo script in questo modo
Alla fine...
Per favore mostratemi un esempio, ho fatto
Non ha aiutato.
perché devi ancora pensare.
Aiutami a risolvere questo dilemma
Lo script cerca la distanza massima tra le linee. Emette tutti i valori su tutte le barre, l'intervallo massimo è 1,6235 su una barra e 1,6208 sull'altra.
Provo a stampare Print(maxrange); stampa 0,086, non capisco perché, sto dividendo per Point
Aiutami a risolvere questo dilemma
Lo script cerca la distanza massima tra le linee. Emette tutti i valori su tutte le barre, l'intervallo massimo è 1,6235 su una barra e 1,6208 sull'altra.
Provo a stampare Print(maxrange); restituisce 0,086, non capisco proprio perché, sto dividendo per Point
Questo non è un dilemma. Un dilemma è quando non si sa quale delle due soluzioni sia migliore.
Beh, per prima cosa, la funzione iMA() ha sette parametri, non sei. In secondo luogo, avete dichiarato una variabile con la stringa int i. E inoltre, la variabile i non è inizializzata da nessuna parte con un valore. Di conseguenza, o è zero o contiene spazzatura di memoria lasciata dall'attività precedente. E in terzo luogo, il ciclo while è disposto in modo scorretto. Bene, diciamo che la variabile i è uguale a zero dopo l'inizializzazione. Supponiamo anche che l'espressione Ma1 > Ma2 sia vera. Di conseguenza, la linea while(Ma1 > Ma2) avvierà il ciclo. Alla prossima iterazione del ciclo scopriremo che l'espressione (Ma1 > Ma2) non è più vera e il ciclo sarà terminato. Le variabili Ma1 e Ma2 non conterranno la distanza massima - la distanza massima era una volta. Questa condizione mostrerà solo che Ma1 è diventato ora minore o uguale a Ma2.
Inoltre, la variabile maxrange sarà inizializzata con un valore solo nella linea range = (Ma1 - Ma2)/Point; Bene, e se la condizione if(range > maxrange) non si verificherà mai, perché non inizializzi la variabile maxrange con un valore in nessun altro punto del codice? Così si scopre che state confrontando il risultato dei calcoli con la spazzatura delle cellule di memoria. Qui avete stampe incomprensibili come risultato dell'esecuzione del codice.
if(range > maxrange) maxrange = range;
Questo è il punto, stavo emettendo tutti i valori MA nel ciclo e tutti i valori sono corretti, cioè tutti i valori MA per questo periodo sono stati cercati. Ma il calcolo è sbagliato in questo posto - range = (Ma1 - Ma2)/Point;
if(range > maxrange) maxrange = range;
*Punto
gamma = (Ma1 - Ma2)*Punto
*Punto
gamma = (Ma1 - Ma2)*Punto
Il fatto è che stavo emettendo tutti i valori MA nel ciclo, e tutti i valori sono corretti, cioè tutti i valori MA per questo periodo sono stati enumerati. Ma il calcolo è sbagliato in questo posto - range = (Ma1 - Ma2)/Point;
if(range > maxrange) maxrange = range;
Beh, bisogna controllare cosa viene inserito. Quali valori variabili sono coinvolti nei calcoli?