Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 40
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
Correggere
Non c'è altro modo di metterlo da nessun'altra parte, sarebbe un parametro sbagliato
Dovrebbe prendere in considerazione il più recente.
Cercherò di cambiarlo.
Ho provato a usare OrderModify() standard, ma si blocca se muovo molti ordini simultaneamente e costantemente
Grazie per la critica.
Dichiararlo SENZA ARGOMENTI, è davvero così difficile?
{код функции}
E chiamare anche uno vuoto, e mettere l'elza fuori da lì dietro le parentesi graffe:
else {когда есть ордера}
E ora avete questo:
Prova ^_~
Non funziona... Niente scambi, niente scambi...
Mette almeno gli ordini pendenti, no, quali sono gli errori?
...l'ho aggiustato.
Argomenti finiti. il terminale si blocca.
Quindi una specie di loop si sta agitando all'infinito.
Scrivere #property strict all'inizio del codice e sistemarlo, un sacco di avvertimenti.
È abbastanza possibile la divisione per 0 nell'ultima funzione.
Altrimenti solo la prima linea sarà eseguita, il blocco di parentesi è lasciato orfano.
In generale, scrivete prima la logica su carta con le parole, altrimenti è traballante.
Si suppone che esegua un comando con un punto decimale fluttuante a seconda dei decimali sul grafico
NormalizeDouble(Ask+TakeProfit*Point(),Digits)
e come ha visto che alcune linee non sono state eseguite?
Si suppone che esegua un comando con un punto decimale fluttuante a seconda dei decimali sul grafico
NormalizeDouble(Ask+TakeProfit*Point(),Digits)
Come fate a sapere che alcune linee non vengono eseguite?
Sì, ho grossi problemi con la logica. E cosa rimarrebbe del risultato se fosse scritto in una variabile intera? Qual è lo scopo di questo codice?
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);
Qui, è così difficile capire che una parte del codice è orfana e sarà eseguita indipendentemente dalla condizione?
otype=FindLastOType(); //код, исполняющийся для else
{
код-сирота
}
Sì, c'è un grosso problema di logica. E cosa rimane del risultato se viene scritto in una variabile intera? Qual è lo scopo di questo codice?
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);
È così difficile capire che una parte del codice è orfana e non verrà eseguita?
otype=FindLastOType(); //код, исполняющийся для else
{
код, который никуда не идёт, сирота
}
Fermare
se ci sono ordini
Il tipo di ordine è
{
allora le operazioni vengono eseguite per quel tipo di ordine
}
non è?
Non riesco a capire da dove viene lo zero divideFermare
se ci sono ordini
è il tipo di ordine
{
allora le operazioni sono eseguite per questo tipo di ordine
}
No?
Sì, hai ragione, è solo che il codice è scritto in uno stile tale che il precedente interlocutore lo ha interpretato male.
Aggiunto:zero divide è una divisione per zero, e ti dice nel log quale linea
Fermare
se ci sono ordini
è il tipo di ordine
{
allora le operazioni sono eseguite per questo tipo di ordine
}
No?
Corretto sopra. Ciò che viene dopo else viene eseguito a seconda della condizione. Il blocco di parentesi graffe è separato, quindi non ha niente a che fare con altro.
È qui che
{
double avg_price; //+------------средняя цена
price=0;//+------------цена
bool z;//+------------выход в переменную
double orderlots=0; //+------------лоты
avg_price=NormalizeDouble(price/orderlots,Digits);//+------------то средняя ценаравна цена деленная на лот