Características úteis da KimIV - página 108

 
Francamente falando, estou muito contente de ver um homem lendário com suas próprias características de volta ao fórum ativo, embora eu não entenda muito sobre eles pessoalmente devido à minha ignorância das noções básicas de programação nesta linguagem. Mas o fato em si é incrível, eu dou as boas vindas a KimIV com todo o meu ser!
 
 

Olá, estou procurando por uma função, você tem alguma pronta?

Preciso que seja criado um arquivo no final do teste, que contenha dados sobre o sorteio de cada pedido. De preferência, este arquivo não seria criado durante o teste, mas no final do processamento único do histórico comercial...

 
Não tenho tal função, mas pretendo publicar em breve uma função que calcula o saque máximo em pips das posições atualmente abertas. Esta função analisa a ordem passando por barras. O cronograma é um dos parâmetros. Quanto menor é o prazo, mais preciso é o cálculo do drawdown máximo. Acho que você será capaz de fazer o que precisa com base nesta função.
 
KimIV:
Eu não tenho tal função, mas estou planejando publicar a função que calcula o máximo aproveitamento das atuais posições em aberto no futuro próximo. Esta função analisa a passagem da ordem por barras. O cronograma é um dos parâmetros. Quanto menor é o prazo, mais preciso é o cálculo do drawdown máximo. Acho que você será capaz de fazer o que precisa com base nesta função.

Se também houver escrita em um arquivo na função, isso seria ótimo...

Mas não vejo nenhuma necessidade particular de calcular o sorteio para as posições atuais. Acho que esta função é mais útil para um testador (análise do trabalho do sistema) ....

 
renoshnik:

Se também houver escrita em um arquivo na função, isso seria ótimo...

Mas não vejo nenhuma necessidade particular de calcular o sorteio para as posições atuais. Acho que esta função é mais útil para um testador (análise de sistema) ....

Não há diferença entre "calcular o drawdown de cada pedido em tempo real e enviar todos os dados para um arquivo" e "calcular o drawdown de cada pedido e enviar os dados para um arquivo no final do teste". Exceto pelo fato de que a primeira variante é bastante fácil de ser extremamente precisa, e a segunda variante somente se você se lembrar do histórico de carrapatos para cada pedido.
 
renoshnik:

Olá, estou procurando por uma função, você tem alguma pronta?

Preciso que seja criado um arquivo no final do teste, que contenha dados sobre o sorteio de cada pedido. De preferência, este arquivo não seria criado durante o teste, mas no final do processamento único do histórico comercial...

Yuri, eu tirei precipitadamente o código de um antigo consultor especializado.
Verifiquei-o e parece estar funcionando corretamente.
Adicione código de deinit() a suas corujas e copie três funções abaixo de deinit, uma delas é a de Igor ))
.......
O código está solto... Mas enquanto Igor o fizer bonito, acho que você terá o suficiente para experimentar.
Arquivos anexados:
 
lasso:
Yuri, eu puxei precipitadamente o código de uma velha EA.
Verificado, parece estar funcionando corretamente.
Adicione código de deinit() a suas corujas e copie três funções abaixo de deinit, uma delas é a de Igor ))
.......
O código está solto... Mas enquanto Igor fizer com que fique bonito, acho que você terá o suficiente para experimentar.

Ótimo, obrigado !!!!!!!!!! Vou dar uma olhada....
 

Igor, Boa tarde!

Coloco sua função CrossPointOfLines (calcula as coordenadas do ponto de intersecção de duas linhas) em meu Expert Advisor. Como resultado, continua escrevendo em comentários: não encontrou o ponto de interseção! E não consegue encontrar o ponto de interseção.

Talvez seja porque tenho outros objetos na minha tabela na forma de linhas de tendência? Ou talvez você ou um dos freqüentadores regulares desta linha possa me dizer qual é o meu problema?

Obrigado de antemão!

Código - no arquivo anexo.

Arquivos anexados:
 

HOORAY! Eu mesmo descobri isso) Foram as outras tendências que atrapalharam...

Como não sou muito bom em fazer amigos com arrays, fiz uma função maximamente simplificada. Até agora, parece estar funcionando).

//+------------------------------------------------------------------+
double Middle(string nm1,string nm2)
  {
  double M;
  double x0, x1, y1, x2, y2, x3, y3, x4, y4;
  double k1, k3;
  
  if(ObjectFind(nm1)==0 && ObjectFind(nm2)==0)
    {
    x1=ObjectGet(nm1, OBJPROP_TIME1);
    x2=ObjectGet(nm1, OBJPROP_TIME2);
    y1=ObjectGet(nm1, OBJPROP_PRICE1);
    y2=ObjectGet(nm1, OBJPROP_PRICE2);
    
    x3=ObjectGet(nm2, OBJPROP_TIME1);
    x4=ObjectGet(nm2, OBJPROP_TIME2);
    y3=ObjectGet(nm2, OBJPROP_PRICE1);
    y4=ObjectGet(nm2, OBJPROP_PRICE2);
    
    k1=(y2-y1)/(x2-x1); 
    k3=(y4-y3)/(x4-x3);
    
    if(k1 != k3)
      {
      x0 = (y1 - y3 + k3*x3 - k1*x1)/(k3 - k1);
      M = y1 + k1*(x0 - x1);
      }
    }
  return(M);
  }
//+----------------------------------------------------------------------------+