Buy stop Sell stop Conseiller de la grille en tant que classe - page 2

 

J'ajoute des fonctionnalités petit à petit. Au démarrage, s'il n'y a pas de positions ni d'ordres en attente, des ordres stop en attente sont placés. La description de la version est jointe au fichier de la classe :

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//+------------------------------------------------------------------+

ds

 

Intéressant - la fonction CBuyStopSellStopGrid::RefreshRates(void) vérifie si les valeurs asc-bid sont nulles.

Est-ce vraiment une situation possible ?

En général - pas d'autres remarques, le code est assez transparent et clair.

 
George Merts:

Intéressant - la fonction CBuyStopSellStopGrid::RefreshRates(void) vérifie si les valeurs asc-bid sont nulles.

Cette situation est-elle vraiment possible ?

En général, il n'y a pas d'autres remarques, le code est assez transparent et clair.


Oui, c'est la vie et tout est possible ici. En général, vérifiez les valeurs nulles saisies à cause du testeur (c'était il y a environ un an : lors du démarrage des premiers t=few ticks, le testeur a donné des zéros).

J'ajoute des fonctionnalités petit à petit. Dans la transaction OnTradeTransaction, s'il y a une position ("DEAL_ENTRY_IN"), nous supprimons les ordres en attente et définissons à nouveau deux ordres stop en attente :

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//+------------------------------------------------------------------+

BuyStopSellStopGrid 1.002

Jusqu'à présent, nous avons de telles lacunes :

  1. à chaque tick, le montant des positions et des ordres en attente est vérifié
  2. Aucun contrôle des opérations commerciales (placement de l'ordre en attente) - le conseiller expert ne gère pas les situations où l'ordre en attente n'a pas été placé.
  3. Un ensemble de positions sans positions - cette situation n'est pas gérée, c'est-à-dire que si nous avons, disons, fermé une position d'achat, et qu'ensuite une position de vente a été ouverte...
 
Vladimir Karputov:

Oui, c'est la vie et tout est possible. En général, la vérification des valeurs nulles a été introduite à cause du testeur (il y a eu un cas il y a environ un an : lors du démarrage des premiers t=few ticks, le testeur a donné des zéros).

J'ajoute des fonctionnalités petit à petit. Dans la transaction OnTradeTransaction, s'il y a une position ("DEAL_ENTRY_IN"), nous supprimons les ordres en attente et définissons à nouveau deux ordres stop en attente :


Jusqu'à présent, nous avons de telles lacunes :

  1. à chaque tick, le montant des positions et des ordres en attente est vérifié
  2. Aucun contrôle des opérations commerciales (placement de l'ordre en attente) - le conseiller expert ne gère pas les situations où l'ordre en attente n'a pas été placé.
  3. Un ensemble de positions sans positions - par exemple, la situation n'est pas gérée, lorsque, disons, nous avons ouvert une position d'achat, puis une position de vente s'est ouverte...

L'algorithme présenté sur la capture d'écran ne fonctionnera pas. Pour que l'algorithme fonctionne, vous devez procéder comme suit :

Lorsqu'un signal d'achat est reçu, une grille d'ordres BUY STOP est placée au-dessus du haut de la première bougie. En dessous du prix de clôture, un ordre SELL STOP est placé. Les ordres doivent être fermés non pas en raison d'un profit ou d'une perte, mais en raison d'un autre signal. Avec des signaux plus ou moins sains, ce système fonctionnera toujours.

Il ne s'agit que d'une variante ; vous pouvez tout faire d'une manière différente.

 
Ibragim Dzhanaev:

Si les signaux sont plus ou moins sains, un tel système fonctionnera toujours.

Il serait préférable d'écrire "si vous achetez aux points bas et vendez aux points hauts, vous ferez toujours des bénéfices".

Qui discute ? Le problème est de trouver des "signaux raisonnables".

 

Version 1.003 :

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//| 1.003:                                                           |
//|   OnTradeTransaction: DEAL_ENTRY_IN                              |
//|      DEAL_TYPE_BUY => ClosePositions(POSITION_TYPE_SELL)         |
//|      DEAL_TYPE_SELL => ClosePositions(POSITION_TYPE_BUY)         |
//|   PlacesXXXX:                                                    |
//|      "RefreshRates()" is now inside the "PlacesXXXX"             |
//|   OnTradeTransaction:                                            |
//|      a "while" loop for "PlacesXXXX"                             |
//+------------------------------------------------------------------+

  • ferme désormais TOUTES les positions opposées lorsqu'une position est ouverte.
  • L'acquisition du prix actuel a été déplacée à l'intérieur des fonctions PlacesBuy et PlacesSell afin de se protéger contre les écarts et les dérapages.
  • DansOnTradeTransaction, les ordres en attente sont placés dans une boucle while - en d'autres termes, nous battons le serveur à plate couture :) - Ce n'est pas la meilleure solution mais elle restera pour l'instant.

En fait, maintenant nous pouvons penser :

  1. Quelle est la meilleure façon d'augmenter les positions (calcul du volume des lots) ?
  2. Que faire avec des positions opposées...

 
George Merts:

Une meilleure façon de procéder serait d'écrire "si vous achetez aux points bas et vendez aux points hauts, vous ferez toujours des bénéfices".

Qui discute ? Le problème est de trouver des "signaux raisonnables".


L'option la plus simple et la plus évidente.


 
Je peux me joindre à vous ?
 

Ou alors, c'est comme ça.


 
Artiom Morochin:
Je peux me joindre à vous ?

C'est fait. Connecter l'entrepôt, mettre à jour les fichiers du projet à partir de l'entrepôt.