Règles de structure. Apprendre à structurer des programmes, explorer les possibilités, les erreurs, les solutions, etc. - page 14

 
C-4:
Dans ce cas, nous devrons stocker l'historique des signaux, ce qui est très coûteux. Examinons à nouveau le croisement de 2 moyennes. Supposons que nous redémarrions l'EA. Il n'y a pas de nouveau croisement pour l'entrée et l'EA devra en quelque sorte restaurer son historique de trading et comprendre qu'il y a eu un croisement et qu'il devrait maintenant être en état d'Achat et que ce signal a été traité et que nous ne devrions pas ouvrir une nouvelle position, mais nous devons trouver l'ancienne position, mais elle ne sera pas facile à trouver, car la position actuelle n'appartient pas nécessairement à un seul EA.... En somme, c'est un cauchemar. C'est la voie épineuse suggérée par hrenfx : écrire un testeur d'historique dans chaque robot, qui collecterait les signaux historiques, calculerait s'ils ont fonctionné ou non, puis stockerait les volumes de stratégies, etc. En conséquence, la complexité du développement augmente d'un ordre de grandeur, alors qu'il n'existe toujours pas de solution fiable.

L'historique des signaux est un indicateur, les indicateurs sont conçus dans ce but, pour faire des calculs, générer des signaux et les télécharger dans l'Expert Advisor.

Et ne dites pas que les indicateurs se redessinent, écrivez des indicateurs qui ne se redessinent pas et vous serez heureux.


Personne ne peut nous égarer, nous n'avons rien à foutre de l'endroit où nous allons :)

 
C-4:

Comment cela pourrait-il ne pas avoir d'importance ? Toute stratégie, à son niveau logique, connaît toujours son état actuel !

Voici le problème de base. Je le connais, j'en ai parcouru tous les recoins. Et c'est faux.

La stratégie n'a pas besoin de connaître son histoire. La stratégie doit être tournée vers l'avenir, et non vers le passé. Ce qui s'est passé est déjà dans le passé et il n'y a pas de retour en arrière possible.

Prenons une stratégie de croisement simple : elle n'a que deux états, elle est soit acheteuse, soit vendeuse. Sans mémoriser sa position, il ouvrira une position longue chaque fois qu'il verra que la moyenne rapide est supérieure à la moyenne lente. Alors, que doit faire le synchroniseur ? Vous lui dites : "Non, vous avez déjà une position longue, je ne vous en donnerai pas une autre".

:)

Eh bien, je l'ai déjà écrit, vous résolvez un problème inexistant. Le problème ne semble réel qu'avec la pensée "ordre". Avec le filet, on pense que ça n'existe pas.

Je ne parle pas de votre pensée ou de la mienne, je parle de la pensée du programme (stratégie).

Dans un système basé sur les ordres, la stratégie produit des signaux discrets d'achat/vente/fermeture. Dans un système basé sur le réseau, la stratégie produit un nombre (double) - la position recommandée sur le marché.

Reprenons l'exemple de deux wagons pour montrer comment un TC de compensation par roulement produira son produit, disons, lors de la négociation d'un lot constant (pseudocode) :

 Pos = Sign(MA(ShortPeriod) - MA(LongPeriod));

C'est tout.

La stratégie maintiendra +1 sur la sortie tant que le swing court est supérieur au long, et -1 lorsqu'il est inférieur.

Les décisions concernant les ordres à placer/fermer pour maintenir ces positions aux moments appropriés sont prises par le pilote de marché. La stratégie n'a pas besoin de s'en préoccuper, son rôle est plus aristocratique et elle ne se soucie pas de tous ces trucs mercantiles. Le pilote prend la position recommandée du symbole, en soustrait la position réelle et affiche la différence. Si la différence est égale à zéro, il ne fait rien.

Ma solution est universelle, la stratégie décide par elle-même du nombre d'ordres et de la direction dans laquelle elle peut rester ouverte.

La stratégie doit-elle se préoccuper des ordres ? C'est le moteur du marché qui décide de ces questions.


Si vous voulez une position d'achat et deux positions de vente, pas de problème.

Est-il possible de rire ici ? C'est exactement le problème - cela s'appelle un "verrou".

Je fais débloquer tous les verrous potentiels AVANT que la position agrégée de plusieurs stratégies d'entrée ne soit soumise au pilote du marché :

  Pos=0;
  for (i=0; i<StrategyCount; i++)  Pos+= Strategy[i].GetPos();
  MarketDriver.Synhronize(Pos, Err);

La classe de base dispose de toutes les informations dont elle a besoin pour prendre des décisions. Au niveau du terminal, il n'y a pas de position nette, alors que la stratégie elle-même fonctionne en mode multi-position confortable.

Le conseiller expert créé par le modèle que je propose aura automatiquement les propriétés d'un multi-expert. Je n'aurai pas à ajouter ou à modifier quoi que ce soit. Les positions de différents EA sur un même symbole ne s'effondreront pas en filet, il est aussi facile de programmer une grille ou un casier dans ce modèle que dans toute autre stratégie. En d'autres termes, l'unification complète de la mise en œuvre du programme est réalisée, indépendamment de la logique de l'Expert Advisor!

Euh... ma solution est encore plus polyvalente si l'on considère que les serrures n'y figurent même pas. Les amateurs de serrures ne me suivent pas, je les suis.
 
MetaDriver:

...

La stratégie conservera +1 à la sortie tant que le short est supérieur au long, et -1 lorsqu'il est inférieur.

Le pilote du marché décide des ordres à placer/fermer pour maintenir ces positions aux moments opportuns. La stratégie n'a pas besoin de s'en préoccuper, son rôle est plus aristocratique, elle ne se soucie pas de toute cette agitation mercantile.

La stratégie doit-elle se préoccuper d'un quelconque type d'ordres ? Le moteur du marché décide de ces petits détails pour moi.

...

Tout cela est bien sûr très bien, mais qu'en est-il des stratégies dont la "recommandation" actuelle dépend d'une position précédemment ouverte. Supposons qu'une stratégie soit activement pyramidale et qu'elle ait une telle condition (pseudocode) :

if(LastPosition.NetProfit > 400 && LastPosition.PositionType == Long)
{
   double volume = LastPosition.Volume + 1;
   BuyAtMarket(volume, "Entry long by strengthening");
}

Un autre exemple de la façon dont le système de recommandation traiterait une condition aussi simple (pseudo-code) :

if(LastPosition.NetProfit < -400)
{
    CloseAtMarket(LastPosition, "Exit position by stop-loss");
    if(LastPosition.PositionType == Long)
       ShortAtMarket(volume, "Entry long by revers")
    else
       BuyAtMarket(volume, "Entry short by revers")
}
En réalité, ces conditions peuvent être très nombreuses.
 
MetaDriver:
C'est la base du flou. Je le connais très bien, j'ai fouillé tous les coins et recoins d'ici. Et c'est faux.

La stratégie n'a pas besoin de connaître son histoire. La stratégie doit être tournée vers l'avenir, pas vers le passé. Ce qui est arrivé s'est déjà produit dans le passé et il n'y a pas de retour en arrière possible.

Pourquoi tu cries :) ce n'est pas ce qu'il a dit.


Toute stratégie, au niveau de sa logique, connaît toujours son état actuel !

Il s'agit de l'état actuel, pas de l'histoire.
 
C-4:

Tout cela est bien sûr très bien, mais qu'en est-il des stratégies dont la "recommandation" actuelle dépend d'une position précédemment ouverte. Supposons que la stratégie soit activement pyramidale et qu'elle ait cette condition (pseudo-code) :

Ces stratégies doivent absolument être soignées, au niveau de la philosophie de trading, notamment ce trou particulier dans la tête : " la recommandation actuelle dépend d'une position précédemment ouverte".

La position actuelle recommandée ne doit jamais dépendre des actions prises précédemment sur le marché.

 
sergeev:

Pourquoi tu cries :) ce n'est pas ce qu'il a dit.

ça dit état actuel, pas historique.

Je ne communique pas avec ce qu'il a dit, je communique avec ce qu'il a voulu dire. Il faisait référence à l'état actuel précédent.

:)

 

:)

En fait, pour mon schéma, il n'y a pas d'obstacles principaux pour créer des stratégies qui tiennent compte des transactions passées.

En termes plus académiques : un système sans mémoire peut facilement simuler un système avec mémoire. Pour ce faire, la mémoire est simplement déplacée en dehors du système - elle devient un autre indicateur d'entrée. C'est tout à fait suffisant. La stratégie elle-même reste un "système sans mémoire" et c'est bien ainsi.

 
MetaDriver:

La position actuelle recommandée ne doit jamais dépendre des actions effectuées plus tôt sur le marché.

Qu'en est-il des robots "émettant leurs propres recommandations" dont les signaux sont d'une seule phrase ? Le robot a vu une grande bougie ascendante - un signal d'achat. La barre suivante est une barre normale, il n'y a pas de signal. Si le robot ne se souvient pas de son statut, sa recommandation sur cette barre est déjà nulle, tandis que le robot qui s'en souvient n'est pas nul mais a une position longue. Mais ce sont deux robots identiques.

MetaDriver:

Je ne communique pas avec ce qu'il a dit, mais avec ce qu'il a voulu dire. Il faisait référence à l'état actuel précédent.

Ah, c'est donc ce que je voulais vraiment dire ! Je le saurai :)
 
C-4: ... Tout cela est bien sûr très bien, mais qu'en est-il des stratégies dont la "recommandation" actuelle dépend d'une position précédemment ouverte. Supposons qu'une stratégie consiste à pyramider activement ...

Le fait est que la personne en tête de liste a très probablement une prévision des prix plutôt qu'une stratégie.

MetaDriver: ... La tâche de la stratégie est de prédire si le marché va monter ou descendre au prochain moment, et avec quelle probabilité. La position recommandée sur le marché en dépend. Ce qui était là dans le passé, qu'il y ait des positions ouvertes (dans un sens ou dans l'autre) ou non, est absolument sans importance.
Et ce dont vous(C-4) parlez, c'est du travail du module de gestion de l'argent qui prend en entrée les lectures du prédicteur et les résultats des transactions passées(une sorte de fonction). S'il n'y a pas de MM, l'algorithme de trading final transforme en fait une position prédicatrice virtuelle (qui ne se soucie pas des résultats passés du trading) en une position réelle, où la direction future du marché est le signe de la position recommandée, et la confiance/la probabilité est proportionnelle au volume de cette même position.

Le module MM est une couche entre le Forecaster et le Driver, et les résultats peuvent être n'importe quoi, de la capitalisation et la limite de risque (drawdown relatif dans X ... heures/trades/mouvement de pips) à l'inversion radicale de la position recommandée par le forecaster.

 
C-4:

Qu'en est-il des robots "émettant leurs propres recommandations" dont les signaux sont d'une seule phrase ? Le robot a vu une grande bougie ascendante - un signal d'achat. La barre suivante est une barre normale et il n'y a pas de signal. Si le robot ne se souvient pas de son statut, sa recommandation sur cette barre est déjà nulle, tandis que le robot qui s'en souvient n'est pas nul mais a une position longue. Et ce sont deux robots identiques.

Ces robots doivent absolument être traités. Le traitement peut être très simple. Il suffit d'être motivé. C'est l'essentiel.

Et pour être motivés, ils doivent voir et apprécier l'énorme supériorité du raisonnement par filet sur le raisonnement par ordre. Tant qu'ils seront malades, je ne les laisserai pas s'approcher de la population saine - je les laisserai en quarantaine...

:)

Ah, c'est donc ce que je voulais vraiment dire ! Bon à savoir :)
Pourquoi pas ? Dois-je m'excuser ? Ou ai-je bien deviné ? ;-))
Raison: