Errori, bug, domande - pagina 621

 
sergey1294:
Prima di tutto dividete gli interi in modo da ottenere un intero, leggete la conversione dei tipi https://www.mql5.com/ru/docs/basis/types/casting
Sì, ma prima non era così. Non mi sono nemmeno preoccupato.
 
ivandurak:
Sì, infatti, ma prima non lo era. Non mi sono nemmeno preoccupato.

Una volta era in quattro? perché in cinque lo era dall'inizio e lo sarà sempre (1/2=0; 1./2.=0.5).

Se volete specificare i duplicati aggiungete esplicitamente un punto.

// Script program start function                                    
void OnStart()
  {
   int i;
   double   a,b ;
   for(i=0;i<10;i++)
      {
         a=1./2.;
         b=1./2.;
         Print("a=",a," ","b=",b) ;
      }   
  }
 
Urain:

Una volta era in quattro? Perché era in cinque fin dall'inizio.

Se vuoi specificare esplicitamente i duplicati, aggiungi un punto fermo.

Questo non è mai successo né nel quattro né nel cinque.

L'aritmetica degli interi (e anche sotto forma di costanti intere pure) non è ambigua.

 

Ho riscontrato una discrepanza tra il tester e il conto demo:

Dopo un'operazione di trading riuscita, i campi dei prezzi sono compilati in modo diverso nella struttura di risposta del server di trading. Nel conto demo tutto è come dovrebbe essere nel campo del prezzo - il prezzo al quale la transazione è stata fatta, nel tester questo campo rimane 0.

Per testare, ho abbozzato un Expert Advisor che compra ogni tick e visualizza il codice di ritorno e il prezzo nel log:

//+------------------------------------------------------------------+
//|                                                  test-expert.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
         MqlTradeRequest trade_request;
         MqlTradeResult  trade_result;
         ZeroMemory(trade_request);
         ZeroMemory(trade_result);
         trade_request.action=TRADE_ACTION_DEAL; 
         trade_request.volume=0.1; 
         trade_request.type=ORDER_TYPE_BUY; 
         trade_request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK); 
         trade_request.symbol=_Symbol;
         OrderSend(trade_request,trade_result);
         Print(trade_result.retcode, "купили по цене ",trade_result.price);
  }
//+------------------------------------------------------------------+

Quando lo eseguo su un conto demo il log contiene le seguenti stringhe:

2012.01.16 12:48:29 test-expert (EURUSD,H1) 10009 comprato a 1,266

E quando si esegue nel visualizzatore questi :

2012.01.16 12:49:12 2011.12.30 00:00:11 10009 comprato al prezzo di 0,0

Ditemi, è un bug, un errore, o faccio qualcosa di sbagliato?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 

C'è un modo per gestire la preistoria nel tester.

Un test per 1 ora, dal periodo 1.01.2011 fino ad oggi carica solo 6000 barre. Nelle impostazioni è - max bar illimitato. la storia è tutta caricata dal 1971 al minuto.

 

Questa domanda è sorta inaspettatamente:

Quando si carica un indicatore tramite iCustom in un Expert Advisor, l'indicatore viene caricato e funziona correttamente - l'unica cosa è che la sua funzione OnTimer non viene chiamata.

È previsto che sia così o è un bug?

Lo stesso indicatore appena attaccato a un grafico funziona bene.

Costruire 574.

 
Dima_S:

Questa domanda è sorta inaspettatamente:

Quando si carica un indicatore tramite iCustom in un Expert Advisor, l'indicatore viene caricato e funziona correttamente - l'unica cosa è che la sua funzione OnTimer non viene chiamata.

Dovrebbe essere così o è un bug?

È stato progettato così.
 
antt:
È così che deve essere.
Molto originale)
 
Dima_S:
Molto originale)

Gli eventi del timer sono generati per il grafico e da lì ai programmi che girano su di esso (lanciati sopra di esso). Questa è l'ideologia - Esecuzione del programma:

Il terminale client invia gli eventi generati ai grafici aperti appropriati. Anche gli eventi possono essere generati dai grafici (eventi del grafico) o dai programmi mql5 (eventi personalizzati). La generazione di eventi di creazione e cancellazione di oggetti grafici in un grafico può essere abilitata o disabilitata impostando le proprietà CHART_EVENT_OBJECT_CREATE e CHART_EVENT_OBJECT_DELETE di un grafico. Ogni programma mql5 e ogni grafico ha la sua coda di eventi, dove vengono memorizzati tutti i nuovi eventi.

Il programma riceve solo eventi dal grafico su cui è in esecuzione. Tutti gli eventi sono processati uno dopo l'altro nell'ordine in cui vengono ricevuti.

Pertanto, l'indicatore chiamato da Expert Advisor non riceve eventi del timer. Prova ad applicare l'indicatore al grafico usando la funzione ChartIndicatorAdd dall'Expert Advisor, cambierà qualcosa?

 
Dima_S:
Molto originale)
L'evento era originariamente destinato agli esperti ed è essenzialmente un evento grafico. L'uso dell'evento negli indicatori è stato aggiunto più tardi e con la restrizione che l'indicatore deve essere aggiunto al grafico.