Initialiser et réinitialiser automatiquement l'EA à partir d'un fichier - page 7

 
Fry_Антон:

Je vois.

Concrètement : demain, je vais réfléchir à la manière de prendre une position à la volée sur FORTS. En fait, ce dont j'ai le plus besoin, c'est de connaître le prix d'ouverture réel d'une position qui a été compensée (réouverte au prix de compensation).

La position sur FORTS est acquise par la somme des transactions sur un (ou plusieurs) ordre(s). Lors de la compensation, il y a une transaction technique sans ticket, nous devons trouver comment déterminer le prix POSITION_PRICE_OPEN qui était avant la compensation.

Il peut être stocké. Ne décidez que de la durée de vie. Par exemple, pour oublier si l'EA est hors du marché (aucune position).
 
Dmitry Fedoseev:

Évidemment, si :

Vous devez continuer à ciseler. Mais au moins, ne bloquez pas l'expert. Peut-être moins effrontément ciseler, comme le nombre d'erreurs augmente, augmenter la pause entre les tentatives. La solution la plus simple consiste à faire quelques tentatives et à faire une pause jusqu'à l'ouverture de la barre suivante.

Qu'en est-il des pénalités de la Bourse pour avoir dépassé 2 000 transactions ? Disons que j'ai 50 EA et que 2 000 transactions sont passées. Que dois-je faire ensuite, si je reçois des pénalités monétaires de la part de l'Exchange ?
 
Fry_Антон:

Je vois.

Concrètement : demain, je vais réfléchir à la manière de prendre une position à la volée sur FORTS. En fait, ce dont j'ai le plus besoin, c'est de connaître le prix d'ouverture réel d'une position qui a été compensée (réouverte au prix de compensation).

La position sur FORTS est acquise par la somme des transactions sur un (ou plusieurs) ordre(s). Lors de la compensation, il y a une transaction technique sans ticket, nous devons trouver comment déterminer le prix POSITION_PRICE_OPEN qui était avant la compensation.

//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice( const string aSymbol )
{
  double price_in = 0;
  double volume_in = 0;
  
  if ( PositionSelect( aSymbol ) )
  {
    ulong pos_id = ulong( PositionGetInteger( POSITION_IDENTIFIER ) );
    
    if ( pos_id > 0 )
    {
      if ( HistorySelectByPosition( pos_id ) )
      {
        int deals = HistoryDealsTotal();
      
        for( int i = 0; i < deals; i++ )
        {
          ulong deal_ticket = HistoryDealGetTicket( i );
          ulong order_ticket = ulong( HistoryDealGetInteger( deal_ticket, DEAL_ORDER ) );
        
          if ( order_ticket > 0 )
          {
            ENUM_DEAL_ENTRY deal_entry = ENUM_DEAL_ENTRY( HistoryDealGetInteger( deal_ticket, DEAL_ENTRY ) );
              
            if ( deal_entry == DEAL_ENTRY_IN )
            {
              double price = HistoryDealGetDouble( deal_ticket, DEAL_PRICE );
              double volume = HistoryDealGetDouble( deal_ticket, DEAL_VOLUME );
                                
              price_in += price * volume;
              volume_in += volume;  
            }
          }
        }
        if ( volume_in > 0 ) return( NormalizeDouble( price_in / volume_in, _Digits ) );
      }
      else
      {
        Print( "GetPositionPrice: Невозможно получить историю позиции по символу ", aSymbol );
      }
    }
    else
    {
      Print( "GetPositionPrice: Невозможно определить идентификатор позиции по символу ", aSymbol );
    }
  }
  return( 0 );
}
 
Михаил:

Super ! Je le boulonnerai demain.

Vous m'avez fait gagner beaucoup de temps. Merci. (gloussements)

 
Fry_Антон:

Super ! Je le joindrai demain.

Vous m'avez fait gagner beaucoup de temps. Merci.

Mémo :

Cette fonction est UNIQUEMENT destinée aux transactions entrantes !

(c'est-à-dire qu'il n'y a pas eu de réduction de poste).

Si vous avez besoin des deux, alors ajoutez à la fonctionDEAL_ENTRY_OUT

 
Михаил:

Mémo :

Cette fonction est réservée aux transactions entrantes UNIQUEMENT !

(c'est-à-dire aucune diminution de la position)

Si vous avez besoin des deux, ajoutez alors à la fonctionDEAL_ENTRY_OUT

que j'ai compris tout de suite. C'est le principe lui-même qui est important ici : il s'agit d'une recherche par ID dans l'histoire, et c'est essentiellement la réponse complète à la question ci-dessus.


Pour être franc, je ne comprends pas la logique des développeurs, qui ont décidé de concevoir une opération technique de compensation d'une manière aussi "maladroite".

Qu'il s'agisse des objets graphiques sur les graphiques, des propriétés de la position dans l'historique, ou encore des propriétés d'une position ouverte (rentabilité), tout est trompeur non seulement pour un simple code dans un EA, mais pour tout trader en général.

 
kond777:
Et que dire des amendes de la Bourse pour avoir dépassé 2 000 transactions ? Supposons que j'ai 50 EA et que 2 000 transactions ont été effectuées. Que dois-je faire ensuite, recevoir des amendes de la Bourse ?

Vous n'apprendrez pas la réponse à votre question.

Pour ne pas recevoir d'amende, il est nécessaire d'arrêter le travail de l'expert (vous et moi en avons discuté il y a longtemps).

Si notre programmateur de miracles dit qu'il faut s'arrêter, il admet par là même qu'il est...

admettre être ....., qui ne sait rien de la programmation

experts pour les transactions boursières....

 
Михаил:

Vous n'apprendrez pas la réponse à votre question.

Pour ne pas recevoir d'amende, il est nécessaire d'arrêter le travail de l'expert (vous et moi en avons discuté il y a longtemps).

Si notre programmateur de miracles dit qu'il faut s'arrêter, il admet ainsi qu'il est...

admettre être ....., qui ne connaît rien à la programmation.

Conseillers experts pour les transactions boursières....

À mon avis,Dmitry Fedoseev donne l'impression d'être une personne bien informée, je pense qu'il sera probablement en mesure d'offrir une solution à ce problème.
 
Михаил:

Oui, parce que vous conseillez à une personne ce qui est bon pour MT4 et qui est complètement "futile" dans MT5 !

Il est évident, d'après vos messages, que vous n'avez aucune idée du fonctionnement de MT5.

Et ce n'est pas à vous de juger si le principe de la programmation experte est honteux ou non !

Je ne vous vois pas du tout comme une autorité, mais comme un garçon effronté et insolent !

Tu es jaloux ? Et à juste titre, il vaut mieux être un jeune chiot qu'un vieil oiseau de paradis.
 
Алексей Тарабанов:
Jaloux ? Vous avez raison - mieux vaut être un jeune chiot qu'un vieil oiseau de paradis.
Il y a plus d'essence dans la flaque...
Raison: