Erreurs, bugs, questions - page 144

 
pronych:

Il a toujours été difficile de gérer les ordres en attente. sur mt4 aussi. essayez peut-être de vous éloigner de cela ? par exemple, faites des ordres en attente virtuels (il suffit de les stocker dans des variables et de les ouvrir sur le marché lorsque le prix a traversé). Le temps est important maintenant...

Je n'ai pas le temps... Je viens de déboguer le code.

au moins avoir le temps de faire des tests et des ajustements.

 
Valmars:
De telles erreurs isolées n'affecteront pas le sort de votre EA dans le championnat. Mais si, faute d'argent, il tente à plusieurs reprises d'ouvrir une position générant des gigaoctets dans son journal, comme cela s'est produit lors des précédents championnats, il sera disqualifié.
Non, lorsque l'ordre en attente est supprimé, bien sûr, un autre ordre ne sera pas placé s'il n'y a pas d'argent.
 
J'ai un problème lors de la détermination des niveaux d'arrêt pour les ordres en attente. Lorsque le marché est calme et que nous voulons placer un ordre stop à un niveau autorisé, la fonction SymbolInfoInteger(SYMBOL_TRADE_STOPS_LEVEL) fonctionne parfaitementet les ordres sont placés et tout le monde est content, y compris moi. Cependant, si le marché évolue fortement au début des sessions de trading, cette fonction cesse de fonctionner, les ordres ne sont pas placés et le terminal commence à générer des erreurs concernant des stops invalides.

Je ne voudrais pas que mon EA soit exclu de la compétition à cause de ce genre de dépendance à l'égard des fonctions recommandées. Mais alors, comment puis-je connaître le niveau de stop autorisé correct pour un symbole donné en ce moment ?

P.S. Je détesterais utiliser la sélection avec augmentation incrémentale en cas d'erreur, et le nombre d'erreurs dans ce cas va augmenter.
 
Vladix:
J'ai un problème pour déterminer les niveaux d'arrêt pour les ordres en attente. Lorsque le marché est calme et que nous voulons placer un ordre stop à un niveau autorisé, la fonction SymbolInfoInteger(SYMBOL_TRADE_STOPS_LEVEL) fonctionne parfaitementet les ordres sont placés et tout le monde est content, y compris moi. Cependant, si le marché commence à vibrer fortement au début d'une session de trading, cette fonction cesse de fonctionner, les ordres ne sont pas placés et le terminal commence à générer des erreurs concernant des stops invalides.

Je ne voudrais pas que mon EA soit exclu de la compétition à cause de ce genre de dépendance à l'égard des fonctions recommandées. Mais alors, comment puis-je connaître le niveau de stop autorisé correct pour un symbole donné en ce moment ?

P.S. Je détesterais beaucoup utiliser une sélection avec augmentation incrémentale en cas d'erreur, et le nombre d'erreurs dans ce cas augmenterait.

Pour les ordres en attente, l'erreur des stops invalides se produit également lorsque le prix ouvert est plus proche du prix actuel.

C'est-à-dire que vous devez vérifier non seulement les stops, mais aussi le prix d'ouverture.


 

Je pense qu'il y a une erreur dans la fonction HistoryDealsTotal(), si elle est lancée après HistorySelectByPosition() .

Il affiche de manière répétée le nombre de transactions égal à 0, et ce malgré une position ouverte (variante multidevises).

Voici le code :


void GetDealQuantity(string smbl)
{
long pos_id ;
int total, quantité=0 ;
ulong ticket=0 ; newticket ;
PositionSelect(smbl) ;
pos_id=PositionGetInteger(POSITION_IDENTIFIER) ;
bool select=HistorySelectByPosition(pos_id) ;
total=HistoryDealsTotal() ;
Print(__FUNCTION__," select=",select," total=",total) ;
for(int i=HistoryDealsTotal()-1;i>=0;i--)
{
newticket=HistoryOrderGetTicket(i) ;
if(ticket!=newticket) { quantity++ ; ticket=newticket ; }
}
if(smbl==symbol1) quantity1=quantity ;
if(smbl==symbol2) quantity2=quantity ;
Print(__FUNCTION__," quantity=",quantity) ;
}

Imprimez-le dans le journal :

2010.01.04 00:20:05 GetDealQuantity select=true total=0
2010.01.04 00:20:05 GetDealQuantity quantité=0
2010.01.04 00:20:05 EURJPY volume=0.1 quantité=0
2010.01.04 00:20:05 GetDealQuantity select=true total=1
2010.01.04 00:20:05 GetDealQuantity quantity=1
2010.01.04 00:20:05 AUDUSD volume=0.1 quantity=1

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 

Essayez d'insérer le code correctement dans vos messages. Essayez de refaire votre exemple comme ceci :

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void GetDealQuantity(string smbl)
  {
   long pos_id;
   int total,quantity=0;
   ulong ticket=0,newticket;
   if(PositionSelect(smbl))
     {
      pos_id=PositionGetInteger(POSITION_IDENTIFIER);
      bool select=HistorySelectByPosition(pos_id);
      if(select)
        {
         total=HistoryDealsTotal();
         Print(__FUNCTION__," select=",select," total=",total,"posID=",pos_id);
         for(int i=total-1;i>=0;i--)
           {
            newticket=HistoryOrderGetTicket(i);
            if(ticket!=newticket) { quantity++; ticket=newticket; }
           }
         if(smbl==symbol1) quantity1=quantity;
         if(smbl==symbol2) quantity2=quantity;
         Print(__FUNCTION__," quantity=",quantity);
        }
      else
        {
        Print("Не удалось выполнить HistorySelectByPosition() для pos_id=",pos_id);
        }

     }
   else
     {
      Print("Позиции не выбрана по символу ",smbl);
     }
  }
//+------------------------------------------------------------------+
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Existe-t-il un exemple de script quelque part qui écrit la dernière citation dans le presse-papiers ou quelque chose de similaire ?
 
jmp:
Existe-t-il un script d'exemple quelque part pour écrire la dernière citation dans le presse-papiers ou quelque chose de similaire ?

Le presse-papiers de Windows ?

Je dois regarder dans msdn pour voir dans quelle dll se trouvent les fonctions requises...

 
Je veux aller au fond des choses. Corrigez-moi si je me trompe. Lorsque j'ai étudié la documentation des indicateurs (fractals, je crois), je me suis souvenu très clairement et je me souviens encore qu'en cas de deux extremums adjacents (consécutifs ou séparés par quelques barres) du même niveau, l'extremum clé est le plus récent (le plus récent à droite). Cependant, l'indicateur Zig-zag ainsi que la propriété de magnétisation des objets graphiques (apparemment basée sur ce zig-zag) sont fixés au premier extremum de deux chandeliers proches d'un niveau, bien que je ne puisse pas encore donner une conclusion définitive car le comportement change de cas en cas, à mon avis. Quant au Zig-zag, il ne se construit que sur la toute première bougie. C'est bien, camarades ? Devrait-il en être ainsi ? Ou bien il existe plusieurs "normes" sans règles claires et chacun est libre de choisir si l'extremum est jugé par le chandelier le plus à gauche ou le plus à droite ?
 
Il y a des millions de zigzags. Utilisez celui qui vous semble le plus approprié.