Errori, bug, domande - pagina 2124

 
Rilevante

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2018.02.07 15:48

Per riassumere la domanda. Qual è lo scopo di CAccountInfo, COrderInfo, CSymbolInfo, CPositionInfo e CTerminalInfo?

Ho guardato il loro codice sorgente. Qual è il vantaggio di usarli?


CDealInfo e CHistoryOrderInfo - anche questi sono scritti con errori logici. Qual è lo scopo di usarli?


Bene, abbiamo CTrade. Tutto è chiaro con esso; può essere utile dove e così via. Ma che dire delle Info-classi?

Forum sul trading, sistemi di trading automatico e test di strategia

Bug, bug, domande

fxsaber, 2018.02.07 15:53

Quasi tutti i metodi nelle classi Info dovrebbero essere statici. Qual è la ragione per cui non lo è?
 
Che bel trucco!
2018.02.08 10:59:53.209 Network '8491779': no connection to MetaQuotes-Demo
2018.02.08 10:59:53.329 Network '8491779': authorization on MetaQuotes-Demo failed (Invalid account)
2018.02.08 10:59:53.904 Network current demo account '8491779' was deleted on trade server, new demo will be allocated
2018.02.08 10:59:53.904 Network demo account '8782677' was allocated on MetaQuotes-Demo


Solo che avevo un conto Netting e ho creato Hedge. Potresti ricreare l'account con le stesse impostazioni?

 
I commenti non pertinenti a questo argomento sono stati spostati in "Off-topic".
 
fxsaber:
Che bel trucco!


Solo che avevo un conto Netting e ho creato Hedge. Potresti ricreare l'account con le stesse impostazioni?

Non vedranno il tuo messaggio qui - devi scrivere al Service Desk. Non so se può essere ripristinato

 
Rashid Umarov:

Il tuo messaggio non sarà visto qui - devi scrivere al Service Desk. Non so se può essere ripristinato

Ho un numero osceno di domande nella SR. Ne ho creato un altro, ma non è critico.

 

L'errore 4109 non scompare nel tempo

Codice di prova esperto

//Test1.mq5
void OnInit() { if ( f() != ERR_SUCCESS ) EventSetTimer( 10 ); }
void OnTimer()
{
        int   last_error = f();
        if (  last_error == ERR_SUCCESS ) EventKillTimer();
static int count = 1;
        Print( "Повтор (", count++, ")… результат: ", last_error );
}
int f( long value=-1 ) { return ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0,value) ? ERR_SUCCESS : GetLastError(); }

Quando si lancia il terminale, in alcuni casi viene restituito il seguente risultato (*): l'errore 4109 non scompare affatto

2018.02.09 00:25:24.200 Test1 (ETHUSD,W1) Ripeti (1)... risultato: 0
2018.02.09 00:25:24.204 Test1 (EURUSD,D1) Ripeti (1)... risultato: 0
2018.02.09 00:25:24.204 Test1 (BTCUSD,M15) Ripeti (1)... risultato: 4109
2018.02.09 00:25:24.204 Test1 (BTCUSD,H1) Ripeti (1)... risultato: 4109
2018.02.09 00:25:24.205 Test1 (ZECUSD,D1) Ripeti (1)... risultato: 0
2018.02.09 00:25:24.205 Test1 (BTCUSD,M15) Ripeti (1)... risultato: 0
2018.02.09 00:25:24.343 Test1 (BTCUSD,D1) Ripeti (1)... risultato: 4109
2018.02.09 00:25:24.439 Test1 (BTCUSD,W1) Ripeti (1)... risultato: 4109
2018.02.09 00:25:34.195 Test1 (BTCUSD,H1) Ripeti (2)... risultato: 4109
2018.02.09 00:25:34.195 Test1 (BTCUSD,M15) Ripeti (2)... risultato: 4109
2018.02.09 00:25:34.348 Test1 (BTCUSD,D1) Ripeti (2)... risultato: 4109
2018.02.09 00:25:34.444 Test1 (BTCUSD,W1) Ripeti (2)... risultato: 4109
2018.02.09 00:25:44.203 Test1 (BTCUSD,M15) Ripeti (3)... risultato: 4109
2018.02.09 00:25:44.204 Test1 (BTCUSD,H1) Ripeti (3)... risultato: 4109
2018.02.09 00:25:44.367 Test1 (BTCUSD,D1) Ripeti (3)... risultato: 4109
2018.02.09 00:25:44.452 Test1 (BTCUSD,W1) Ripeti (3)... risultato: 4109
2018.02.09 00:25:54.214 Test1 (BTCUSD,M15) Ripeti (4)... risultato: 4109
2018.02.09 00:25:54.214 Test1 (BTCUSD,H1) Ripeti (4)... risultato: 4109
2018.02.09 00:25:54.381 Test1 (BTCUSD,D1) Ripeti (4)... risultato: 4109
2018.02.09 00:25:54.467 Test1 (BTCUSD,W1) Ripeti (4)... risultato: 4109
2018.02.09 00:26:04.221 Test1 (BTCUSD,M15) Ripeti (5)... risultato: 4109
2018.02.09 00:26:04.221 Test1 (BTCUSD,H1) Ripeti (5)... risultato: 4109
2018.02.09 00:26:04.395 Test1 (BTCUSD,D1) Ripeti (5)... risultato: 4109
2018.02.09 00:26:04.459 Test1 (BTCUSD,W1) Ripeti (5)... risultato: 4109
2018.02.09 00:26:14.247 Test1 (BTCUSD,M15) Ripeti (6)... risultato: 4109
2018.02.09 00:26:14.247 Test1 (BTCUSD,H1) Ripeti (6)... risultato: 4109
2018.02.09 00:26:14.402 Test1 (BTCUSD,D1) Ripeti (6)... risultato: 4109
2018.02.09 00:26:14.464 Test1 (BTCUSD,W1) Ripeti (6)... risultato: 4109
2018.02.09 00:26:24.265 Test1 (BTCUSD,M15) Ripeti (7)... risultato: 4109
2018.02.09 00:26:24.267 Test1 (BTCUSD,H1) Ripeti (7)... risultato: 4109
2018.02.09 00:26:24.399 Test1 (BTCUSD,D1) Ripeti (7)... risultato: 4109
2018.02.09 00:26:24.468 Test1 (BTCUSD,W1) Ripeti (7)... risultato: 4109 ecc. all'infinito

Ma in molti casi, il risultato è abbastanza buono (**): l'errore scompare alla 2a iterazione

2018.02.09 00:29:45.470 Test1 (BTCUSD,D1) Ripeti (1)... risultato: 0
2018.02.09 00:30:14.215 Test1 (BTCUSD,M15) Ripeti (1)... risultato: 4109
2018.02.09 00:30:14.215 Test1 (BTCUSD,D1) Ripeti (1)... risultato: 0
2018.02.09 00:30:24.209 Test1 (BTCUSD,M15) Ripeti (2)... risultato: 0

Ma è scomparso solo in un semplice esempio di test, anche se si fa un ritardo nell'EventSetTimer( 100 ), non cambierà nulla in un EA reale. L'errore può scomparire se si seleziona la scheda corrispondente del grafico problematico e si clicca su di essa (perché ha un effetto???), per esempio, selezionando BTCUSD,W1 e cliccando su di essa si ottiene un risultato positivo alla prossima iterazione:

Test1 (BTCUSD,W1) Ripetere (8)... risultato: 0

Il profilo di prova si presentava così:


Barre massime nella finestra 100000.

Per ottenere un risultato (*), di solito è sufficiente aggiungere un paio di nuovi grafici con il relativo Expert Advisor a un profilo e riavviare il terminale

Запуск платформы - Для продвинутых пользователей - MetaTrader 5
Запуск платформы - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 

Ciao a tutti!

Qualcuno si è chiesto: come ottenere una lista di variabili esterne all'interno dell'EA? in modo da non enumerarle nuovamente nell'array? cioè quando si imposta un grafico, l'EA legge se stesso e guarda le sue impostazioni esterne.

solo attraverso un modello?

 

Costruire 1755 MT5

Quando si usa il font ROBOTO e la dimensione 9 - metà del testo non viene disegnato.


alla taglia 8 - nessun problema.


Arial è meno, ma il carattere è orribile.

 

Transazioni duplicate quando si usa un UPU di terze parti

Problema della sessione. Quando il precedente non è stato chiuso e se ne apre uno nuovo. il vecchio terminale funziona e il nuovo terminale funziona. ottiene un duplicato. :-)

@fxsaber da qualche parte hai scritto su come tracciare questo. non riesco a trovare

 
Vladislav Andruschenko:

Ciao a tutti!

Qualcuno si è chiesto: come ottenere una lista di variabili esterne all'interno dell'EA? in modo da non enumerarle ripetutamente nell'array? cioè quando si installa su un grafico, l'EA legge se stesso e guarda le sue impostazioni esterne.

Solo attraverso il modello?

Sì, usando il modello.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

input string Input1 = "Hello World!";
input int Input2 = 123;

string GetExpertData( const ulong Chart = 0 ) 
{ 
  string Str = NULL; 

  MqlParam Parameters[]; 
  string Names[]; 

  if (EXPERT::Parameters(Chart, Parameters, Names)) 
  { 
    Str += "\n" + ChartSymbol(Chart) + " " + EnumToString(ChartPeriod(Chart)) + " " + Parameters[0].string_value + "\n"; 

    const int Amount = ArraySize(Names); 

    for (int i = 0; i < Amount; i++) 
      Str += (string)i + ": "+ Names[i] + " = " + Parameters[i + 1].string_value + "\n"; 
  } 

  return(Str); 
}

void OnInit()
{
  Print(GetExpertData());
}


Il risultato è

0: Input1 = Hello World!
1: Input2 = 123


o come segue

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

input string Input1 = "Hello World!";
input int Input2 = 123;

void OnInit()
{
  MqlParam Parameters[];
  string Names[];   
  
  if (EXPERT::Parameters(0, Parameters, Names))
    ArrayPrint(Parameters);
}


Risultato

    [type] [integer_value] [double_value]      [string_value]
[0]    ...               0        0.00000 "Experts\Test2.ex5"
[1]    ...               0        0.00000 "Hello World!"     
[2]    ...             123      123.00000 "123"