Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 40

 
trader781:

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?

int Counts()
{код функции}

E chiamare anche uno vuoto, e mettere l'elza fuori da lì dietro le parentesi graffe:

if(Counts()==0){че там нужно когда нет ордеров}
else {когда есть ордера}

E ora avete questo:

if(Counts()==0){че там нужно когда else {когда есть ордера} нет ордеров}
 
Alekseu Fedotov:

Prova ^_~



Non sta funzionando ... Non c'è ancora un accordo.
 
Movlat Baghiyev:
Non funziona... Niente scambi, niente scambi...

Mette almeno gli ordini pendenti, no, quali sono gli errori?

...l'ho aggiustato.

File:
0.mq4  8 kb
 
Finiti gli argomenti, il terminale si blocca.
File:
count.mq4  19 kb
 
trader781:
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.

 
Vitalie Postolache:


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?

 
trader781:

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?

int lastlot,tp;
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?

else//+-------------если ордера уже есть
otype=FindLastOType(); //код, исполняющийся для else
{
код-сирота
}
 
Vitalie Postolache:

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?

int lastlot,tp;
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?

else//+-------------если ордера уже есть
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 divide
 
trader781:

Fermare

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

 
trader781:

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.

Non riesco a capire da dove viene lo zero divide.

È qui che

void ModifyOrders() //+------------модификация ввод тип
  {
   double avg_price; //+------------средняя цена
   price=0;//+------------цена
   bool z;//+------------выход в переменную
   double orderlots=0; //+------------лоты

   avg_price=NormalizeDouble(price/orderlots,Digits);//+------------то средняя ценаравна цена деленная на лот
@Vitaly Muzichenko Dov'è "mal interpretato" qui? Usa il tuo cervello.