Auguri per MQL5 - pagina 51

 
Ci sono piani per utilizzare i grafici "tic-tac-toe" in Metatrader? Ora devo usare Omega con tutti gli inconvenienti che comporta. Sarebbe bello vedere questo tipo di grafico in MT.
 
kombat писал (а) >>

La soluzione è abbastanza semplice...

Rinominando StatementDetailed.htm in statement.htm

Grazie, altrimenti avrei fatto fatica...

 
Pharaon писал (а) >>
Prevede qualche "tic-tac-toe" in Metatrader? Ora devo usare Omega con tutti gli inconvenienti che provoca. Sarebbe bello vedere questo tipo di grafico in MetaTrader.

Potresti mostrarmi uno screenshot? Ti piacerebbe vedere il tic-tac-toe?

 

almeno struct, enum, typedef

 

In MT4, da qualche tempo, il prezzo per gli ordini di trading potrebbe non essere normalizzato - la normalizzazione è fatta automaticamente dal terminale.

Questo di per sé è buono e corretto. I problemi arrivano se si testa un programma del genere - nel tester la normalizzazione automatica non viene eseguita. I crash dei server virtuali si verificano con tutte le loro cause.

L'uniformità è un desiderio indesiderabile. Sarebbe bene usare un blocco comune in MT5 per i calcoli nel tester e nel terminale.

 
Saluti!
Ho incontrato un problema mentre scrivevo un EA: appare un errore
ERRARE_ZERO_DIVIDERE 4013 Divisione per 0
Il codice è il seguente:
//30мин------------------Волчок ----------------------------------------------2
  if(High[1]-Open[1]!=0 && Open[1]-Close[1]!=0 && Close[1]-Low[1]!=0 && 
  Open[1]>Close[1] && (High[1]-Open[1])/(Close[1]-Low[1])>=0.85 && (Open[1]-Close[1])/(High[1]-Open[1])>=0.85 
   && (Open[1]-Close[1])/(Close[1]-Low[1])>=0.85 )
  {
  persent_sell=persent_sell+2;
  Print("Волчок 30мин sell+2");
  }
Cioè, ho controllato l'assenza di divisione per zero nella condizione, ma ahimè, l'errore si verifica, anche se capisco che questa è solo una condizione, cioè, non viene intrapresa alcuna azione, && è ovunque, e quindi in caso di mancato rispetto almeno della prima condizione, l'ulteriore lavoro di questa parte del codice non viene eseguito.
Dovete farlo:
//30мин------------------Волчок ----------------------------------------------2
  if(High[1]-Open[1]!=0 && Open[1]-Close[1]!=0 && Close[1]-Low[1]!=0)
  if(Open[1]>Close[1] && (High[1]-Open[1])/(Close[1]-Low[1])>=0.85 
   && (Open[1]-Close[1])/(High[1]-Open[1])>=0.85 
   && (Open[1]-Close[1])/(Close[1]-Low[1])>=0.85)
  {
  persent_sell=persent_sell+2;
  Print("Волчок 30мин sell+2");
  }
Con questa condizione aggiuntiva, l'errore è già assente. Ma per esempio, in questa forma con una condizione (nessuna divisione per zero)
//30мин------------------Проникающие линии -----------------------------------3
  if(High[2]-Low[2]!=0 && Open[1]>Close[1] && Open[2]<Close[2] && Close[1]<Open[2]
   && Open[1]>=(Low[2]+(High[2]-Low[2])/3) && High[1]<=(High[2]-(High[2]-Low[2])/3))
  {
  persent_sell=persent_sell+3;
  Print("Проникающие линии 30мин sell+3");
  }
l'errore non si verifica - cioè il controllo procede normalmente.
Non capisco quale sia il problema, perché capisco che il primo caso è corretto e senza errori.
 
LA CAPACITÀ DI REGISTRARE E CORREGGERE I COMMENTI QUANDO E DOPO L'APERTURA DI UN ORDINE È MOLTO CARENTE!!!
 
z_e_e_d писал (а) >>
Saluti!
Ho incontrato un problema mentre scrivevo un EA: appare un errore
ERRARE_ZERO_DIVIDERE 4013 Divisione per 0.
...

Inquietante, non voglio nemmeno affrontare le priorità delle operazioni in una tale voce...

Per cominciare, vi consiglio di mettere delle sottoespressioni generali davanti agli if...

 
z_e_e_d писал (а) >>
Saluti!
Ho incontrato un problema mentre scrivevo un EA: appare un errore
ERRARE_ZERO_DIVIDERE 4013 Divisione per 0

Avete 3 divisioni in if-e. Se (Close[1]-Low[1])==0 O (High[1]-Open[1])==0 O (Close[1]-Low[1])==0 - d'accordo - è abbastanza possibile, allora sarà una divisione per 0.

 
SK. писал (а) >>

Potresti mostrarmi uno screenshot? Ti piacerebbe vedere il tic-tac-toe?

Screenshot del grafico "tic-tac-toe" di Omega