O reconhecimento de imagens ( tema retórico ) - página 9

 

De fato, como Debugger apontou, além dos padrões em si, a probabilidade de conclusão do padrão (ou a probabilidade de saída do padrão) é interessante.

A classificação dos padrões é bastante ampla, portanto, primeiro devemos decidir quais padrões queremos considerar aqui (padrões de ondas, padrões de candelabros, formas, ...).

 

Parece-me que é melhor analisar os padrões que a maioria dos participantes do mercado vê e interpreta da mesma forma.

Isto é, com a EWA imho há algumas dificuldades, porque há muitas interpretações de determinar o início/fim das ondas de diferentes níveis.

Pessoalmente, prefiro padrões e figuras de candelabros "em espírito" (quebras de triângulos, etc.), que praticamente todos podem ver. Mas acho que a mesma quebra de um triângulo pode ser determinada em termos de EWA e padrões de castiçal (por exemplo, NR4).

 
DDFedor:

Tenho uma sugestão. talvez alguém esteja disposto a postar um padrão para dissecação (descrição)? um padrão simples, mas suficiente para mostrar por exemplo como encontrar (definir) o padrão em si, como encontrar confirmações do padrão, como implementar o(s) sinal(s). é possível que, considerando tal exemplo em uma "transmissão ao vivo", alguém se mova para seguir em frente.


Por que a palavra-chave no título do tópico é "retórica".

Imagens->Patterns->ZigZag Only

E reconhecendo um gráfico linear por partes (codificação vetorial + fuzzy acima/longo), um conjunto de quatro ... castiçais mais curtos e sua posição mútua (número limitado de combinações, especialmente com a mesma confusão) e "imagem de movimento browniano" (como um quadrado preto - aqui estava uma figura geométrica ) são três coisas completamente diferentes.

E o fato de que "imagens ZigZag" são mais ... informativo também não é um fato.

E tudo por que - trabalho coletivo remoto AKA Swan (preto), lagostas e lúcios (não em "ss" )

;)

 

O reconhecimento do padrão com ziguezague não leva em conta o contexto. Por causa disso, haverá barulho (1) - alguns padrões serão falsos.

Além disso, alguns padrões não serão encontrados porque o ziguezague pode marcar uma seção de correção. Os raios em ziguezague na área de correção podem não ser levados em conta pelo algoritmo de busca de padrões. Isto também é ruído (2).

É necessário filtrar o ponto de entrada após encontrar o padrão para filtrar o ruído (1). O filtro pode ser, por exemplo, vários indicadores...

A fim de eliminar o ruído (2), é necessário elaborar o algoritmo de busca de padrões. Neste caso, também pode ocorrer uma variante de ruído (1). Vamos chamar esta variante de ruído (3).

O ruído (1) pode ser suavizado ao tentar criar uma análise de ondas, que no momento é muito subjetiva.

 
Existe alguma estatística ou trabalho que os peixes estão a abarrotar aqui? O autor deste tópico trabalha compreensivelmente em comissão, mas ele apenas cava porque tem uma pá .......
 
DDFedor:

Tenho uma sugestão. talvez alguém esteja disposto a postar um padrão para dissecação (descrição)? um simples, mas suficiente para mostrar pelo exemplo como encontrar (definir) o próprio padrão, como encontrar confirmações do padrão, como implementar o(s) sinal(s). é possível que um exemplo vivo como este possa mover alguém a seguir em frente.


um simples, eu diria até, algoritmo primitivo para encontrar um duplo top (inferior) não me chutam pelo código, estou apenas aprendendo, estou divulgando o código apenas para compartilhar o algoritmo, é interessante saber como alguém encontra esses tops.

extern double ExtDepth  = 12; // шаг зигзага
extern double Lot       = 1;  // лот
extern double Accuracy  = 95; // точность совпадения в %
extern int    SL_TP     = 2;  // соотношение SL к TP

double ZZ;

int start()
{
   double SL, TP, zz, zz0, zz1, zz2, zz3;
   bool BUY, SELL;
  
   for (int i=0; i<1000; i++) // ищем 4 точки зигзага
     {
      zz=iCustom(NULL, 0, "ZigZag", ExtDepth, 5, 3, 0, i);
      if (zz!=0 && zz!=EMPTY_VALUE) 
        {
         if (zz0==0)           {zz0=zz; continue;} 
         if (zz1==0 && zz0!=0) {zz1=zz; continue;}
         if (zz2==0 && zz1!=0) {zz2=zz; continue;} 
         if (zz3==0 && zz2!=0) {zz3=zz; break;}    
        }
     }
  
  if (zz0!=0 && ZZ!=zz2) // если образовался новый луч ЗЗ 
    {
     if (zz2>zz1 && zz2>zz3) // если ЗЗ образовал /\-фигуру то проверяем точность совпадения в %
         {
         if ((zz2-zz1)/(zz2-zz3)*100>Accuracy && (zz2-zz1)/(zz2-zz3)*100<200-Accuracy) 
           // например если Accuracy = 98 то разность ног ЗЗ должна попадать в диапозон от 98% до 102%
           BUY = true; // если двойное дно найдено покупаем
         } 
    
     // Тоже самое для двойной вершины
     if (zz2<zz1 && zz2<zz3 && (zz2-zz1)/(zz2-zz3)*100>Accuracy && (zz2-zz1)/(zz2-zz3)*100<200-Accuracy) SELL = true;
     // Как видим все условие образования двойной вершины умещается в одну строчку :))
    }
   if ( BUY ) // покупаем
    {
     SL = zz1-Point;           // стоп ставим на дно
     TP = Ask+(Ask-SL)*SL_TP;  // т.п. в SL_TP раз больше чем с.л.
     SL = NormalizeDouble(SL, Digits);
     TP = NormalizeDouble(TP, Digits);
     OrderSend( Symbol(), OP_BUY, Lot, Ask, 20, SL, TP );
     ZZ=zz2; // запомним значения ЗЗ чтобы больше сделок на этой ноге не открывать
    }
  if ( SELL ) // продаем
    {
     SL = zz1+(Ask-Bid)+Point; // стоп ставим на вершину
     TP = Bid-(SL-Bid)*SL_TP;  // т.п. в SL_TP раз больше чем с.л.
     SL = NormalizeDouble(SL, Digits);
     TP = NormalizeDouble(TP, Digits);
     OrderSend(Symbol(), OP_SELL, Lot, Bid, 20, SL, TP );
     ZZ=zz2; // запомним значения ЗЗ чтобы больше сделок на этой ноге не открывать
    }
   return(0);
}
Arquivos anexados:
 
RomanS:


Eu diria até mesmo um algoritmo primitivo para encontrar um duplo topo (inferior), não me culpe pelo código, estou apenas aprendendo, estou apenas compartilhando o algoritmo, é interessante saber como alguém encontra estes tops.


E então. :)

Ou seja, você insere seu fragmento no roteiro. Lá você também insere um "professor" olhando para o futuro e, ao percorrer a história, cria um arquivo contendo o "Padrão - Sinal de Professor". Depois disso, no Excel, veja com que freqüência, após o padrão, que sinais apareceram.

E se você enumerar seu padrão, por exemplo, DV (e o formar como uma função), então "alguns índios" (3I), etc., do arquivo você pode extrair dados como "havia mais freqüência de DV antes de comprar sinais" ou vice-versa, "havia mais freqüência de venda de sinais depois de DV".

Foi vendo estas "mais vezes" que me fez ... ... resfriado até ... "reconhecimento".

ZS. "Minha versão do professor".

extern int     PredictLeadB    = 5;     //Число баров "предсказания"
extern int     LevelTrend     = 60;     //Выше этого - "сильное движение"
extern int     LevelFlat      = 30;     //Выше этого - "так себе бвижение", а ниже - на заборе
extern double  LevelFC        = 2.0;    //Грубо говря скорость/просадка (из кода ясно)
    
. . .

  {//Содержимое "Trade"
   int BarHigh  = iHighest(NULL, 0, MODE_HIGH, pPredictLead, Shift - pPredictLead);
   int BarLow   = iLowest(NULL, 0, MODE_LOW, pPredictLead, Shift - pPredictLead);
   double fHigh = iHigh(NULL, 0, BarHigh);
   double fLow  = iLow(NULL, 0, BarLow);
   double dLow  = (fLow - cClose) / Point;
   double dHigh = (fHigh - cClose) / Point;
   double fLevelFC;

   if(MathAbs(dHigh) > MathAbs(dLow))
    if(dLow == 0.00) 
     if(dHigh > 0)
      fLevelFC = 9999;
     else
      fLevelFC = -9999;
    else
     fLevelFC = dHigh / dLow;
   else
    if(dHigh == 0.00) 
     if(dLow > 0)
      fLevelFC = 9999;
     else
      fLevelFC = -9999;
    else
     fLevelFC = dLow / dHigh; 

   int signalTrade = 0;
   int fBar = Shift;
   if(dHigh > pLevelTrend && MathAbs(fLevelFC) > pLevelFC)
   {
    signalTrade = 2;
    fBar = BarHigh;
   }
   if(dLow < -1 * pLevelTrend && MathAbs(fLevelFC) > pLevelFC)
   {
    signalTrade = -2;
    fBar = BarLow;
   }
   if(dHigh > pLevelFlat && dLow > -1 * pLevelFlat && signalTrade == 0)
   {
    signalTrade = 1;
    fBar = BarHigh;
   }
   if(dLow < -1 * pLevelFlat && dHigh < pLevelFlat && signalTrade == 0)
   { 
    signalTrade = -1;
    fBar = BarLow;
   }
. . .
ФилеВрите(кодПаттерна, signalTrade);

Nesse caso (para um tal "professor"), fazendo loops sobre variáveis externas (que é o que eu tinha em meu código, de modo que as variáveis têm outros nomes), será possível avaliar não apenas o fato da "previsão" do sinal, mas também algumas de suas características qualitativas.

O principal a lembrar é que "esta" ciência é falsa (em um lugar chamado "xforex"!!!), que os "trisigmas" não rolam ;)

SZY. Shift - é apenas para o roteiro - na barra do Shift no passado "reconhecemos" um padrão, e no futuro a partir dele (barra do Shift) - avaliamos o sinal.

 
gip:
Normalmente posso dizer se é bem-sucedido ou não em cerca de dois dias. Uma simples descrição verbal é suficiente para que você possa começar.

A grandeza está fora dos gráficos.

 
hhohholl:

A grandeza está fora dos gráficos


O que para quê? O que a grandeza tem a ver com a determinação do desempenho do padrão por metodologia?

Ou você acha que testes simples podem de alguma forma se comparar com o processamento em um sistema especializado?

 
gip:


O que para quê? O que a grandeza tem a ver com a determinação por método da eficácia de um padrão?

Ou você acha que testes simples podem, de alguma forma, se comparar ao processamento em o sistema de peritos?

Vadim, o que você quer dizer com "sistema especializado", o que ele pode fazer?