La "centrifugeuse" algorithmique - page 13

 
Aleksei Stepanenko:

OK, ...

- peut-être quelque chose d'autre...

Nous devons utiliser l'AG pour trouver les IT (points idéaux) d'une certaine manière. J'y pense.
 
Igor Makanu:

Les points d'entrée idéaux sur l'histoire - ZigZag, vous avez rejeté

Je ne veux pas utiliser ZigZag parce que ça profane l'idée. Si le ZZ est un indicateur de points parfaits, alors il est l'indicateur le plus IDEAL de tous, car il touche les points parfaits plus précisément que les autres. Il s'avère que le ZigZag devrait être dans chaque signal de commerce construit dans TOUTES les stratégies. Et c'est absurde.

Je pense que les zones de transactions sur l'historique devraient être déterminées par les critères : temps/profit/risque et utiliser GA.

 
Реter Konow:

Je ne veux pas utiliser ZigZag parce que ça profane l'idée. Si le ZZ est un indicateur de points parfaits, alors il est l'indicateur le plus IDEAL de tous, car il touche les points parfaits plus précisément que les autres. Il s'avère que le ZigZag devrait être dans chaque signal de commerce construit dans TOUTES les stratégies. Et c'est absurde.

Je pense que les zones de transactions sur l'historique devraient être déterminées par les critères : temps/profit/risque et utiliser GA.

Je n'ai rien contre

Je ne vois pas de quoi discuter, je m'en vais pour l'instant.

 
Реter Konow:
Nous devons d'une manière ou d'une autre impliquer l'AG dans la recherche de l'IT (points idéaux). J'y pense.

Je ne comprends pas. Les points parfaits sont déjà connus dans l'histoire. Ils sont extrêmes, et vous pouvez les voir de vos yeux. Elle ne nécessite pas d'algorithmes complexes pour trouver les extrema. Il suffit de définir les conditions permettant de les identifier (par exemple, dépasser un certain nombre de points entre deux extrema adjacents opposés). Nous pouvons alors créer un tableau de ces extrema (prix, date) et vérifier la valeur de n'importe quel indicateur au point de chaque extremum (ou à son approche) en utilisant le même historique. N'est-ce pas ?

Voici un code "à faire ou à défaire" pour rechercher et stocker les extrema de l'histoire (sans garantie de performance) :

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;
            }
         }
      }   
   }

En outre, ce code doit capturer et traiter les clous, c'est-à-dire les cas où une bougie chevauche à la fois le maximum et le minimum, ainsi que le temps minimum entre les extrema.

Maintenant que le tableau des extrema est rempli, vous savez où et quand regarder vos indicateurs. Mais des doutes quant à leur utilité subsistent :)

 
Реter Konow:

Je ne veux pas utiliser ZigZag parce que ça profane l'idée. Si le ZZ est un indicateur de points parfaits, alors il est l'indicateur le plus IDEAL de tous, car il touche les points parfaits plus précisément que les autres. Il s'avère que le ZigZag devrait être dans chaque signal de commerce construit dans TOUTES les stratégies. Et c'est absurde.

Je pense que les zones de transactions sur l'historique devraient être déterminées par les critères : temps/profit/risque et utiliser GA.

Vous ne comprenez pas le BIT de l'indicateur Zig-Zag...

L'indicateur ZZ est effectivement un indicateur IDEAL, mais seulement en tant que paramètre pour d'autres indicateurs...

 
Serqey Nikitin:

Vous ne comprenez pas l'intérêt de l'indicateur Zig-Zag...

L'indicateur ZZ est effectivement un indicateur IDEAL, mais seulement en tant que setup pour d'autres indicateurs...

Le problème du ZZ est qu'il ne tient pas compte du rapport temps/profit/risque des transactions.
Les points d'entrée ZZ produiront des transactions disproportionnées. Ils ne tiendront pas compte de la tendance/du flottement. Les couloirs seront placés à l'intérieur des sections de métiers, ainsi que les pics.
ZZ s'adapte à toutes les dynamiques, et il semble insensé de choisir d'autres indicateurs en l'utilisant. Au moins, ce n'est pas intelligent.

Nous avons besoin d'une autre approche. Non seulement les points d'entrée/sortie idéaux, mais aussi le respect des proportions internes des transactions - la durée de la position, son profit et son risque.

Par risque, dans ce contexte, j'entends non pas le rapport entre le lot, le stop et le dépôt, mais la stabilité de la variation du prix dans une position ouverte. Moins le changement est stable (martelage), plus le risque de perte de profit est grand.

Par conséquent, les points d'entrée/sortie idéaux ne doivent pas être recherchés selon le principe "plus le profit est élevé, mieux c'est", mais selon le principe "l'opération idéale est celle qui présente le meilleur rapport entre temps, profit et risque".

C'est mon opinion.
 
Aleksei Stepanenko:

Je ne comprends pas. Les points idéaux sont déjà connus dans l'histoire. Ce sont des extrêmes et on peut les voir avec les yeux. Elle ne nécessite pas d'algorithmes complexes pour trouver les extrema. Il suffit de définir les conditions permettant de les identifier (par exemple, dépasser un certain nombre de points entre deux extrema adjacents opposés). Nous pouvons ensuite créer un tableau de ces extrema (prix, date) et vérifier la valeur de n'importe quel indicateur au point de chaque extremum (ou à son approche) en utilisant le même historique. N'est-ce pas ?

Voici, à titre d'exemple, un code bricolé pour la recherche et le stockage des extrema de l'histoire (sans garantie de performance) :

En outre, ce code devrait attraper et traiter les pics - lorsqu'une bougie couvre à la fois le maximum et le minimum en même temps, ainsi que le temps minimum entre les extrema.

Maintenant que le tableau des extrema est rempli, vous savez où et quand regarder vos indicateurs. Mais des doutes subsistent quant à leur utilité :)

Merci pour le code. Je ne suis pas sûr qu'il soit facile de trouver l'informatique, cependant.
 

Peter, pouvez-vous nous donner un exemple de quelques transactions dessinées à la main sur un graphique ? Entrée et sortie. De préférence, prenez un morceau du graphique avec une variété de mouvements de prix. Et expliquez pourquoi à ces moments-là. Quel est le rapport temps/profit/risque des transactions ?

Parce que je ne comprends pas bien votre idée d'un point idéal.

 
Aleksei Stepanenko:

Peter, pouvez-vous nous donner un exemple de quelques transactions dessinées à la main sur un graphique ? Entrée et sortie. De préférence, prenez un morceau du graphique avec une variété de mouvements de prix. Et expliquez pourquoi à ces moments-là. Quel est le rapport temps/profit/risque des transactions ?

Parce que je ne comprends pas bien votre idée d'un point idéal.

Oui, je le ferai plus tard. Je n'ai pas encore tout à fait compris moi-même. Je pourrais changer mon point de vue. Donc, si quelque chose, désolé. ))
 

Pas de problème.

Le fait que tu t'en prennes à Zig-Zag, c'est logique. Zig-Zag ne sait rien de la tendance. Il est juste en train de fonctionner comme une horloge, à la fois en tendance et à plat. Ses vagues (genoux) ne sont pas des vagues de tendance. Les vagues de tendance sont construites selon la règle suivante : une tendance est considérée comme continue si elle conquiert de nouveaux sommets. Cela signifie que la vague de tendance suivante dépasse toujours la précédente, et que si ce n'est pas le cas, il ne s'agit pas d'une vague.