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

 
WinZip:
Potete consigliarmi su questo problema? Sto facendo un Expert Advisor di trading, per comodità ho fatto una copia dell'Expert Advisor come uno nuovo, e sto sperimentando lì. Ma un'ora fa Expert Advisor per gli esperimenti ha iniziato a restituire l'errore "Trading for Expert Advisor is prohibited". Ho due Expert Advisor quasi identici, uno fa trading e un altro no. Ho perso il momento in cui il mio Expert Advisor ha smesso di fare trading. Come faccio a calcolare ciò che è proibito scambiare? Ho provato a fare la funzione per chiudere i trade, ma quando cancello tutto ciò che ho aggiunto, ancora non scambia.

Nelle sue impostazioni, spunta la casella per permettergli di commerciare.

 
I registri e i risultati dei test a 0 hanno riempito l'unità C, c'è un modo per cambiare l'altra unità per i registri nelle impostazioni?
 

Mi scuso per la domanda stupida, che probabilmente è stata discussa un milione di volte...

Come mai non ricevo le notifiche delle risposte o anche delle cancellazioni delle discussioni... Non nella posta o nei messaggi locali... ?

E come posso rimediare? Penso che sia controllato ma non funziona...

 
//+------------------------------------------------------------------+
int OnInit()
  {
  datetime open_bars_time = iTime(NULL,0,0); 
  Alert("старт ",open_bars_time);
  int i=0;
  while(iTime(NULL,0,0)==open_bars_time && !IsStopped()) 
  {Comment(iTime(NULL,0,0));}
  Alert("Цикл закончен",open_bars_time);
//--- create timer
   EventSetTimer(Period()*60);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

требуется запускать прогу в начале бара. Почему значение возвращаемое iTime(NULL,0,0) не изменяется?
 
Sergey Guliaev:

Dovete aggiungere Sleep() e RefreshRates() al ciclo, altrimenti non si muove nulla.

E in generale, l'idea è fondamentalmente sbagliata. Non potete farlo in OnInit.

Se devi aspettare l'apertura della barra - devi aspettare in OnTick. Se volete cambiare ora - aspettate in OnTimer.

 
Maxim Kuznetsov:

Dovete aggiungere Sleep() e RefreshRates() al ciclo, altrimenti non si muoverà nulla.

e l'idea è fondamentalmente sbagliata. Non si può fare questo in OnInit

Se è necessario aspettare l'apertura della barra - dovrebbe essere fatto in OnTick. Se devi aspettare il cambio dell'ora, devi aspettare su OnTimer.

Grazie. Il compito è quello di garantire che il primo tick abbia +/- un paio di secondi all'inizio della barra. Secondo le mie osservazioni, i tick non sono sincronizzati con l'inizio della barra.

 
Sergey Guliaev:

Grazie. L'obiettivo è che il primo tick sia +/- un paio di secondi all'inizio della barra. Secondo le mie osservazioni i tick non sono sincronizzati con l'inizio della barra.

Le sue osservazioni sono strane. Avete confuso causa ed effetto. Non i tick dipendono dalle barre, ma l'apertura di una nuova barra dipende dall'arrivo di un nuovo tick. Se non c'è il segno di spunta, non c'è la barra. Questo succede spesso nei verbali.

 

Buon pomeriggio colleghi!

Non riesco a capire il motivo, ho il volume (LotSize) calcolato in base al rischio. Quando tolgo la dimensione del lotto con il messaggio Alert(LotSize), mostra 0,12 per esempio, ma la funzione OrderSend si lamenta della dimensione. Quando scrivo LotSixe=0.12 nel codice; OrderSend funziona bene.

Quale può essere la ragione?

 
Sandjar Ikramov:

Buon pomeriggio colleghi!

Non riesco a capire il motivo, ho il volume (LotSize) calcolato in base al rischio. Quando tolgo la dimensione del lotto con il messaggio Alert(LotSize), mostra 0,12 per esempio, ma la funzione OrderSend si lamenta della dimensione. Quando scrivo LotSixe=0.12 nel codice; OrderSend funziona bene.

Quale può essere la ragione?

In questi casi chiedono sempre il codice... ...chissà cosa c'è scritto lì e come è scritto...

 
Sandjar Ikramov:

Buon pomeriggio colleghi!

Non riesco a capire il motivo, ho il volume (LotSize) calcolato in base al rischio. Quando tolgo la dimensione del lotto con il messaggio Alert(LotSize), mostra 0,12 per esempio, ma la funzione OrderSend si lamenta della dimensione. Quando scrivo LotSixe=0.12 nel codice; OrderSend funziona bene.

Quale può essere la ragione?

Bene... probabilmente perché sono variabili diverse... E 0,12 (virgola) non è affatto uguale a 0,12(punto)