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

 
novichok2018:

Questa corrispondenza mostra solo che nel mio casoif(!rost) non è la stessa cosa diif(rost==false). Perchéc'è una condizione separata per ilfalso.

È necessario iniziare con le basi. Sono due voci assolutamente identiche.

 
Artyom Trishkin:

Sono due voci assolutamente identiche.

Solo se la logica di μl4 non corrisponde alla logica del russo (e alla logica matematica). Poiché l'espressione ("NOT "rost) non significa che rost==(uguale)falso, perché c'è una condizione separata che stabilisce quando rost==falso. Quindi "non 5" non significa affatto "2".

 
novichok2018:

Solo se la logica di μl4 non corrisponde alla logica del russo (e alla logica matematica). Poiché l'espressione ("NOT "rost) non significa che rost==(uguale)falso, perché c'è una condizione separata che stabilisce quando rost==falso. Cioè "non 5" non significa affatto "2".

Se volete che rost non sia né 5 né 2, allora impostate rost come int
 
novichok2018:

Solo se la logica di µl4 non corrisponde alla logica del russo (e alla logica matematica). Poiché l'espressione ("NOT "rost) non significa che rost==(uguale)falso, perché c'è una condizione separata che stabilisce quando rost==falso. Cioè "non 5" non significa affatto "2".

Impara le basi ;)

Non solo, ma se si imposta bool rost come 5 o 2, o -5 o -2, è ovviamente vero, perché per le variabili booleane falso è zero, vero è tutto il resto.

 
Artyom Trishkin:

Impara le basi ;)

Non solo, ma se si imposta bool rost come 5 o 2, o -5 o -2, allora è sicuramente vero, perché per le variabili booleane falso è zero, vero è tutto il resto.

Quindi stai cercando di spiegarmi la stessa cosa cheVladislav Andruschenko ha spiegato prima, ma non l'ho capita:"La seconda linea non ha importanza perché hai rost = bool e può prendere solo 2 valori e per default è false" .

Allora come faccio a specificare la seconda condizione? Con una bandiera in più? O nessuna bandiera, solo "condizione nelle condizioni"? Sicuramente questo è meglio.

Grazie.

 
novichok2018:

Quindi stai cercando di dirmi la stessa cosa cheVladislav Andruschenko ha spiegato prima, ma non capisco:"La seconda linea non ha importanza, perché hai rost = bool e può prendere solo 2 valori e per default è false" .

Allora come faccio a specificare la seconda condizione? Con una bandiera in più? O nessuna bandiera, solo "condizione nelle condizioni"? Questo è probabilmente meglio.

Sarà più facile da capire se darete per scontato che i linguaggi di programmazione hanno delle convenzioni. Per esempio, n=n+10; è corretto dal punto di vista della matematica e della logica? E ci sono molte convenzioni di questo tipo. Dovreste credere che qualsiasi numero corrisponde a un valore logico. 0 = falso; Tutti gli altri numeri, sia positivi che negativi = vero. Ecco uno script per provarlo:

//+------------------------------------------------------------------+
//| Логика языка mql-4                                     PROBA.mq4 |
//+------------------------------------------------------------------+
#property strict
void OnStart()
{
  string s1="Числовое значение n:   ";
  string s2="Логическ значение n: ";
  string s3="ЛогичЧис значение x: ";
  string s4="Числовое значение x:   ";
  bool x;
  int k;
  Alert("-------------------------");
  for(int n=-4; n++<3;)                  // Вот еще: можно ли так цикл записать?  а Вы попробуйте!!!
  {
     s1 +=string(n)+"        ";
     s2 += (n ? "TRUE" : "false")+"   ";
     x=n;
     s3 += (x ? "TRUE" : "false")+"   ";
     k=x;
     s4 += (string)k + "         ";
  }
  Alert(s4);
  Alert(s3);
  Alert(s2);
  Alert(s1);
}

Ed ecco il risultato:

 
STARIJ:

Sarà più facile per voi capire se prendete per buono che ci sono delle convenzioni nei linguaggi di programmazione. Per esempio, n=n+10; è matematicamente e logicamente corretto? E ci sono molte convenzioni di questo tipo. Dovreste credere che qualsiasi numero corrisponde a un valore logico. 0 = falso; Tutti gli altri numeri, sia positivi che negativi = vero. Ecco uno script per provarlo:

Ed ecco il risultato:

Grazie! Ho capito delle convenzioni, ne terrò conto. Ma per capire lo script suggerito, ahimè, la mia conoscenza di mcl4 non è sufficiente. Mi dispiace :( .

 
Il conto ha esaurito i fondi e l'EA sta cercando di aprire un ordine. Il server ha scritto"non abbastanza fondi per..." e alla fine BANNATO. C'è modo di non provare se non ci sono più soldi?
 
PolarSeaman:
Il conto ha esaurito i fondi e l'EA sta cercando di aprire un ordine. Il server dice "non ci sono abbastanza fondi per..." e finisco per essere bannato. C'è un modo per smettere di provare se non abbiamo più soldi?

Sì, c'è.

AccountFreeMarginCheck - Информация о счете - Справочник MQL4
AccountFreeMarginCheck - Информация о счете - Справочник MQL4
  • docs.mql4.com
Размер свободных средств, которые останутся после открытия указанного ордера по текущей цене на текущем счете. Если свободных средств не хватает, то будет сгенерирована ошибка 134 (ERR_NOT_ENOUGH_MONEY).
 
Ihor Herasko:

Sì, c'è.

Grazie.

Motivazione: