Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 627
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
Potete dirmi come calcolare il collaterale di una transazione?
Provato due approcci
(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)
E questo
FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);
double val=AccountFreeMargin()-FreeMarginCheck;
Il primo dà strani risultati su EURJPY se la mia valuta di deposito è USD. Devo aggiungere qualcosa alla formula?
Anche il secondo funziona solo una volta, a volte dà il valore giusto, a volte dà delle sciocchezze (dipende dal deposito)
La seconda variante è il modo corretto di calcolare il deposito. Per essere più precisi, la variabile val mostra il valore dei fondi liberi dopo che l'ordine è stato effettuato e la variabileFreeMarginCheck mostra il valore del deposito stesso
La seconda opzione è il modo corretto di calcolare il margine, ovvero si ottiene il valore dei fondi liberi nella variabile val dopo aver piazzato un ordine, e la variabileFreeMarginCheck è il valore del margine stesso
Sei sicuro?
AccountFreeMarginCheck
Restituisce la quantità di fondi liberi che rimarrà dopo l' apertura dell'ordine specificato al prezzo corrente nel conto corrente.
C'è anche una sottigliezza:
Se le contrattazioni sono aperte, cioè c'è un blocco completo o incompleto sul conto, la funzione può dare valori errati.
Sei sicuro?
Sì, hai ragione, è proprio così:
Restituisce la quantità di fondi liberirimanenti dopo aver aperto l'ordine specificato al prezzo corrente nel conto corrente.
per quanto riguarda gli scambi aperti, bisogna controllare, non ricordo, ma molto probabilmente quello che il terminale scrive, dovrebbe essere d'accordo con i dati calcolati: il numero totale di lotti in ogni direzione degli scambi (BAY/SELL) per tutti i simboli poi chiamare per ogni simbolo
AccountFreeMarginCheck() passando i lotti in ogni direzione e sommando questi risultati
Il mercato funziona oggi, è facile controllarlo, come questo
Saluti, potreste dirmi cosa c'è di sbagliato nella funzione? La funzione esegue una pausa di trading per tempo, i parametri sono inizio pausa e fine pausa.
La funzione legge l'ora non dal server del broker, ma dal computer, nonostante il fatto che TimeCurrent sia prescritto. In generale, i trade sono chiusi durante la pausa, cioè la funzione non funziona.
Saluti, potreste dirmi cosa c'è di sbagliato nella funzione? La funzione esegue una pausa di trading per tempo, i parametri includono l'inizio della pausa e la fine della pausa.
La funzione legge l'ora non dal server del broker, ma dal computer, nonostante il fatto che TimeCurrent sia prescritto. In generale, i trade sono chiusi durante una pausa, significa che la funzione non funziona.
StampeTimeStart eStrToTime(TimeStart);
poi unprintTimeCurrent()
iltuoTimeStart non è in formato datetime completo, cioè l'ora sarà sempre il giorno, il mese e l'anno corrente quando lanci l'EA, e poi cambierà?
E globalmente ... per determinare le ore e i minuti di trading le ore e i minuti devono essere confrontati con l'ora e i minuti del server, si confronta solo il fatto che il tempo del server è più lungo di quello specificato
SZZ: per risparmiare confusione, potetepensare a datetime come a un int, che è e confrontando 2datetime, state confrontando 2 int
PSPS:
il tuo codice probabilmente funzionerà, dovresti provare così:
Di solito conto il tempo in questo modo:
int h = TimeHour(TimeCurrent());
int m = TimeMinute(TimeCurrent());
e poi confrontarlo con le impostazioni EA
Grazie, cercherò di capirlo, sono solo un principiante), con l'opzione && invece di ||| non ho ancora provato online, comunque in tester questo codice funziona, legge il tempo dal terminale, nessuna chiusura di ordini durante la pausa, ma online è diverso.
Ciao, il terminale non si avvia nel tester di strategia. Imposto la data, per esempio (2017,04,01 a 2018,05,29), premo start, dà subito uno stop. Nel registro c'è scritto quanto segue,
TestGenerator: nessun dato storico 'EURUSD30' dal 2017.04.01 al 2018.05.29. E così su qualsiasi segmento. Il mio computer funziona, ho pensato che potrebbe non avere abbastanza RAM. Stessa cosa sul computer di casa, il riavvio non aiuta, ma funziona per un po'. Ho scaricato Expert Advisor dal mercato, in prova. Se qualcuno ne conosce la ragione, per favore consigliatelo.
Ciao, il terminale non si avvia nel tester di strategia. Imposto la data, per esempio (2017,04,01 a 2018,05,29), premo start, dà subito uno stop. Nel registro c'è scritto quanto segue,
TestGenerator: nessun dato storico 'EURUSD30' dal 2017.04.01 al 2018.05.29. E così su qualsiasi segmento. Il mio computer funziona, ho pensato che potrebbe non avere abbastanza RAM. Stessa cosa sul computer di casa, il riavvio non aiuta, ma funziona per un po'. Ho scaricato l'Expert Advisor dal Market, in prova. Se ho un'idea della ragione, potete darmi un suggerimento?
Credo che il tester dica che non ci sono dati storici, premere F2 e scaricare la storia, poi riavviare il terminale
Ciao, il terminale non si avvia nel tester di strategia. Imposto la data, per esempio (2017,04,01 a 2018,05,29), premo start, dà subito uno stop. Nel registro c'è scritto quanto segue,
TestGenerator: nessun dato storico 'EURUSD30' dal 2017.04.01 al 2018.05.29. E così su qualsiasi segmento. Il mio computer funziona, ho pensato che potrebbe non avere abbastanza RAM. Stessa cosa sul computer di casa, il riavvio non aiuta, ma funziona per un po'. Ho scaricato Expert Advisor dal mercato, in prova. Se conosco la ragione, per favore consigliatemi?
L'assenza di dati storici significa qualcosa?
Penso che il tester ti stia dicendo che non ci sono dati storici, premi F2 e scarica la storia, poi ricarica il terminale
Grazie! Farò un tentativo. L'aggiornamento del terminale lo influenza in qualche modo? Che sia aggiornato o meno, anche se ve lo dirà lui stesso......