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 qualche motivo non riesco a ottenere il profitto del conto corrente nella funzione OnTester
Questo è il modo in cui ottengo 0
double OnTester()
{
return(AccountInfoDouble(ACCOUNT_PROFIT));
}
Ed è così che ottengo il profitto:
double OnTester()
{
return(AccountInfoDouble(ACCOUNT_BALANCE)-100000);
}
Di cosa stiamo discutendo?
PS Ci sarà sicuramente un messaggio (forse qualche riga più sotto)
Glory sono d'accordo - tutti questi argomenti sono così dispendiosi in termini di tempo, al diavolo gli argomenti. :)
Ma così, quello che si chiama sulla gamba - voi, sono sicuro, sapete tutto perfettamente da soli, ma ancora, se questa funzione è esterna e dichiarata solo tramite dichiarazione, ci sono tali modificatori come "const" e "in" e "out". Forse c'è un difetto in questa funzione. Il fatto è che se è un parametro restituibile, nel caso in cui non venga restituito (nel caso in cui venga restituito tramite "return") viene dato un avviso e avendo una seconda forma di funzione, quando il valore di ritorno viene restituito tramite parametro, dovrebbe essere dato anche un avviso, perché è un valore restituibile. Altrimenti, se il risultato di successo/fallimento fosse restituito tramite un parametro e il valore stesso fosse restituito tramite return, sarebbe impossibile. E il successo o il non successo è anche SEMPRE restituito. In altre parole - ( http://users.telenet.be/bart.demeyere/C++InOutParameters.html ) ecco una soluzione che esiste da molto tempo.
Ma la conversazione in generale come ho notato nulla circa. IMHO, è necessario rispondere a tali domande, se non si prevede di cambiare qualcosa cardinalmente nell'attuale implementazione qualcosa come questo :) - "Sì, c'è un tale problema, sarà risolto nelle prossime versioni del programma, ora abbiamo sistemato il codice, e stiamo solo sistemando gli errori". Nessuno (credo che anche i più inadeguati) si offenderà, ma semplicemente risolvere il problema in sé è importante e necessario.
Quindi, se ci saranno o meno in questa versione tali modificatori molto ( MOLTO ) utili in out e altri, essi permettono significativamente di minimizzare gli errori.
***
Ci vorrà mezza giornata per fare tutta questa corrispondenza. Ho finito. :)
Per qualche motivo non riesco a ottenere il profitto del conto corrente nella funzione OnTester
Questo è il modo in cui ottengo 0
double OnTester()
{
return(AccountInfoDouble(ACCOUNT_PROFIT));
}
Ed è così che ottengo il profitto:
double OnTester()
{
return(AccountInfoDouble(ACCOUNT_BALANCE)-100000);
}
Dichiarare una variabile globale e assegnarle il valore attuale del bilancio in OnInit().
In OnTester() calcola il profitto totale basato sui risultati di tutte le transazioni completate:
e lo si emette in OnTester().
E quello che state cercando di ottenere ora è il profitto corrente non fissato , che è zero se tutte le posizioni sono chiuse.
Glory sono d'accordo - tutti questi dibattiti sono così dispendiosi in termini di tempo, non preoccupatevi di loro (dibattiti). :)
Ci saranno in questa versione tali modificatori molto ( MOLTO ) utili in out e altri, permettono di minimizzare gli errori.
"Di cosa stiamo discutendo?" - è una frase della mia infanzia che significa "di cosa stiamo discutendo?
Passare un parametro per riferimento è esattamente ciò che significa inout. Ci sono semplicemente implementazioni che sono fuori dal controllo del compilatore.
In effetti, è abbastanza facile analizzare il flusso di esecuzione inserendo delle funzioni (l'esempio fornito da Rashid). Abbiamo deliberatamente rifiutato questo approccio. Il vero motivo era che avrebbe aumentato il nostro tempo di compilazione in modo significativo. Ecco perché abbiamo scelto il modo più semplice: mostrare un avvertimento. È meglio non produrre un tale avvertimento? Sì, dovresti. Se fate un'inizializzazione esplicita, non ci sarà nessun avvertimento.
Ripeto anche che abbiamo una stima ridotta per le espressioni logiche. Significa nel vostro caso che se il primo ObjectGetDouble restituisce false (per esempio, perché l'oggetto, notate l'esterno del programma, improvvisamente non esiste), il secondo ObjectGetDouble non sarà chiamato
"Di cosa stiamo discutendo?" - è una frase della mia infanzia che significa "di cosa stiamo discutendo?
Passare un parametro per riferimento è esattamente ciò che significa inout. Ci sono semplicemente implementazioni che sono fuori dal controllo del compilatore.
In effetti, è abbastanza facile analizzare il flusso di esecuzione inserendo delle funzioni (l'esempio fornito da Rashid). Abbiamo deliberatamente rifiutato questo approccio. Il vero motivo era che avrebbe aumentato il nostro tempo di compilazione in modo significativo. Ecco perché abbiamo scelto il modo più semplice: mostrare un avvertimento. È meglio non produrre un tale avvertimento? Sì, dovresti. Se fate un'inizializzazione esplicita, non ci sarà nessun avvertimento.
Ripeto anche che abbiamo una stima ridotta per le espressioni logiche. Significa nel vostro caso che se il primo ObjectGetDouble restituisce false (per esempio, perché l'oggetto, notate l'esterno del programma, improvvisamente non esiste), il secondo ObjectGetDouble non sarà chiamato
Giusto, non sarà chiamato - questo è un comportamento standard nel codice C.
I modificatori in e out possono essere in aggiunta ai riferimenti. E per default sono sempre dentro e fuori per i riferimenti. Ma posso passare un riferimento con il modificatore in, il che significa che il parametro di questa funzione è sempre in ingresso e non è possibile scriverci dentro anche se è passato per riferimento. Hai letto? http://users.telenet.be/bart.demeyere/C++InOutParameters.html
C'è un modificatore const. Il passaggio di un riferimento costante implica esplicitamente un parametro in senza alcun out. Sicuramente non introdurremo entità aggiuntive in, out, inout
C'è un modificatore const. Il passaggio di un riferimento costante implica esplicitamente un parametro in senza alcun out. Sicuramente non introdurremo entità aggiuntive in, out, inout
Se non lo farai, non lo farai. Ma dovete rendervi conto che allora non otterrete un'ottimizzazione decente. E se ci fosse stato OUT in quell'esempio, l'avviso non sarebbe stato generato. Ma tutto invano - IMHO - ci vorranno tre minuti ma ci sono molti meno errori. E se non vuoi usarlo, non usarlo. Allora tutto è come è sempre stato. Proprio come adesso. :)
Come si fa a fare solo OUT senza IN? Il che significa che qualcosa viene sempre restituito, sapete, come il ritorno di una funzione?
Sviluppatori.
1. Deduco che lo spread sulle principali coppie è stato martellato dal maggio 1993, circa 930 barre settimanali al momento attuale?
E nella storia profonda i bar sono stati costruiti sulla base dei giorni.
Pertanto, l'Expert Advisor può essere testato a partire esattamente da maggio 1993 (se usiamo un TF non inferiore a D1)?
Possiamo guardare più in profondità del 9 maggio 1993 su GBPUSD (come viene attuato su EURUSD)?Salve.
Puoi spiegare perché quando si crea un oggetto"Tag grafico" manualmente, non ha il file bmp specificato per gli stati on/off?
Ecco il codice:
ObjectCreate(....);
.......
ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 0, "Images\on.bmp");
ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 1, "Images\off.bmp");
L'etichetta viene creata in modo completamente corretto, nella posizione specificata, con i colori specificati, ecc., ma "Images\on.bmp" e "Images\off.bmp" non sono specificati. Se nella guida MT5
cliccate sull'elenco degli oggetti e impostate manualmente questi file per il marcatore, saranno impostati. Ma perché ObjectSetString non lo fa?
Cosa ne pensate?
Cosa ne pensate?
Prova
ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 0, "\\Images\\on.bmp");
ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 1, "\\Images\\off.bmp");
I cambiamenti al certificato arriveranno presto.