Errori, bug, domande - pagina 111

 
sergeev:

tutto combaciava.

2010.08.28 20:57:09 Servis (EURUSD,H1) L1=6653490000 L2=6653490000 L3=6653490000 M1=6653490000
2010.08.28 20:57:09 Servis (EURUSD,H1) A=665349 B=665349 C=665349
2010.08.28 20:57:09 Servis (EURUSD,H1) --- OnInit() --- 1 --- !


e il mio M1 non corrispondeva.

PQ      0       Servis (EURUSD,H8)      22:06:24        --- OnInit() --- 1 --- !!!  Старт  подготовки начальных параметров  !!!
LE      0       Servis (EURUSD,H8)      22:06:24         A=100652  B=100652  C=100652
CP      0       Servis (EURUSD,H8)      22:06:24         L1=1006520000   L2=1006520000   L3=1006520000   M1=4294966006
 
sergey1294:

A seconda di quello che ti serve il primo numero, potresti provare questo

Sì, è più facile così, non c'è nemmeno bisogno di mettere virgolette extra alla fine.
return(StringToTime((string)str.year+"."+(string)str.mon+".01 00:00"));
 
SHOOTER777:

Ancora una volta mi appello alle menti curiose!

Il codice è allegato.

Se capisco la programmazione, dovrebbe essere L1 = L2 = L3 = M1. E voi?

All'inizio il compilatore si lamentava dell'assenza di "#import "lbS7N_Servis.ex5".

Dopo aver cancellato questa linea ha ceduto:

2010.08.28 22:19:51 Servis[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=6617010000 M1=1016990000
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) A=101699 B=101699 C=661701
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !

Quando ho sostituito il numero di conto nel codice con il mio, ho ottenuto:

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=1016990000 M1=1016990000

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) A=101699 B=101699 C=101699

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !

Server MQ, build 316.

 
sergey1294:

e il mio M1 non corrispondeva

situazione unica... :(
 
Perché SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT), restituisce zero?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
sergeev:
Una situazione unica... :(

E ci sono ben tre situazioni uniche. Questi sono quelli rilevati. E quanti non rilevati?

E con questo stato di cose MetaQuotes inizia il campionato 2010 tra un mese?

Oh, MetaTrader 5 ha un sacco di cose "strane" da scoprire...

 
Kos:
Perché SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT), restituisce zero?

Inoltre, la versione che restituisce un'indicazione di successo (designata come 2. nella guida . Restituisce vero o falso a seconda del successo della funzione. Se ha successo, il valore della proprietà viene messo nella variabile di destinazione, passata per riferimento dall'ultimo parametro.) Riporta il successo della chiamata:

void OnStart()
{
  double SymbolVolumeLimit1 = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LIMIT);
  double SymbolVolumeLimit2 = DBL_MAX;

  Print("Symbol() = ", Symbol(), ", bool SymbolInfoDouble() = ", SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LIMIT, SymbolVolumeLimit2));
  Print("SymbolVolumeLimit1 = ", SymbolVolumeLimit1, ", SymbolVolumeLimit2 = ", SymbolVolumeLimit2);
}

/* Вывод в лог (хронология - сверху вниз):
JN      0       1 (EURUSD,M15)  02:41:18        Symbol() = EURUSD, bool SymbolInfoDouble() = true
JJ      0       1 (EURUSD,M15)  02:41:18        SymbolVolumeLimit1 = 0, SymbolVolumeLimit2 = 0
*/

La seconda versione di SymbolInfoDouble() restituisce true, cioè viene eseguita con successo. Potete anche vederlo nella variabile SymbolVolumeLimit2 che è stata inizialmente inizializzata con DBL_MAX ma ha ricevuto 0 dopo aver chiamato SymbolInfoDouble().

E come, secondo MetaQuotes, in tali condizioni, gli Expert Advisors dovrebbero basarsi sui valori restituiti da tali funzioni, invece di usare valori hardcoded?

 

Chi ha usato la funzione OrderCheck.

Questo è un costrutto:

           MqlTradeRequest request;
           request.action=TRADE_ACTION_DEAL;
           request.symbol=_Symbol;
           request.volume=volume_exe;
           request.price=SymbolInfoDouble(_Symbol, SYMBOL_ASK);
           request.sl=0;
           request.tp=0;
           request.deviation=SymbolInfoInteger(_Symbol, SYMBOL_SPREAD)*2;
           request.type=ORDER_TYPE_BUY;
           request.type_filling=ORDER_FILLING_CANCEL;
           MqlTradeResult result;
           OrderCheck(request, result);
           if(OrderSend(request, result)==false)

Durante la compilazione, ottengo un errore: 'result' - la conversione dei parametri non è consentita.

Se si rimuove OrderCheck, tutto si compila normalmente e la posizione si apre nel tester.

 

Ecco cos'è...

Alert(" прибыль=",ПросчетПрибылизаПериод(D'2010.08.01 00:00:00'));


double ПросчетПрибылизаПериод(datetime датаначалапросчетаприбыли)
  {
   int i;
   double прибыльзапериод;
   ulong тикет;
   HistorySelect(датаначалапросчетаприбыли,TimeCurrent());
   //HistorySelect(D'2010.08.20 00:00:00',D'2010.08.20 23:59:00');
   for(i=1;i<=HistoryDealsTotal();i=i+1)
     {
      тикет=HistoryDealGetTicket(i);
      if(HistoryDealGetInteger(тикет,DEAL_TYPE)==DEAL_ENTRY_IN || HistoryDealGetInteger(тикет,DEAL_TYPE)==DEAL_ENTRY_STATE)
         continue;
      прибыльзапериод=прибыльзапериод+HistoryDealGetDouble(тикет,DEAL_PROFIT)+HistoryDealGetDouble(тикет,DEAL_COMMISSION)+HistoryDealGetDouble(тикет,DEAL_SWAP);
     }
   return(прибыльзапериод);
  }

Dovrebbe contare i profitti degli scambi a partire dalla data specificata. Dà un risultato completamente diverso da quello che è in realtà. Per esempio ho ottenuto 611 invece del risultato di circa 2000. Ho iniziato a controllare ogni giorno (linea commentata). Ci sono(!!) giorni in cui il risultato è lo stesso, ma di solito non è quello che dovrebbe essere...(non ho trovato nessuna regolarità). E il debugger produce lo stesso identico ciclo per tutto il numero di trade. Anche se posso rintracciare solo questo numero di accordi perché nessun valore viene visualizzato per qualsiasi altra variabile tranne che per le variabili int (l'espressione non può essere valutata).

Questo codice è corretto, e sto usando il debugger correttamente...?

 
SHOOTER777:

Grazie. Contatterò gli sviluppatori allora.

Ciao, descrivi la tua situazione in dettaglio nel service desk, dove specifichi il numero di build, il sistema operativo, il bit rate e alleghi il codice.
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5