Cercherò di trarre alcune conclusioni. Negli script, è corretto dichiarare gli array all'interno della funzione OnStart(). Dopo che l'array è stato dichiarato, deve essere necessariamente definito nelle sue dimensioni usando la funzione ArrayResize(); altrimenti il compilatore si mette in allarme. Le mie conclusioni sono corrette? In caso contrario, si prega di dare l'interpretazione corretta.
DiPach , grazie ancora per il tuo aiuto. Ho analizzato i vostri esempi. Ho apportato alcune modifiche al mio codice di avvio. Il risultato è questo:
Cosa è stato cambiato:
1. ha spostato la linea contenente la dichiarazione di int awd1[]; array all'interno della funzione OnStart()
2. Aggiunta la funzione ArrayResize(awd1,6,7);
3. Lo script funziona.
Cercherò di trarre delle conclusioni. Negli script, è corretto dichiarare gli array all'interno della funzione OnStart(). Dopo che l'array è stato dichiarato, deve essere necessariamente definito nelle dimensioni usando la funzione ArrayResize(); altrimenti il compilatore genererà un errore. Le mie conclusioni sono corrette? In caso contrario, si prega di dare l'interpretazione corretta.
In generale, sì. E funzionerà, almeno in silenzio, ma molto bene. :)
Mi limiterò a specificare i seguenti punti:
1. Quando si dichiarano le normali variabili e gli array, penso che si dovrebbe considerare ciò che lo script (o l'EA/indicatore) sta per fare e a cosa sono destinate le variabili/array.
Il flusso di lavoro del tuo script allegato permette di dichiarare le variabili non a livello globale del programma, ma localmente. Cioè, l'array è dichiarato una volta sola. Non abbiamo bisogno di dichiarazioni di loop nel corpo di Start(), per esempio, prima di iniziare il ciclo for() e quando abbiamo bisogno di ulteriori dichiarazioni di alcune variabili dopo for() {}:
Di conseguenza, l'array non è dichiarato a livello di variabili globali del programma ma nel corpo di OnStart() prima della dichiarazione del ciclo for() - è abbastanza accettabile in questo schema di esecuzione del programma.
Dal mio punto di vista, se non c'è bisogno di dichiarare qualcosa a livello di variabili globali in un programma, è meglio usare questa opportunità e dichiarare tutto ciò che possiamo localmente.
2. Per quanto riguarda il codice, lasciatemi chiarire:
Non si dovrebbe usare il segno <= (meno che uguale) in for. Voglio dire dove era (i=0;i<=5;i++). Basta mettere <(meno di) e il numero 6 invece di 5:
for(int i=0;i<6;i++)
Questo è il modo in cui il 5 sarebbe appropriato per:
for(int i=5;i>=0;i--)
Ricordo di aver incontrato in precedenza l'informazione che la funzione Stringconcatenate contribuisce a velocizzare l'elaborazione di testi lunghi. Ecco perché di solito lo uso nel mio codice. L'ho aggiunto anche qui, per sicurezza.
P./S.: Un altro chiarimento, per sicurezza, usando ArrayResize() - per gli array dinamici. Nella documentazione di questa funzione , ci sono informazioni su quando questa funzione non può ridimensionare gli array dinamici.
Ciao, come posso fare in modo che il nuovo prezzo sia mostrato per primo e il prezzo precedente scenda in basso e così via? Ho fatto un esempio per renderlo chiaro.
Ciao, come posso fare in modo che il nuovo prezzo sia mostrato per primo e il prezzo precedente scenda in basso e così via? Questo sarebbe chiaro fatto un esempio.
Ho fatto un esempio, e con le condizioni più o meno si può capire da soli:
Ciao, come posso fare in modo che il nuovo prezzo sia mostrato per primo e il prezzo precedente scenda in basso e così via? Per renderlo chiaro, ho fatto un esempio.
DiPach , grazie ancora per il tuo aiuto. Ho analizzato i vostri esempi. Ho apportato alcune modifiche al mio codice di avvio. Il risultato è questo:
Cosa è stato cambiato:
1. Ho spostato la linea contenente int awd1[]; dichiarazione dell'array all'interno della funzione OnStart()
2. Aggiunta la funzione ArrayResize(awd1,6,7);
3. Lo script funziona.
Cercherò di trarre alcune conclusioni. Negli script, è corretto dichiarare gli array all'interno della funzione OnStart(). Dopo che l'array è stato dichiarato, deve essere necessariamente definito nelle sue dimensioni usando la funzione ArrayResize(); altrimenti il compilatore si mette in allarme. Le mie conclusioni sono corrette? In caso contrario, si prega di dare l'interpretazione corretta.
DiPach , grazie ancora per il tuo aiuto. Ho analizzato i vostri esempi. Ho apportato alcune modifiche al mio codice di avvio. Il risultato è questo:
Cosa è stato cambiato:
1. ha spostato la linea contenente la dichiarazione di int awd1[]; array all'interno della funzione OnStart()
2. Aggiunta la funzione ArrayResize(awd1,6,7);
3. Lo script funziona.
Cercherò di trarre delle conclusioni. Negli script, è corretto dichiarare gli array all'interno della funzione OnStart(). Dopo che l'array è stato dichiarato, deve essere necessariamente definito nelle dimensioni usando la funzione ArrayResize(); altrimenti il compilatore genererà un errore. Le mie conclusioni sono corrette? In caso contrario, si prega di dare l'interpretazione corretta.
In generale, sì. E funzionerà, almeno in silenzio, ma molto bene. :)
Mi limiterò a specificare i seguenti punti:
1. Quando si dichiarano le normali variabili e gli array, penso che si dovrebbe considerare ciò che lo script (o l'EA/indicatore) sta per fare e a cosa sono destinate le variabili/array.
Il flusso di lavoro del tuo script allegato permette di dichiarare le variabili non a livello globale del programma, ma localmente. Cioè, l'array è dichiarato una volta sola. Non abbiamo bisogno di dichiarazioni di loop nel corpo di Start(), per esempio, prima di iniziare il ciclo for() e quando abbiamo bisogno di ulteriori dichiarazioni di alcune variabili dopo for() {}:
Di conseguenza, l'array non è dichiarato a livello di variabili globali del programma ma nel corpo di OnStart() prima della dichiarazione del ciclo for() - è abbastanza accettabile in questo schema di esecuzione del programma.
Dal mio punto di vista, se non c'è bisogno di dichiarare qualcosa a livello di variabili globali in un programma, è meglio usare questa opportunità e dichiarare tutto ciò che possiamo localmente.
2. Per quanto riguarda il codice, lasciatemi chiarire:
Cioè:
Questo è il modo in cui il 5 sarebbe appropriato per:
P./S.: Un altro chiarimento, per sicurezza, usando ArrayResize() - per gli array dinamici. Nella documentazione di questa funzione , ci sono informazioni su quando questa funzione non può ridimensionare gli array dinamici.
Perché non posso aggiungere amici?
Ciao, come posso fare in modo che il nuovo prezzo sia mostrato per primo e il prezzo precedente scenda in basso e così via? Ho fatto un esempio per renderlo chiaro.
Ciao, come posso fare in modo che il nuovo prezzo sia mostrato per primo e il prezzo precedente scenda in basso e così via? Questo sarebbe chiaro fatto un esempio.
Ho fatto un esempio, e con le condizioni più o meno si può capire da soli:
Ho fatto un esempio, e potete risolvere i termini più o meno da soli:
Ciao, come posso fare in modo che il nuovo prezzo sia mostrato per primo e il prezzo precedente scenda in basso e così via? Per renderlo chiaro, ho fatto un esempio.
Ecco un codice completamente primitivo.
Ecco un codice perfettamente primitivo fatto.
Ciao a tutti. Ho provato ad aprire un ordine di trading nello strategy tester usando uno script rudimentale, senza successo.
int start()
{
//----
int res;
double ask=Close[0]+MarketInfo(_Symbol,MODE_SPREAD)*Point;
res=OrderSend(Symbol(),OP_BUY,0.1,ask,3,0,0,",0,0,Blu);
if(res>-1)Alert("Open BUY order with ticket ",res);
//----
ritorno(0);
}
Ho messo lo script sul grafico del tester in modalità visualizzazione, ma l'ordine di trading si apre nel terminale MT4.
Inoltre non posso ottenere informazioni sugli ordini aperti nel tester di strategia usando SimpleFXTester_v2.ex4.
Per favore, aiutatemi a capire questo.
Ciao a tutti. Ho provato ad aprire un ordine di trading nello strategy tester usando uno script rudimentale, senza successo.
int start()
{
//----
int res;
double ask=Close[0]+MarketInfo(_Symbol,MODE_SPREAD)*Point;
res=OrderSend(Symbol(),OP_BUY,0.1,ask,3,0,0,",0,0,Blu);
if(res>-1)Alert("Open BUY order with ticket ",res);
//----
ritorno(0);
}
Ho messo lo script sul grafico del tester in modalità visualizzazione, ma l'ordine di trading si apre nel terminale MT4.
Inoltre non posso ottenere informazioni sugli ordini aperti nel tester di strategia usando SimpleFXTester_v2.ex4.
Per favore, aiutatemi a capire questo.