Discussão do artigo "Biblioteca para criação simples e rápida de programas para MetaTrader (Parte XXIII): classe básica de negociação, controle de parâmetros válidos" - página 3

 
Alexander:
Olá! Fiz o download da versão mais recente da biblioteca e do Expert Part_23, coloquei o modo visual e o modo de mercado no testador
as ordens são abertas, mas todas as ordens pendentes não são, no diário está escrito "2019.10.27 10:13:32.157 2019.09.23 10:00:02 failed sell stop limit 2.00 RTS-12.19 at 135750 (135800) sl: 135900 tp: 135600 [Invalid expiration].
Símbolos da bolsa, corretora Otkritie, versão 5.00 build 2190.
Também. Em artigos anteriores, acho que na parte 14 ou 15, você prometeu criar classes para trabalhar junto com a coleção de símbolos.
Você também prometeu criar classes para trabalhar junto com a coleção de símbolos e o vidro, mas, por algum motivo, não as criou, e essas são as necessidades básicas da biblioteca, juntamente com os símbolos e as contas, e você já as deixou

e você já se aprofundou nas melhorias da biblioteca (recursos, sons, etc.) e acho que você perdeu as tarefas básicas.

Obrigado, a biblioteca é muito necessária.

Olá. O trabalho com o vidro será implementado mais tarde, após a criação da classe de comércio.

Acho que nessa parte da descrição da biblioteca há a possibilidade de definir automaticamente os valores de expiração corretos:

CTrading::SetCorrectTypeExpiration(const ENUM_ORDER_TYPE_TIME type=ORDER_TIME_GTC,const string symbol=NULL);
CTrading::SetCorrectTypeFilling(const ENUM_ORDER_TYPE_FILLING type=ORDER_FILLING_FOK,const string symbol=NULL);

Se houver (infelizmente, não me lembro dessa parte), então, em OnInit(), chame esses dois métodos com os valores em mente, e todos os objetos de negociação para cada símbolo usado deverão definir os valores corretos dos tipos de preenchimento e expiração.

Se não estiver aqui, aguarde a publicação do próximo artigo - ele está sendo verificado há algum tempo - está lá.

 

No OnInit do consultor da Part23, escrevi duas linhas

motor.TradingSetCorrectTypeExpiration();

engine.TradingSetCorrectTypeFilling();

nada adiantou, ele escreve a mesma coisa no registro.

 
Alexander:

No OnInit do consultor da Part23, escrevi 2 linhas

engine.TradingSetCorrectTypeExpiration();

engine.TradingSetCorrectTypeFilling();

nada ajudou, ele escreve a mesma coisa no registro.

Tudo bem, vou resolver isso. Obrigado.

 
Alexander:

No OnInit do consultor da Part23, escrevi 2 linhas

engine.TradingSetCorrectTypeExpiration();

engine.TradingSetCorrectTypeFilling();

nada ajudou, ele escreve a mesma coisa no registro.

Onde você insere essas linhas?

Elas devem ser inseridas em OnInit() após a criação da lista de símbolos de trabalho:

//--- Preenchendo a matriz de símbolos usados
   used_symbols=InpUsedSymbols;
   CreateUsedSymbolsArray((ENUM_SYMBOLS_MODE)used_symbols_mode,used_symbols,array_used_symbols);

//--- Definir o tipo de lista de símbolos usada na coleção de símbolos
   engine.SetUsedSymbols(array_used_symbols);

//--- Aqui você precisa definir os valores corretos dos tipos de execução e expiração para os objetos de negociação de todos os símbolos

//--- Отображение выбранного режима работы с коллекцией объектов-символов
   Print(engine.ModeSymbolsListDescription(),TextByLanguage(". Número de caracteres usados: ",". The number of symbols used: "),engine.GetSymbolsCollectionTotal());
 
Ninguém notou que o tipo de ordem é StopLimit?
 
Алексей Тарабанов:
Ninguém prestou atenção ao fato de que o tipo de ordem é StopLimit?

Sim, eu não notei isso. Existe alguma outra definição para isso? Em essência, uma ordem stop-limit é uma ordem stop que aciona uma ordem limit. As condições para essa combinação não são as mesmas que para o uso separado de ordens stop e limit?

 
Artyom Trishkin:

Sim, eu não estava prestando atenção. Existe algum outro nome para isso? Em essência, uma ordem stop-limit é uma ordem stop que aciona uma ordem limit. As condições para essa combinação não são as mesmas que para o uso separado de ordens stop e limit?

Os limites são diferentes. E o tempo limite.

 
Алексей Тарабанов:

Os limites são diferentes. E o tempo limite.

Onde está isso na especificação de caracteres? Como encontrar os dados necessários?
 
Em lugar nenhum. Para os desenvolvedores ou para a lógica.
 
Alexander:

No OnInit do consultor da Part23, escrevi 2 linhas

engine.TradingSetCorrectTypeExpiration();

engine.TradingSetCorrectTypeFilling();

nada ajudou, ele escreve a mesma coisa no registro.

Em geral, verifiquei os CFDs no servidor da Binary.com. Ele coloca ordens pendentes de limite de parada (clique para ver o vídeo):

Como faço para verificar no Discover? Devo abrir uma conta?