Discussão do artigo "Desenvolvendo um EA multimoeda (Parte 2): Transição para posições virtuais de estratégias de trading" - página 6

 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Discussão do artigo "Desenvolvimento de um Expert Advisor multimoeda (Parte 2): Passando para estratégias de negociação de posições virtuais"

fxsaber, 2024.02.12 17:33

Sua arquitetura é um pouco diferente da minha

//+------------------------------------------------------------------+
//| Construtor|
//+------------------------------------------------------------------+
CSimpleVolumesStrategy::CSimpleVolumesStrategy( const string sInputs ) : CStrategy(sInputs)
{
   this.Input = sInputs;

   ArrayResize(m_orders, this.Input.maxCountOfOrders);

   // Carregar o indicador para obter volumes de ticks
   iVolumesHandle = iVolumes(this.InputStrategy.symbol, this.InputStrategy.timeframe, VOLUME_TICK);

// Defina o tamanho da matriz receptora de volumes de ticks e o endereçamento necessário
   ArrayResize(volumes, this.Input.signalPeriod);
   ArraySetAsSeries(volumes, true);
}

Eu não uso entradas da classe pai. Todas as minhas entradas são privadas e, portanto, podem ter o mesmo nome. Isso resulta em uma forte universalização: o mesmo código, que está oculto em uma macro comum. Mas é assim que funciona para mim.

 
Yuriy Bykov #:

Acredito que essa também não seja a versão final, pois você se concentrou nos cenários de uso de parâmetros no código que já foram publicados. No que se refere à montagem de parâmetros em conjuntos e, mais ainda, à montagem automática em conjuntos, você provavelmente descobrirá que também pode melhorar/simplificar.

Você está certo. Fiz dessa forma.
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
É uma variável de cadeia global, na qual todas as variáveis de entrada são automaticamente (e criadas). Ou seja, quaisquer que sejam os objetos criados, essa variável é sempre de entrada.
 
fxsaber #:
Você está certo. Fiz dessa forma. Essa é uma variável de cadeia global na qual todas as variáveis de entrada são automaticamente (e criadas). Ou seja, não importa quais objetos sejam criados, essa variável é sempre a entrada.

Só para lembrar que as entradas de string são cortadas em 63 caracteres pelo otimizador.

 
Stanislav Korotky #:

Por via das dúvidas, lembro que o otimizador corta 63 caracteres das entradas de string.

Obrigado. Não se trata de uma entrada, portanto, o comprimento não é limitado.

string inInputsAll = NULL;
 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Discussão do artigo "Desenvolvimento de um Expert Advisor multimoeda (Parte 2): Passando para estratégias de negociação de posições virtuais"

fxsaber, 2024.02.14 11:36 AM

Você está certo. Fiz dessa forma.
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
Essa é uma variável de cadeia global na qual todas as variáveis de entrada são automaticamente (e criadas). Ou seja, quaisquer objetos que não sejam criados, essa variável é sempre alimentada na entrada.

Anexado.

Arquivos anexados:
 

Hi,

Estou em uma curva de aprendizado acentuada de OOP. Essa continuação do artigo anterior foi muito útil.

Ainda estou trabalhando nele. Obrigado.

 
Olá, não consigo ver as capturas de tela. Você pode anexá-las novamente?