Erros, bugs, perguntas - página 841

 
faton:

Boa tarde. Pode aconselhar-me, escrevi um indicador simples... e quando chega uma nova barra, é assim que a linha indicadora se comporta. Qual poderá ser o problema?

CopyRates(FirstAktiv,PERIOD_CURRENT,0,rates_total,mrate1);
CopyRates(SecondAktiv,PERIOD_CURRENT,0,rates_total,mrate2);
Verificar o que é devolvido porCopyRates. O número de elementos copiados não é necessariamente igual ao solicitado. Portanto, a matriz pode ser ultrapassada e os dados neste local do buffer serão nulos, o que aconteceu.
 

Parece que enquanto se actualiza a nova versão do Terminal, a pasta Program Files\Meta Trader 5\MQL5 é completamente copiada para C:\Users\AppData\Roaming\MetaQuotes\Terminal\00C5B588590D4A2C89EFC1E0C5301ECA\MQL5 (é Win7, embora outros SO tenham provavelmente a mesma pasta + talvez outros também). Caso contrário não consigo explicar, onde está o par de horas de trabalho, feito há alguns dias e que fruta foi testada com sucesso.

A questão é que tenho o hábito de formatar classes através de ficheiros .mqh-, e depois ligá-las. Sem o saber, atirei o meu mqh e mq5 para os Ficheiros de Programas\Meta Trader 5\MQL5, vi que não apareceram no Navigator e movi-os para a pasta de trabalho (C:\Users\Users\AppData\Roaming\MetaQuotes\Terminal\00C5B588590D4A2C89EFC1E0C5301ECA\MQL5). Tudo estava bem, até que o terminal foi actualizado - corri o Expert Advisor para testar mais, e depois quis afinar outra coisa e vi um código antigo, uma cópia do que estava no Program Files\Meta Trader 5\MQL5. A versão correcta foi optimizada, porque o mq5 não foi alterado e o terminal não adivinhou que as alterações foram feitas em mqh. A recompilação levou a um regresso à versão antiga.

Como resultado, estou muito aborrecido e terei de passar uma ou duas horas pelo que já fiz.

As formas de sair desta situação que eu vejo são.

1) copiar a pasta completa, mas apenas a lista de ficheiros incluída no pacote padrão;

2) de alguma forma avisar o utilizador que será substituído (embora, se alterar muitos ficheiros na biblioteca padrão, será uma dor);

3) determinar de alguma forma (calcular o crc, por exemplo) que a pasta mql5 em Ficheiros de Programas mudou, e antes de instalar uma nova versão, emitir um aviso para que possa guardar os seus dados;

4) fazer uma cópia do antigo MQL5 no Terminal\00C5B588590D4A2C89EFC1E0C5301ECA\ (adicionar, por exemplo, a versão MQL5.384) - a mais fácil.

O problema é raro, mas maldição, é um problema mau.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
notused:

Parece que durante a actualização da nova versão do terminal, existe uma cópia COMPLETO da pasta.................................

........................... ......................

.............................

Resumindo - muito chateado, terá de passar uma ou duas horas novamente em algo que já fiz.

Posso ver uma saída para esta situação - ................

....................

É um problema raro, mas maldição, é um problema mau.

Feedback construtivo aos programadores: Por favor faça uma cópia de segurança automática de toda a pasta MQL5 da compilação anterior, quando instalar uma nova compilação. O tempo de vida - até à próxima compilação, depois substitua-a. Isto não cancela o tratamento cuidadoso dos ficheiros do cliente quando instalar a compilação. É para o caso de força maior (tal como descrito acima) + para salvar as versões cliente da biblioteca padrão.
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 

Factor de Recuperação- este indicador mostra o grau de risco da estratégia, o quanto o Expert Advisor está a arriscar para obter o lucro. É calculado como a relação entre o lucro obtido e o máximo drawdown; (não diz qual deles)

STAT_RECOVERY_FACTOR

Factor de recuperação - rácioSTAT_PROFIT/STAT_BALANCE_DDD

duplo



Print("Factor=",TesterStatistics(STAT_RECOVERY_FACTOR));                                    // Выводим Фактор Восстановления
Print("Profit/BalanceDD=",TesterStatistics(STAT_PROFIT)/TesterStatistics(STAT_BALANCE_DD)); // Отношение профита к просадке по балансу
Print("Profit/EquityDD=",TesterStatistics(STAT_PROFIT)/TesterStatistics(STAT_EQUITY_DD));   // Отношение профита к просадке по средствам

Estabelecemos experimentalmente que o factor de recuperação é calculado como o rácio entre o lucro e o saque por equidade, e não por equilíbrio.

Há algum erro na referência?

 
ilunga:
Pois bem, é verdade, foram-lhe mostrados os últimos 50.000. Existem 1440 bares durante o dia.

Obrigado, uh....

Não é essa a questão. Não é uma questão, é um suspiro de tristeza.

Se eu escolher apenas o mês de Junho para o teste (30 dias X 1440 < 50.000), o que devo ver no gráfico por razão? Agosto???

A propósito, os timpickers no testador têm a desagradável propriedade de se fecharem a si próprios após um segundo - o outro...

Não é fatal - pode escolher um encontro mais depressa com as mãos de qualquer maneira, mas...

 
//+------------------------------------------------------------------+
//|                                                  Sample_Tick.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

int Tick_All;

MqlTick           last_tick;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Tick_All=0;

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!SymbolInfoTick(_Symbol,last_tick))
     {
      Print("Failed to get Symbol info!");
     }

   Tick_All++;
   Print(Tick_All,"   ",last_tick.bid,"   ",last_tick.ask,"  ",last_tick.last," ",last_tick.volume);
  }
//+------------------------------------------------------------------+

Não percebo porque é que o OnTick é accionado embora o preço não mude?????

2012.09.10 11:52:11 Sample_Tick (EURUSD,M5) 493 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:10 Sample_Tick (EURUSD,M5) 492 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:09 Sample_Tick (EURUSD,M5) 491 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:07 Sample_Tick (EURUSD,M5) 490 1.2787 1.2789 1.2788 300000

 
EQU:

Obrigado, uh....

Não é essa a questão. Não é uma questão, é um suspiro de tristeza.

Se eu escolher apenas o mês de Junho para o teste (30 dias X 1440 < 50.000), o que devo ver no gráfico por motivo? Agosto???

Escrever para o balcão de atendimento. Também não compreendo porque é que o número de barras no gráfico _ sempre_ conta a partir do real e não a partir da data final estabelecida no testador.
 
sion:
Volume - pode mudar, e há mais)

pode ver que o volume não muda!!!

 
dentraf:

pode ver que o volume não muda!!!

Já se viu o código.
 

Não entendo como funciona ou não funciona)


Print("<><><><><",request_action.magic);//Print((ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000);
  if(magic_num!=(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000){Print("<<<<<<<<<<<<<<<<<<<<<",(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000," magic_num=",magic_num);return;}

KG 0 prp4 (EURJPY,M15) 02:23:25 <><><><><73200011000
RR 0 prp4 (EURJPY,M15) 02:23:25 <<<<<<<<<<<<<<<<<<<<<732 magic_num=732   <-поидее числа равны и условие не должно срабатывать

Impressão comentada

Print("<><><><><",request_action.magic);Print((ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000);
  if(magic_num!=(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000){Print("<<<<<<<<<<<<<<<<<<<<<",(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000," magic_num=",magic_num);return;}

MH 0 prp4 (EURJPY,M15) 02:28:11 <>>>>>>>>>>73200011000
PE 0 prp4 (EURJPY,M15) 02:28:11 92233720368 <- e este número não sei de onde veio, aparentemente no primeiro cálculo "(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000" disto, algo estranho conta

<condicionamento não se manteve, a impressão não foi impressa, portanto os números foram iguais.

Até cerca da 1 da manhã, não havia qualquer problema com isto.

P.S. Experimentei-o no meu portátil, 687 build ainda está lá, a mesma tarte.