[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 481

 
Quel est le problème avec OrderOpenPrice( ) ? ? ?? C'est une simple fonction normale ! !! L'ordre que j'ai présélectionné.
 
Désolé, qu'est-ce que c'est ? La fonction OrderSend fonctionne pour moi, tandis que la fonction OrderClose est en démonstration !
 
Dimka-novitsek:
Désolé, qu'est-ce que c'est ? La fonction OrderSend fonctionne pour moi, tandis que la fonction OrderClose est en démonstration !
total = OrdersTotal();
  for(i=total-1;i>=0;i--)
    {
    OrderSelect(i, SELECT_BY_POS);
    type   = OrderType(); result = false;
    switch(type)
          { 
          case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), l_SlipPage, Red ); break;
          case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), l_SlipPage, Red ); break; 
          }
    if(!result)
      {
      error =  GetLastError(); 
      errorcomment = "Неудалось закрыть ордер №" + OrderTicket() + " " + Symbol() + " " + OrderType() + " " + ErrorDescript(error); 
      Print(errorcomment);
      }  
    }
Voici un exemple de clôture de tous les ordres, notez que les bai et les sells sont clôturés par les bids et les ask .....
 
Oh, merci ! !!
 
7777877:

Merci beaucoup pour les réponses précédentes. Tout fonctionne et presque tout est clair... Maintenant, à propos de ce "presque".

1. Dans quelle ligne (voir le fichier joint pour l'indicateur) y a-t-il une indication que la ligne calculée sur les données du tableau doit être affichée dans la fenêtre du terminal du client ?

2. Pourquoi la fonction IndicatorBuffers est-elle nécessaire (ou plutôt, dans quelles situations devrait-elle être utilisée), si le nombre de tampons peut être déclaré sous forme de chaîne de caractères

Merci d'avance pour la réponse

#property indicator_buffers 3                                           //объявляем количество буферов

cette chaîne permet de déclarer le nombre de tampons d'indicateurs visibles dans le terminal.

   IndicatorBuffers(4);                                                 //устанавливаем общее количество всех индикаторов, участвующих в расчете всех индикаторных линий

Cette chaîne permet de déclarer le nombre total de tampons utilisés par l'indicateur pour les calculs (3 visibles et 1 caché).

Si vous n'avez pas besoin de tampons supplémentaires, vous n'aurez pas besoin de cette chaîne.

Le nombre de tampons ne peut pas dépasser 8 et doit être inférieur à la valeur spécifiée dans la propriété indicator_buffers. Voici un bon exemple.


 
Bonjour ! Dites-moi, est-il vraiment nécessaire de normaliser les prix d'achat et de vente ?
NormalizeDouble(Bid, Digits)
Parce que je l'ai comme ça
for(int i=1; i<=OrdersTotal(); i++) {  
            if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symbol( ) )continue;      // Не наш фин. инструм
         if (OrderMagicNumber( ) !=magicnumber)continue;
         if (OrderType()==0){ BUY++; ticket=OrderTicket( );Print( "BUY++   " , BUY  ,"  ticket ",ticket);}
         if (OrderType()==1) {SELL++;ticket=OrderTicket( );Print( "SELL++   " , SELL  ,"  ticket ",ticket);}    } }
         
  
  if (strela1<strela2&&SELL==0&&BUY!=0
  ){ udalenie ();
              
   OrderSend(Symbol( ), OP_BUY, lot, Ask, 3*Point, NormalizeDouble( Bid- (stoplos*Point),Digits),   NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);           
      Print( "strela1<strela2&&BUY==0&&SELL!=0 " , GetLastError()); }
            
  if (strela1>strela2){ udalenie ();
                
   OrderSend(Symbol( ), OP_SELL, lot, Bid, 3*Point, NormalizeDouble( Ask+ (stoplos*Point),Digits),   NormalizeDouble( Ask-( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
        Print( "strela1>strela2&&SELL==0&&BUY!=0 " , GetLastError()); }
      
    if (strela1<strela2&&BUY==0&&SELL==0){    
            
           OrderSend( Symbol( ), OP_BUY, lot, Ask, 3*Point, NormalizeDouble( Bid- (stoplos*Point),Digits),   NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);  
            Print( "strela1>strela2&&BUY==0&&SELL==0   " , GetLastError()  ,"  Ask ",Ask,"   stoplos= NormalizeDouble( Bid- (stoplos*Point),Digits)  ", NormalizeDouble( Bid- (stoplos*Point),Digits),
"    takeprofit= NormalizeDouble( Ask+( takeprofit*Point),Digits) ", NormalizeDouble( Ask+( takeprofit*Point),Digits)); }
           
   if (strela1>strela2&&BUY==0&&SELL==0){  

La faute est la suivante 2012.11.01 11:31:00 AUDUSD,M15 : strela1<strela2&&SELL==0&&BUY!=0 129

ERR_INVALID_PRICE 129Prix incorrect Cela ne s'est jamais produit depuis des années ! Cela ne s'est pas produit hier non plus

 
Dimka-novitsek:
Bonjour ! Dites-moi, est-ce que les prix d'achat et de vente doivent vraiment être normalisés ? Parce que j'ai ceci

La faute est la suivante 2012.11.01 11:31:00 AUDUSD,M15 : strela1<strela2&&SELL==0&&BUY!=0 129

ERR_INVALID_PRICE 129 Prix incorrect Ne s'est jamais produit auparavant !!! Je ne l'ai pas vu hier non plus.

Dans le testeur, vous n'avez pas besoin de le faire, mais en ligne, vous devez faire ce que le serveur DC vous impose si vous voulez travailler.
 
Dimka-novitsek:
Bonjour ! Les cours acheteur et vendeur doivent-ils vraiment être normalisés ?

La faute est la suivante 2012.11.01 11:31:00 AUDUSD,M15 : strela1<strela2&&SELL==0&&BUY!=0 129

ERR_INVALID_PRICE 129 Prix incorrect Cela ne s'est jamais produit depuis des années ! Ce n'était pas hier non plus


Pas toujours comme ça...

"" Prix acheteur ou vendeur incorrect, éventuellement prix non normalisé. Vous devez rafraîchir les données après un délai de 5 secondes ou plus en utilisant la fonction RefreshRates et réessayer. Si l'erreur persiste, il est nécessaire d'arrêter toutes les tentatives de négociation et de modifier la logique du programme.""" "DE LA DOCUMENTATION".

Que ce soit en démo ou en réel - cela ne fonctionnera pas. Vous essayez très souvent d'ouvrir deux ordres à la suite. Cela fonctionnera dans le testeur de stratégie. Vous auriez besoin d'un délai entre l'ouverture des commandes.

 

Merci ! !! Mettez la normalisation... Et bon sang, qu'est-ce qui se passe à l'adresse ! !!!!!. Ma tête est en feu. Ça semble plus facile que la géométrie du lycée.


 
Sepulca:


Pas toujours comme ça...

"" Prix acheteur ou vendeur incorrect, éventuellement prix non normalisé. Vous devez rafraîchir les données après un délai de 5 secondes ou plus en utilisant la fonction RefreshRates et réessayer. Si l'erreur persiste, il est nécessaire d'arrêter toutes les tentatives de négociation et de modifier la logique du programme.""" "DE LA DOCUMENTATION".

Que ce soit en démo ou en réel - cela ne fonctionnera pas. Vous essayez d'ouvrir deux ordres à la suite très souvent. Cela fonctionnera dans le testeur de stratégie. Mettre un délai entre les ordres ouverts.

Que signifie "pas toujours" ? Le code doit être UNIVERSEL, c'est-à-dire qu'il doit fonctionner avec N'IMPORTE QUELLE société de courtage (indépendamment du nombre de chiffres dans les cotations et de toutes sortes d'astuces du serveur de la société de courtage pour rejeter l'exécution en temps voulu des ordres de transaction) !
Raison: