Simboli personalizzati. Errori, bug, domande, suggerimenti. - pagina 14

 

Bug 21.


2085

Dopo la riconnessione del server, tutti i simboli personalizzati creati vengono aggiunti alla panoramica del mercato.
Questo è buono quando il mercato è chiuso nei fine settimana.
Il server si riconnette occasionalmente, o dopo un riavvio del terminale al momento dell'installazione della connessione,
Il grafico del simbolo standard può riavviarsi e fare un tick, in questo momento tutti i simboli personalizzati creati vengono aggiunti alla panoramica del mercato da soli.

 

Suggerimento.

Si prega di aggiungere l'identificatoreSYMBOL_VOLUME_INITIAL per leproprietà dei simboli, e mostrare il suo valore nella specifica.
E aggiungere un identificatore appropriato per chiamare il suo valore.

CustomSymbolSetDouble(SName, SYMBOL_VOLUME_INITIAL, 0.00000000);           Результат: Initial volume == 0.00000000
 
Roman:

Bug 20.

2085
Impostazione errata delle proprietà dei caratteri personalizzati.



Dov'è il codice per la riproduzione?

 
Slava:

Dov'è il codice per la riproduzione?

Nel messaggio con il bug 20, gli identificatori sono elencati. Non li hai visualizzati nel messaggio?

 

Bug 22.

Un rollover di un tick cambia il suo prezzo di un fattore 10.

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  MathSrand((int)TimeLocal());  
  const string Name = "CUSTOM_" + _Symbol + (string)MathRand(); // Создали символ    
  
  PRINT(CustomSymbolCreate(Name)); // Создали символ по-умолчанию.
  
  // Если удалить любую из двух строк ниже, то результат будет нормальным.
  PRINT(CustomTicksDelete(Name, 0, LONG_MAX)); // Удалили тиковую историю (ее на самом деле нет).
  PRINT(CustomSymbolDelete(Name)); // Удалили символ
  
  PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Создали символ на основе главного.
    
  PRINT(SymbolSelect(Name, true)); // Добавили в Обзор рынка.

  MqlTick Tick[1];
  PRINT(SymbolInfoTick(_Symbol, Tick[0])); // Взяли свежий тик для проброса.
  ArrayPrint(Tick); // Показали тик.
  
  PRINT(CustomTicksAdd(Name, Tick)); // Пробросили тик.
  
  MqlTick NewTicks[];
  PRINT(CopyTicksRange(Name, NewTicks));  
  ArrayPrint(NewTicks); // Показали, что на самом деле пробросили.
}


Risultato

CustomSymbolCreate(Name) = true
CustomTicksDelete(Name,0,LONG_MAX) = 0
CustomSymbolDelete(Name) = true
CustomSymbolCreate(Name,NULL,_Symbol) = true
SymbolSelect(Name,true) = true
SymbolInfoTick(_Symbol,Tick[0]) = true
                 [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.06.17 02:08:35 1.12152 1.12157 0.0000        0 1560737315178       2       0.00000
CustomTicksAdd(Name,Tick) = 1
CopyTicksRange(Name,NewTicks) = 1
                 [time]    [bid]    [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.06.17 02:08:35 11.21520 11.21570 0.0000        0 1560737315178       6       0.00000
 

Ciao a tutti

questa è la prima volta che utilizzo mt, ne ho bisogno per l'analisi dei dati e la creazione di grafici

Hocreato un simbolo, ho caricato le barre da csv, posso vedere il file di dati spesso nella directory insta

Simbolo attivato, nell'orologio del mercato

Non mostrare il grafico - "In attesa di aggiornamento


Mi sono perso qualcosa?

Ho provato sia in mt4 che in mt5 - tutto è lo stesso

grafici dimostrativi - correre saltando

 
Roman:

Nel messaggio con il bug 20, gli identificatori sono elencati. Non li hai visualizzati nel messaggio?

Di nuovo. Dov'è il codice riproducibile?

Vengono visualizzati gli identificatori. Il che mi porta alla mia domanda: cosa c'entra ORDER_FILLING_XXX? Avete letto attentamente la documentazione?

 
Slava:

Un'altra volta. Dov'è il codice riproducibile?

Vengono visualizzati gli identificatori. Il che mi porta alla mia domanda: cosa c'entra ORDER_FILLING_XXX? Avete letto attentamente la documentazione?

Perché abbiamo impostato il modo di riempimento perSYMBOL_FILLING_MODE
Ma negli identificatori stessi c'è uno spostamento nel risultato di uscita.
Guardate il risultato.
FOK imposta la specifica None
IOC imposta la specifica FOK
RETURN imposta la specifica IOC

ORDER_FILLING_FOK     Результат: Filling == None
или
ORDER_FILLING_IOC     Результат: Filling == Fill or Kill
или
ORDER_FILLING_RETURN  Результат: Filling == Immediate or Cancel

E se volete usare altri identificatori da altri ENUM, comeSYMBOL_FILLING_XXX

Ci sono solo due identificatori in questo ENUM
SYMBOL_FILLING_FOK
SYMBOL_FILLING_IOC

E per la modalità di scambio, nessun identificatore!
Come si può impostare la modalità di scambio senza identificatore o il suo valore?
Guardate voi stessi nella documentazione.
Assicurarsi che
non ci sia unidentificatoreperSYMBOL_FILLING_RETURN

 
Roman:

Come impostare allora il modo di scambio senza identificatore o il suo valore?

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

Biblioteche: Simbolo

fxsaber, 2018.04.06 09:21

Symb.SetProperty(SYMBOL_TRADE_EXEMODE, SYMBOL_TRADE_EXECUTION_EXCHANGE);
Symb.SetProperty(SYMBOL_TRADE_CALC_MODE, SYMBOL_CALC_MODE_EXCH_FUTURES);

A parte gli sviluppatori, anche i tuoi post non sono affatto chiari per me. Vedi come puoi segnalare un problema in modo costruttivo.

 
Cosa non è chiaro? Nel mio bug report #20 ho indicato l'impostazione dell'ID e la ragione della discrepanza.
SYMBOL_TRADE_EXEMODE
SYMBOL_TRADE_CALC_MODE
Queste sono modalità completamente diverse e non sono correlate al problema.

Questo dovrebbe essere più chiaro.

void OnStart()
{
   string SName = "SYMBOL";
   
   if(CustomSymbolCreate(SName))
      CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_RETURN);
      //CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_FOK);  
      //CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_IOC);
   
}

Se volete usare un altro identificatore da ENUMSYMBOL_FILLING_XXX
allora
non c'è nessun identificatoreperSYMBOL_FILLING_RETURN!