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

 
Et il y a quelque chose qui ne va pas avec les si des opiateurs ! !!
 
Dimka-novitsek:

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.



Vous n'avez pas besoin de normalisation pour ASK et BID, vous avez besoin de Sleep(Shh1sec-5secs) ;
 

Je l'ai eu ! Voilà ce qu'il en est ! Laissez-moi être direct... Merci beaucoup pour votre participation, pour votre aide. Je ne le comprends pas moi-même. Faites attention au code ci-dessus. Il y a une condition

 if (strela1<strela2&&SELL==0&&BUY!=0
  ){ udalenie ();

Si... et si... et s'il n'y a pas d'ordres d'achat. Je veux dire, il y en a ! Ils ne sont pas nuls. Comme vous pouvez le voir sur la capture d'écran, le code vient juste de commencer à fonctionner et il n'y a aucun ordre d'achat ! Eh bien, non ! Et la condition est remplie, alors qu'elle ne devrait pas l'être !

Cela peut être vu à partir du message de l'imprimante dans la fenêtre Expert Advisors. D'ailleurs, l'ordre était parfaitement fixé lorsque la condition était remplie, c'est-à-dire qu'il était fixé !

Il s'avère que j'ai mal orthographié la condition ?

Bien sûr, la condition suivante du code a été déclenchée,

if (strela1<strela2&&BUY==0&&SELL==0){

qui est celui qui aurait dû être déclenché dans ces circonstances !

Qu'est-ce qui ne va pas ! !!?

Quel est le problème avec la condition logique ? !?

Comment se fait-il qu'ils soient tous les deux exécutés en même temps ? ??

 

Regarder, je ne comprends pas... C'est deux conditions réunies en même temps ! !! Peut-être que je suis un idiot... Mais je ne comprends pas. C'est ridicule. Je suppose que je ne sais pas comment écrire un opérateur if !

Mec, le code entier.

//+------------------------------------------------------------------+
//|                                                     советник.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#include <WinUser32.mqh>
  extern double  lot=1;                          
  extern int taymfreym=0 ;                           
  extern double  stoplos=200 ;                          
  extern double  takeprofit=500 ; 
  extern double  magicnumber=350 ;                          


void BreakPoint(){//if (!IsVisualMode()) return(0);
keybd_event(19,0,0,0);
Sleep(10);
keybd_event(19,0,2,0);}

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   Print (   "  НачалоНачал " ); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int i;
int start()
  {Print (   "  Начало " ); 
//----
for( int A=0; A<100 ; A++){
            
            double strela1 = iCustom(NULL, taymfreym, "индикатор", 2, A);
            double strela2 = iCustom(NULL, taymfreym, "индикатор", 3, A);
            
            int BUY=0,SELL=0;int ticket; 
            Print ( A,  "  strela1 " , strela1 , "    strela2  " , strela2 ); 
            
    
            
            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,NormalizeDouble(Ask, Digits), 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,NormalizeDouble( Bid, Digits), 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, NormalizeDouble(Ask, Digits), 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){  
   
            OrderSend( Symbol( ), OP_SELL, lot,NormalizeDouble( Bid, Digits), 3*Point, NormalizeDouble( Ask+ (stoplos*Point),Digits),   NormalizeDouble( Ask-( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
            Print( "strela1>strela2&& OP_SELL  " , GetLastError()   ,"  Bid ",Bid,"    stoplos=   NormalizeDouble( Ask- (stoplos*Point),Digits)  ",
 NormalizeDouble( Ask- (stoplos*Point),Digits),"    takeprofit= NormalizeDouble( Bid+( takeprofit*Point),Digits) ", NormalizeDouble(Ask+( takeprofit*Point),Digits));
            Print( "strela1>strela2&& OP_SELL   " , GetLastError()  ," (stoplos*Point) ",(stoplos*Point),"   Point  ", Point,"   Digits  ", Digits); }
               
    
   
   
     } Print (   "  Конец " ); BreakPoint();     
//----
   return(0);
  }
//+------------------------------------------------------------------+

void udalenie (){ int total = OrdersTotal();
  for(i=total-1;i>=0;i--)
    {
    OrderSelect(i, SELECT_BY_POS);
   int type   = OrderType();  bool result = false;
    switch(type)
          { 
          case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3*Point, CLR_NONE ); break;
          case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3*Point, CLR_NONE ); break; 
          }
    if(!result)
      {
      int error =  GetLastError(); 
      string errorcomment = "Неудалось закрыть ордер №" + OrderTicket() + " " + Symbol() + " " + OrderType() + " " + error; 
      Print(errorcomment);
      }  
    }       
   }

Explication, juste pour faciliter les choses... La préparation de commande standard, telle que je la conçois. Les ordres ouverts distincts sont lus dans les variables BUY++, SELL++.

Ensuite, ces variables sont impliquées dans des conditions logiques. Le reste ne semble pas avoir d'importance, mais qui sait ?

En fait, ce que j'ai vu dans les empreintes est clair.

 
aedu:
J'ai téléchargé un EA pour le travail en "un clic", compilé - pas d'erreurs, mais sauf "visage" dans le coin ne montre rien. Aide ! !!!!!!!!!!!!
McTrader_"+Symbol()+"_command.dat", je pense qu'il faut quelque chose comme un script avec des commandes pour l'EA. Elle ne la crée pas d'elle-même. Par conséquent, veuillez contacter le développeur pour obtenir des explications.
 
Dimka-novitsek:

Regarder, je ne comprends pas... C'est deux conditions réunies en même temps ! !! Peut-être que je suis un idiot... Mais je ne comprends pas. C'est ridicule. Je suppose que je ne sais pas comment écrire un opérateur if !

Mec, le code entier.

Explication, juste pour faciliter les choses... La préparation de commande standard, telle que je la conçois. Les ordres ouverts distincts sont lus dans les variables BUY++, SELL++.

Ensuite, ces variables sont impliquées dans des conditions logiques. Le reste ne semble pas avoir d'importance, mais qui sait ?

En fait, ce que j'ai vu dans les empreintes est clair.

pouvez-vous me donner un "indicateur" ?

bien que ne

 

C'est quoi le problème, pourquoi il s'énerve comme ça ?
 
Dimka-novitsek:

Regarder, je ne comprends pas... C'est deux conditions réunies en même temps ! !! Peut-être que je suis un idiot... Mais je ne comprends pas. C'est ridicule. Je suppose que je ne sais pas comment écrire un opérateur if !

Mec, le code entier.

Explication, juste pour faciliter les choses... La préparation de commande standard, telle que je la conçois. Les ordres ouverts distincts sont lus dans les variables BUY++, SELL++.

Ensuite, ces variables sont impliquées dans des conditions logiques. Le reste ne semble pas avoir d'importance, mais qui sait ?

En fait, ce que j'ai vu dans les empreintes est clair.

Beaucoup d'erreurs logiques et techniques. La logique d'ouverture des ordres n'est pas traçable (j'ai dû faire appel à mon imagination). Vous devez apprendre par vous-même, en choisissant votre propre code bâclé (jusqu'à ce qu'il se "redresse") OU en étudiant les codes d'autres personnes. J'ai fait votre code pour vous. - Cela vous aidera-t-il ?

P.S. Comme je l'ai déjà dit, il n'est pas nécessaire de normaliser les prix pour un testeur. Mais l'une des raisons possibles de l'erreur "Mauvais prix" lors de l'exécution d'un ordre de transaction peut être le slippage, que vous avez 3 * Point (converti en int) = 0.

Dossiers :
rcjipewc.mq4  6 kb
 
Merci !!!!!
 
san44es:

Les amis, un conseil !

Il y a une fonction personnalisée qui compte le prix bas de la 5ème barre de la période de fond, comment puis-je faire en sorte qu'elle compte le prix d'une période spécifique ?

iLow