Símbolos personalizados. Erros, bugs, perguntas, sugestões. - página 14

 

Bug 21.


2085

Após a reconexão do servidor, todos os símbolos personalizados criados são adicionados à visão geral do mercado.
Isto é bom quando o mercado é fechado nos fins de semana.
O servidor ocasionalmente volta a se conectar, ou após um reinício do terminal no momento da instalação da conexão,
O gráfico do símbolo padrão pode ser reinicializado e fazer um tique, neste momento todos os símbolos personalizados criados são adicionados à visão geral do mercado por eles mesmos.

 

Sugestão.

Favor adicionarSYMBOL_VOLUME_INITIAL identificador para aspropriedades do símbolo, e exibir seu valor na especificação.
E acrescente um identificador apropriado para chamar seu valor.

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

Bug 20.

2085
Ajuste incorreto das propriedades de caráter personalizado.



Onde está o código para reprodução?

 
Slava:

Onde está o código para reprodução?

Na mensagem com o bug 20, os identificadores são listados. Você não os tem exibidos na mensagem?

 

Bug 22.

Uma rolagem de um tick muda seu preço por um fator de 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); // Показали, что на самом деле пробросили.
}


Resultado

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
 

Olá a todos

esta é minha primeira vez em funcionamento mt, preciso dela para análise de dados e gráficos

criei um símbolo, barras carregadas do csv, posso ver o arquivo de dados grosso no diretório insta

Símbolo ativado, na vigilância do mercado

Não mostrar gráfico - "À espera de atualização


Perdi alguma coisa?

experimentei tanto no mt4 como no mt5 - tudo é o mesmo

gráficos de demonstração - correr pular

 
Roman:

Na mensagem com o bug 20, os identificadores são listados. Você não os tem exibidos na mensagem?

Novamente. Onde está o código reprodutível?

Os identificadores são exibidos. O que me leva à minha pergunta: o que o ORDER_FILLING_XXX tem a ver com isso? Você leu a documentação cuidadosamente?

 
Slava:

Mais uma vez. Onde está o código reprodutível?

Os identificadores são exibidos. O que me leva à minha pergunta: o que o ORDER_FILLING_XXX tem a ver com isso? Você leu a documentação cuidadosamente?

Porque definimos o modo de enchimento paraSYMBOL_FILLING_MODE
Mas os próprios identificadores mostram uma mudança no resultado da saída.
Veja o resultado.
Conjuntos FOK para nenhuma especificação
Conjuntos IOC para especificação FOK
Conjuntos RETURN para especificação IOC

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

E se você quiser usar outros identificadores de outros ENUM, comoSYMBOL_FILLING_XXX

Há apenas dois identificadores neste ENUM
SYMBOL_FILLING_FOK
SYMBOL_FILLING_IOC

E para o modo de troca, nenhum identificador!
Como você pode definir o modo de troca sem identificador ou seu valor?
Veja você mesmo na documentação.
Certifique-se de
quenãoidentificadorparaSYMBOL_FILLING_RETURN

 
Roman:

Como então definir o modo de troca sem identificador ou seu valor ?

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

Bibliotecas: Símbolo

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);

Além dos desenvolvedores, seus cargos também não são nada claros para mim. Veja como você pode relatar um problema de forma construtiva.

 
O que não está claro? Em meu relatório de bug #20 indiquei a configuração do ID e o motivo da discrepância.
SYMBOL_TRADE_EXEMODE
SYMBOL_TRADE_CALC_MODE
Estes são modos completamente diferentes e não estão relacionados com o problema.

Isto deve ser mais claro.

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 você quiser usar outro identificador da ENUMSYMBOL_FILLING_XXX
então
não há identificadorparaSYMBOL_FILLING_RETURN!

Arquivos anexados: