Erros, bugs, perguntas - página 1897

 
Konstantin:
o meu cálculo funciona assim:
como é que acaba por ser correcto?

Não é claro qual é a dúvida - a minha lógica é simples - calcular quanto foi gasto na compra de activos no total (se esquecermos a margem) e dividir pelo número total de unidades compradas - este será o preço médio de um activo - ou seja, o breakeven.

 

Lembro-me de os criadores falarem sobre a possibilidade de troca de dados entre agentes. Onde posso ver um exemplo?

Parece que o canal da moldura é de sentido único - dos agentes para o terminal, mas não o inverso.

 
Erro de execução
void OnStart()
{
  int Array[];
  
  Array[ArrayResize(Array, ArraySize(Array) + 1) - 1] = 0; // array out of range
}
 
Erro de execução
struct INT
{
  int Array[];
};

void OnStart()
{
  INT i = {0}; //  Если убрать "= {0}" - ошибка выполнения исчезает
  
  Print(ArrayResize(i.Array, 5)); // -1
}
 
Se a estrutura contém cordas e matrizes como esta {0} é melhor não a inicializar, lançou uma excepção para mim.
 

Os agentes locais devolvem o mesmo valor de TerminalInfoInteger(TERMINAL_DLLS_ALLOWED) até que volte a carregar o terminal.

Por exemplo, quer que os agentes DLL não sejam executados. Desmarque a caixa de verificação DLL no terminal, e os agentes mantêm-se "felizes".


 
Комбинатор:
Se há cordas e matrizes na estrutura como esta {0} é melhor não a inicializar, lançou uma excepção no meu caso.
Parece haver aí uma potencial vulnerabilidade.
 
fxsaber:

Lembro-me de os criadores falarem sobre a possibilidade de troca de dados entre agentes. Onde posso ver um exemplo?

Parece ser um canal de um só sentido - dos agentes para o terminal, mas não o contrário.

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

Trabalhar com os Ficheiros do Consultor Especialista no Testador de Estratégia

Renat Fatkhullin, 2012.08.27 01:41

Quando se trabalha com clud ou agentes remotos, os ficheiros utilizados (para leitura) devem ser claramente especificados através de #property tester_file "myfile1.dat". Neste caso, o testador passa estes ficheiros para a nuvem juntamente com a EA de origem, com alterações a este ficheiro controladas e em cache nos servidores e agentes da nuvem.

É possível transferir grandes quantidades de dados em bruto para as nuvens e receber cálculos incluindo dados massivos através de FrameAdd() no relatório.

Posso alterar os ficheiros tester_file no OnTesterPass e assim transferir as informações necessárias para a Nuvem?
 
fxsaber:

No padrão MQL5\Experts\Exemplos\Moving Average\Moving Average.mq5

Falhou a verificação mágica em TradeSizeOptimized.

Por favor, verifique esta variante.

Pela minha parte, já executei 9 instâncias desta EA com diferentes configurações e magia para negociar online no VPS incorporado - vou assistir https://www.mql5.com/ru/signals/305333.

Торговые сигналы для MetaTrader 5: Standard Moving Average 9 instances
Торговые сигналы для MetaTrader 5: Standard Moving Average 9 instances
  • Rashid Umarov
  • www.mql5.com
Торговый Сигнал Standard Moving Average 9 instances для MetaTrader 5: копирование сделок, мониторинг счета, автоматическое исполнение сигналов и социальный трейдинг
Arquivos anexados:
 
Rashid Umarov:

Dê uma vista de olhos a esta opção, por favor.

Pela minha parte, já executei 9 casos desta EA com diferentes configurações e magia para negociar online no VPS incorporado - estarei a ver https://www.mql5.com/ru/signals/305333.

A selecção do lote desta EA é afectada por qualquer comércio de terceiros (incluindo outras instâncias) sobre o símbolo da fonte.

Nesta peça acontece

      HistorySelect(0,TimeCurrent());
      //---
      int    orders=HistoryDealsTotal();  // total history deals
      int    losses=0;                    // number of losses orders without a break

      for(int i=orders-1;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0)
           {
            Print("HistoryDealGetTicket failed, no trade history");
            break;
           }
         //--- check symbol
         if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol)
            continue;
         //--- check profit
         double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
         if(profit>0.0)
            break;
         if(profit<0.0)
            losses++;
        }
      //---
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);