Algoritmo "centrífuga" algorítmica - página 13

 
Aleksei Stepanenko:

OK, ...

- talvez algo mais...

Precisamos usar a AG para encontrar TI (pontos ideais) de alguma forma. Estou pensando sobre isso.
 
Igor Makanu:

Pontos ideais de entrada na história - ZigZag, você rejeitou

Não quero usar o ZigZag porque profana a idéia. Se ZZ é um indicador de pontos perfeito, então é o indicador mais IDEAL de todos, porque atinge os pontos perfeitos com mais precisão do que qualquer outro. Acontece - o ZigZag deve estar em todas as estratégias de sinais comerciais construídas em TODAS as estratégias. E isso é um absurdo.

Acredito que as áreas de negócios na história devem ser determinadas pelos critérios: tempo/lucro/risco e uso GA.

 
Реter Konow:

Não quero usar o ZigZag porque profana a idéia. Se ZZ é um indicador de pontos perfeito, então é o indicador mais IDEAL de todos, porque atinge os pontos perfeitos com mais precisão do que qualquer outro. Acontece - o ZigZag deve estar em todas as estratégias de sinais comerciais construídas em TODAS as estratégias. E isso é um absurdo.

Acredito que as áreas de negócios na história devem ser determinadas pelos critérios: tempo/lucro/risco e uso GA.

não tenho nada contra

Não vejo o que discutir, por enquanto estou de folga.

 
Реter Konow:
Precisamos de alguma forma envolver a AG na busca de TI (pontos ideais). Estou pensando sobre isso.

Não entendo. Os pontos perfeitos já são conhecidos na história. São extremos e você pode vê-los com seus olhos. Não requer algoritmos complexos para encontrar extremos. Só precisamos identificar as condições para identificá-las (por exemplo, exceder um certo número de pontos entre dois extremos adjacentes opostos). Então podemos criar um conjunto desses extremos (preço, data) e verificar o valor de qualquer indicador no ponto de cada extremo (ou em sua abordagem) usando o mesmo histórico. Certo?

Aqui está um código de "faz-de-conta" para pesquisar e armazenar o extrema da história (sem garantia de desempenho):

input double Distance=100;

//каждый элемент массива будет содержать три поля: дата, цена и положение экстремума (верх, низ) 
struct sextr{datetime time; double price; int position;} Extremes[];

void OnStart()
   {
   int Total=iBars(Symbol(),0);
   for(int i=Total-1; i>=0; i--)
      {
      WriteExtremum(Extremes,Distance,Symbol(),0,i);
      }
   }   

//здесь записываем экстремумы в массив
void WriteExtremum(sextr &eExtremes[], double eDistance, string eSymbol, int eTimeFrame, int eShift)
   {
   int eFinish=ArraySize(eExtremes)-1;
   double eHigh=iHigh(eSymbol,eTimeFrame,eShift);
   double eLow=iLow(eSymbol,eTimeFrame,eShift);
   datetime eTime=iTime(eSymbol,eTimeFrame,eShift);
   //если массив пустой
   if(eFinish<0)
      {
      ArrayResize(eExtremes,++eFinish+1);
      eExtremes[eFinish].time=eTime;
      //пока мы не знаем какой из экстремумов будет в первом элементе, поэтому берём цену по середине
      //можно сделать более грамотнее, но лень. Поэтому первый экстремум у нас будет бракованный 
      //и мы его потом затрём 
      eExtremes[eFinish].price=(eHigh+eLow)/2;
      eExtremes[eFinish].position=0;
      }
   //если в массиве есть элементы
   else
      {
      //текущий элемент - максимум
      if(eExtremes[eFinish].position==1)
         {
         //произошло обновление текущего экстремума
         if(eHigh-eExtremes[eFinish].price>0)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eHigh;
            }         
         //произошло превышение расстояния между противоположными экстремумами
         if(eExtremes[eFinish].price-eLow>eDistance)
            {
            ArrayResize(eExtremes,++eFinish+1);
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eLow;
            eExtremes[eFinish].position=-1;
            }
         }
      //текущий элемент - минимум
      if(eExtremes[eFinish].position==-1)
         {
         //произошло обновление текущего экстремума
         if(eExtremes[eFinish].price-eLow>0)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eLow;
            }         
         //произошло превышение расстояния между противоположными экстремумами
         if(eHigh-eExtremes[eFinish].price>eDistance)
            {
            ArrayResize(eExtremes,++eFinish+1);
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eHigh;
            eExtremes[eFinish].position=1;
            }
         }
      //эта ситуация, когда первый элемент не закрылся, и не понятно максимум это будет или минимум
      //если произошло превышение в любую сторону, тогда затираем значения первого элемента
      if(extremes[eFinish].position==0)
         {
         //произошло превышение расстояния между противоположными экстремумами
         if(eHigh-eExtremes[eFinish].price>eDistance)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eHigh;
            eExtremes[eFinish].position=1;
            }            
         if(eExtremes[eFinish].price-eLow>eDistance)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eLow;
            eExtremes[eFinish].position=-1;
            }
         }
      }   
   }

Além disso, este código deve capturar e processar os pinos - ou seja, quando uma vela se sobrepõe ao máximo e ao mínimo ao mesmo tempo, assim como o tempo mínimo entre os extremos.

Agora que a matriz com extrema está cheia, você sabe onde e quando olhar para seus indicadores. Mas as dúvidas sobre sua utilidade permanecem:)

 
Реter Konow:

Eu não quero usar ZigZag porque profana a idéia. Se ZZ é um indicador de pontos perfeito, então é o indicador mais IDEAL de todos, porque atinge os pontos perfeitos com mais precisão do que qualquer outro. Acontece - o ZigZag deve estar em todas as estratégias de sinais comerciais construídas em TODAS as estratégias. E isso é um absurdo.

Acredito que as áreas de negócios na história devem ser determinadas pelos critérios: tempo/lucro/risco e uso GA.

Você não entende o BIT do indicador Zig-Zag...

O indicador ZZ é de fato um indicador IDEAL, mas apenas como um ajuste para outros indicadores...

 
Serqey Nikitin:

Você não entende o ponto do indicador Zig-Zag...

O indicador ZZ é de fato um indicador IDEAL, mas apenas como uma configuração para outros indicadores...

O problema com a ZZ é que ela não leva em conta a relação tempo/lucro/risco das negociações.
Os pontos de entrada ZZ produzirão negócios desproporcionais. Eles não levarão em conta a tendência/flutuação. Os corredores serão colocados dentro das seções de comércio, junto com os picos.
ZZ acomoda toda a dinâmica, e parece insensato escolher outros indicadores usando-a. Pelo menos não inteligente.

Precisamos de outra abordagem. Não apenas pontos ideais de entrada/saída, mas também a observância das proporções internas dos negócios - o tempo de duração da posição, seu lucro e risco.

Por risco, neste contexto, quero dizer não a relação do lote, parada e depósito, mas a estabilidade da mudança de preço em uma posição aberta. Quanto menos estável a mudança (martelar), maior o risco de perda de lucro.

Portanto, os pontos ideais de entrada/saída não devem ser procurados de acordo com o princípio "quanto maior o lucro, melhor", mas de acordo com o princípio "o acordo ideal é o acordo com a melhor relação de tempo, lucro e risco".

Esta é a minha opinião.
 
Aleksei Stepanenko:

Não entendo. Os pontos ideais já são conhecidos na história. Estes são extremos e podem ser vistos com os olhos. Não requer algoritmos complexos para encontrar extremos. Precisamos apenas identificar as condições para identificá-las (por exemplo, exceder um certo número de pontos entre dois extremos adjacentes opostos). Então podemos criar um conjunto desses extremos (preço, data) e verificar o valor de qualquer indicador no ponto de cada extremo (ou em sua abordagem) usando o mesmo histórico. Certo?

Aqui está um código de busca e armazenamento de histórico de extrema (sem garantia de desempenho) como exemplo:

Além disso, este código deve capturar e processar espigões - quando um castiçal cobre tanto o máximo quanto o mínimo ao mesmo tempo, bem como o tempo mínimo entre os extremos.

Agora que o conjunto com extrema está preenchido, você sabe onde e quando olhar para seus indicadores. Mas subsistem dúvidas sobre sua utilidade:)

Obrigado pelo código. No entanto, não tenho certeza de como é fácil encontrar TI.
 

Peter, você pode desenhar um exemplo de algumas profissões desenhadas à mão em um gráfico? Entrada e saída. De preferência, pegue uma parte do gráfico com uma variedade de movimentos de preços. E explicar por que, nesses momentos. Qual é a relação tempo/lucro/risco dos negócios?

Porque eu não entendo bem sua idéia de um ponto ideal.

 
Aleksei Stepanenko:

Peter, você pode desenhar um exemplo de algumas profissões desenhadas à mão em um gráfico? Entrada e saída. De preferência, pegue uma parte do gráfico com uma variedade de movimentos de preços. E explicar por que, nesses momentos. Qual é a relação tempo/lucro/risco dos negócios?

Porque eu não entendo muito bem sua idéia de um ponto ideal.

Sim, farei isso mais tarde. Eu mesmo ainda não descobri isso. Eu poderia mudar meu ponto de vista. Portanto, se alguma coisa, desculpe. ))
 

Não há problema.

O fato de que você está tirando em Zig-Zag, faz sentido. O Zig-Zag não sabe nada sobre a tendência. Ele está apenas fazendo tiquetaque como um relógio de tendência e plano. Suas ondas (joelhos) não são ondas de tendência. As tendências são construídas de acordo com a seguinte regra: uma tendência é considerada continuada se ela conquista novos picos. Isto significa que a próxima onda de tendência sempre ultrapassa a anterior, e se não ultrapassar, então não é uma onda.