[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 428

 

É possível melhorar o desempenho de um EA se o indicador usado nele, que é chamado através de iCustom(), for completamente transferido para uma dll? Vale a pena jogar um jogo desse tipo? A dll é sempre mais rápida do que o indicador? E quais são as peculiaridades de trabalhar com a matriz Close[] na dll?


Sim, também acrescentarei uma pergunta: como formatar a função IndicatorCounted() na dll.

 
gyfto:

1. É possível obter o ganho de desempenho da EA, se o indicador usado nela, que é chamado via iCustom(), for completamente transferido para uma dll? Vale a pena jogar um jogo desse tipo? A dll é sempre mais rápida do que o indicador? E quais são as peculiaridades de trabalhar com Close[] array em uma dll?


2. Sim, eu também gostaria de acrescentar uma pergunta: como projetar a função IndicatorCounted() na dll.

Trata-se de um tema interessante. Mas...

1. Não sei, ainda não tentei, mas duvido, pode ser um incremento insignificante. Pelo que vi indicadores transferidos para dll não funcionam rapidamente, mas a otimização do código do indicador permite alcançar resultados muito bons em mql.

Não há batota aqui, devemos passar o valor de IndicatorCounted(), Bars e na dll devemos decidir se contamos novamente todas ou apenas uma barra. Em vez de IndicatorCounted() e Bars, você pode passar o Limite já calculado.

Claramente, se o indicador for muito lento, o que o torna irrealista para uso em Expert Advisors (você não pode testá-lo), então a transferência para a dll não vai ajudar.

 
gyfto:

1. É possível obter o ganho de desempenho da EA, se o indicador usado nela, que é chamado via iCustom(), for completamente transferido para uma dll? Vale a pena jogar esse jogo? A dll é sempre mais rápida do que o indicador? E quais são as peculiaridades de trabalhar com a matriz Close[] na dll?
2. Sim, eu também acrescentarei uma pergunta: como formatar a função IndicatorCounted() na dll?

1. Claro, você pode e deve. É 20 vezes mais rápido nos cálculos. Sem mencionar a depuração conveniente e as infinitas possibilidades de C++ e outros idiomas normais.

2. você não precisa dele lá.

 
Por que a linha está quebrando para baixo? Eu preciso de uma seção por código VAZIO. com um erro para H1 (eu mesmo posso ver isso), mas como eu conserto EMPTY???
SetIndexStyle(0,EMPTY);
 
Por que a linha está quebrando para baixo? Eu preciso de uma seção por código VAZIO (página 427) com um erro para H1 (eu mesmo posso ver isso), mas como eu conserto EMPTY???
SetIndexStyle(0,EMPTY);
 
kopeyka:
Por que a linha se rompe? Eu preciso de uma seção por código VAZIO. com um erro para H1 (eu mesmo posso ver isso), mas como eu conserto EMPTY???

Tente definir SetIndexEmptyValue(), opções: 0, EMPTY_VALUE

 
Integer:

Tente definir SetIndexEmptyValue(), opções: 0, EMPTY_VALUE


Obrigado...Vou tentar agora)):
 
Integer:

...

1. Não sei se ainda não tentei...

Experimentei-o. EMA em mql e em dll.

01:46:19 1 EURUSD,M15: Alerta: dll: 109
01:46:19 1 EURUSD,M15: Alerta: 1
01:46:19 1 EURUSD,M15: Alerta: mql: 109
01:46:19 1 EURUSD,M15: Alerta: dll: 0
01:46:19 1 EURUSD,M15: Alerta: 2
01:46:19 1 EURUSD,M15: Alerta: mql: 156
01:46:20 1 EURUSD,M15: Alerta: dll: 202
01:46:20 1 EURUSD,M15: Alerta: 3
01:46:20 1 EURUSD,M15: Alerta: mql: 172
01:46:20 1 EURUSD,M15: Alerta: dll: 0
01:46:20 1 EURUSD,M15: Alerta: 4
01:4620 1 EURUSD,M15: Alerta: mql: 172
01:46:20 1 EURUSD,M15: Alerta: dll: 171
01:46:20 1 EURUSD,M15: Alerta: 5
01:46:20 1 EURUSD,M15: Alerta: mql: 78
01:46:20 1 EURUSD,M15: Alerta: dll: 78
01:46:20 1 EURUSD,M15: Alerta: 6
01:46:21 1 EURUSD,M15: Alerta: mql: 202
01:46:21 1 EURUSD,M15: Alerta: dll: 94
01:46:21 1 EURUSD,M15: Alerta: 7
01:46:21 1 EURUSD,M15: Alerta: mql: 172
01:46:21 1 EURUSD,M15: Alerta: dll: 94
01:4621 1 EURUSD,M15: Alerta: 8
01:46:21 1 EURUSD,M15: Alerta: mql: 234
01:46:21 1 EURUSD,M15: Alerta: dll: 15
01:46:21 1 EURUSD,M15: Alerta: 9
01:46:21 1 EURUSD,M15: Alerta: mql: 78
01:46:22 1 EURUSD,M15: Alerta: dll: 94
01:46:22 1 EURUSD,M15: Alerta: 10
01:46:22 1 EURUSD,M15: Alerta: mql: 172
01:46:22 1 EURUSD,M15: Alerta: dll: 93
01:46:22 1 EURUSD,M15: Alerta: 11
01:46:22 1 EURUSD,M15: Alerta: mql: 93
01:46:22 1 EURUSD,M15: Alerta: dll: 78
01:46:22 1 EURUSD,M15: Alerta: 12
01:46:22 1 EURUSD,M15: Alerta: mql: 78
01:46:22 1 EURUSD,M15: Alerta: dll: 78
01:46:22 1 EURUSD,M15: Alerta: 13
01:46:23 1 EURUSD,M15: Alerta: mql: 250
01:4623 1 EURUSD,M15: Alerta: dll: 156
01:46:23 1 EURUSD,M15: Alerta: 14
01:46:23 1 EURUSD,M15: Alerta: mql: 187
01:46:23 1 EURUSD,M15: Alerta: dll: 0
01:46:23 1 EURUSD,M15: Alerta: 15
01:46:23 1 EURUSD,M15: Alerta mql: 78
01:46:23 1 EURUSD,M15: Alerta: dll: 171
01:46:23 1 EURUSD,M15: Alerta: 16
01:46:24 1 EURUSD,M15: Alerta: mql: 266
01:46:24 1 EURUSD,M15: Alerta: dll: 0
01:46:24 1 EURUSD,M15: Alerta: 17
01:46:24 1 EURUSD,M15: Alerta: mql: 93
01:46:24 1 EURUSD,M15: Alerta: dll: 78
01:46:24 1 EURUSD,M15: Alerta: 18
01:46:24 1 EURUSD,M15: Alerta: mql: 94
01:46:24 1 EURUSD,M15: Alerta: dll: 15
01:46:24 1 EURUSD,M15: Alerta: 19
01:46:2446:46:24 1 EURUSD,M15: Alerta: mql: 94
01:46:24 1 EURUSD,M15: Alerta: dll: 78
01:46:24 1 EURUSD,M15: Alerta: 20
01:46:25 1 EURUSD,M15: Alerta: mql: 234
01:46:25 1 EURUSD,M15: Alerta: dll: 78
01:46:25 1 EURUSD,M15: Alerta: 21
01:46:25 1 EURUSD,M15: Alerta: mql: 156
01:46:25 1 EURUSD,M15: Alerta: dll: 94
01:46:25 1 EURUSD,M15: Alerta: 22
01:46:25 1 EURUSD,M15: Alerta: mql: 94
01:46:25 1 EURUSD,M15: Alerta: dll: 16
01:46:2546:25 1 EURUSD,M15: Alerta: 23
01:46:26 1 EURUSD,M15: Alerta: mql: 93
01:46:26 1 EURUSD,M15: Alerta: dll: 171
01:46:26 1 EURUSD,M15: Alerta: 24
01:46:26 1 EURUSD,M15: Alerta: mql: 171
01:46:26 1 EURUSD,M15: Alerta: dll: 187
01:46:26 1 EURUSD,M15: Alerta: 25
01:46:26 1 EURUSD,M15: Alerta: mql: 156
01:46:26 1 EURUSD,M15: Alerta: dll: 78
01:46:26 1 EURUSD,M15: Alerta: 26
01:46:27 1 EURUSD,M15: Alerta: mql: 62
01:4627 1 EURUSD,M15: Alerta: dll: 187
01:46:27 1 EURUSD,M15: Alerta: 27
01:46:27 1 EURUSD,M15: Alerta: mql: 78
01:46:27 1 EURUSD,M15: Alerta: dll: 171
01:46:27 1 EURUSD,M15: Alerta: 28
01:46:27 1 EURUSD,M15: Alerta mql: 93
01:46:27 1 EURUSD,M15: Alerta: dll: 78
01:46:27 1 EURUSD,M15: Alerta: 29
01:46:27 1 EURUSD,M15: Alerta: mql: 172
01:46:28 1 EURUSD,M15: Alerta: dll: 94
01:46:28 1 EURUSD,M15: Alerta: Média. mql: 140 dll: 91

Alguns testes:

Média. mql: 126 dll: 116
Média. mql: 122 dll: 86
Média. 167 dll: 91
Média. mql: 149 dll: 82
Média. mql: 140 dll: 91

Isto é bastante perceptível. Se os cálculos forem mais complicados, o código será muito mais perceptível.

 
SE O BILHETE DO PEDIDO ESTIVER ARMAZENADO NO SERVIDOR DO CORRETOR, ONDE ESTÃO ARMAZENADOS OS PEDIDOS MÁGICOS E DE COMENTÁRIOS?
 

Bom dia!!! Devo ter entendido mal algo sobre arrays ou algo assim. A função não coloca um lucro na matriz!!! É zero em todas as circunstâncias. Zero e ponto final!

Função.

/))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))


void Orderasthitaem()
{
int BUY=0,SELL=0,BUYLIMIT=0,BUYSTOP=0,SELLLIMIT=0,SELLSTOP=0;
double BUY_Profit=0,SELL_Profit=0;
      for( int i=0;i<OrdersTotal();i++){
        OrderSelect (i, SELECT_BY_POS  ) ;  
        if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magicnumber){            
        int type = OrderType();
        if (type == 0) {BUY++;BUY_Profit=BUY_Profit+OrderProfit();}
        if (type == 1) {SELL ++;SELL_Profit=SELL_Profit+OrderProfit();}
        if (type == 2) {BUYLIMIT++;}
        if (type == 3) {SELLLIMIT++;}
        if (type == 4) {BUYSTOP++;}
        if (type == 5) {SELLSTOP++;}}}
       
        Orderasthitaem[0,1]=BUY;Orderasthitaem[0,2]=BUY_Profit;
        Orderasthitaem[1,1]=SELL;Orderasthitaem[1,2]=SELL_Profit;
        Orderasthitaem[2,1]=BUYLIMIT;
        Orderasthitaem[3,1]=SELLLIMIT;
        Orderasthitaem[4,1]=BUYSTOP;
        Orderasthitaem[5,1]=SELLSTOP;
         
         
}        
    

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Oblivion além de todas as funções

double Orderasthitaem[6,2];ArrayInitialize(Orderasthitaem, 0.0);
Razão: