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

 
Je n'en peux plus de cette émulation Pause-Break, ça ne marche pas !
//+------------------------------------------------------------------+
//|                                                     советник.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=20 ;                          
  extern double  takeprofit=50 ; 
  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 start()
  {
//----

            
            double strela1 = iCustom(NULL, taymfreym, "индикатор", 2, 1);
            double strela2 = iCustom(NULL, taymfreym, "индикатор", 3, 1);
            
            int BUY=0,SELL=0;int ticket; 
            Print (  " strela1 " , strela1 , "   strela2  " , strela2 );BreakPoint();
            
    
            
            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( );}
         if (OrderType()==1) {SELL++;ticket=OrderTicket( );}    } }
         
   if (strela1>strela2&&BUY==0&&SELL==0){    
            
           OrderSend( NULL, OP_BUY, lot, Ask, 3, NormalizeDouble( Bid- (stoplos*Point),Digits),  
 NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);  
            Print( "strela1>strela2&&BUY==0&&SELL==0   " , GetLastError());BreakPoint(); }
           
   if (strela1<strela2&&BUY==0&&SELL==0){  
   
            OrderSend( NULL, OP_SELL, lot, Bid, 3, NormalizeDouble( Ask- (stoplos*Point),Digits),  
 NormalizeDouble( Bid+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
            Print( "strela1<strela2&&BUY==0&&SELL==   " , GetLastError());BreakPoint(); }
 
AA ! 2012.10.30 14:07:08 2012.06.05 05:30 EA EURUSD,M30 : les appels de dll ne sont pas autorisés ; 'user32.dll'-'keybd_event' Je pense avoir trouvé la solution. Comment déverrouiller la dll ?
 
Non, ça a l'air bien ! !!
 
Les tampons sont toujours à 0 dans le test ! !! Au diable tout ça, je vais le tester sur le terrain - je vais écrire un cycle en avant de 200 barres en arrière, et je vais chercher des points d'entrée !
 
Excusez-moi, cela fait une demi-heure que je cherche à savoir où mes parenthèses sont déséquilibrées, ou alors qu'est-ce que cela signifie ? J'ai mis les empreintes et voilà... Ça ne compile pas, mais ça jure 'fin de programme' - parenthèse gauche non équilibrée C:³Alpari³experts³customer.mq4 (94, 1)
 
Voilà, je suis désolé... J'ai revérifié les parenthèses huit fois - eh bien, elles sont équilibrées ! Équilibré ! Ou le sont-ils ?
//+------------------------------------------------------------------+
//|                                                     советник.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=20 ;                          
  extern double  takeprofit=50 ; 
  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 (   "  init " ); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
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( );}
         if (OrderType()==1) {SELL++;ticket=OrderTicket( );}    } }
         
   if (strela1>strela2&&BUY==0&&SELL==0)    {    
            
           OrderSend( Symbol( ), OP_BUY, lot, Ask, 3, 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,
     "   NormalizeDouble( Bid- (stoplos*Point),Digits)  ", NormalizeDouble( Bid- (stoplos*Point),Digits),"  
         NormalizeDouble( Ask+( takeprofit*Point),Digits) ", NormalizeDouble( Ask+( takeprofit*Point),Digits)); }
           
   if (strela1<strela2&&BUY==0&&SELL==0){  
   
            OrderSend( Symbol( ), OP_SELL, lot, Bid, 3, NormalizeDouble( Ask- (stoplos*Point),Digits),  
           NormalizeDouble( Bid+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
            Print( "strela1<strela2&&BUY==0&&SELL==   " , GetLastError()  ,"  Bid ",Bid,
   "   NormalizeDouble( Ask- (stoplos*Point),Digits)  ", NormalizeDouble( Ask- (stoplos*Point),Digits),
  "    NormalizeDouble( Bid+( takeprofit*Point),Digits) ", NormalizeDouble( Bid+( takeprofit*Point),Digits); }
            
 
   if (strela1>strela2&&BUY==0&&SELL!=0){ 

         OrderSelect(ticket, SELECT_BY_TICKET);
       OrderClose(  ticket , OrderLots( ) , OrderOpenPrice( ) , 3, CLR_NONE);                 
       OrderSend(Symbol( ), OP_BUY, lot, Ask, 3, NormalizeDouble( Bid- (stoplos*Point),Digits), 
       NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);           
       Print( "strela1>strela2&&BUY==0&&SELL!=0 " , GetLastError());BreakPoint(); }
            

  if (strela1<strela2&&SELL==0&&BUY!=0){ 
   OrderSelect(ticket, SELECT_BY_TICKET);
   OrderClose(  ticket , OrderLots( ) , OrderOpenPrice( ) , 3, CLR_NONE);                 
   OrderSend(Symbol( ), OP_SELL, lot, Bid, 3, NormalizeDouble( Ask- (stoplos*Point),Digits),  
 NormalizeDouble( Bid+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
        Print( "strela1<strela2&&SELL==0&&BUY!=0 " , GetLastError());BreakPoint(); }
      
      
            
     } Print (   "  Конец " );      
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Dimka-novitsek:
Je suis désolé, ça fait une demi-heure que je cherche des parenthèses qui sont déséquilibrées. Je mets juste les empreintes et voilà... Ça ne compile pas, mais ça jure 'fin de programme' - parenthèse gauche non équilibrée C:³Alpari³experts³customer.mq4 (94, 1)

à première vue, il manque la toute dernière accolade (pour main())

Votre code se termine par un embranchement

  if (strela1<strela2&&BUY==0&&SELL==0){  
   
            OrderSend( NULL, OP_SELL, lot, Bid, 3, NormalizeDouble( Ask- (stoplos*Point),Digits),  
 NormalizeDouble( Bid+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
            Print( "strela1<strela2&&BUY==0&&SELL==   " , GetLastError());BreakPoint(); }

ps ceci est pour le code ci-dessus

 
Merci ! !! Je ferais mieux de jeter un coup d'oeil au code... J'ai aussi compté les parenthèses une par une sur une feuille de papier - équilibré ! !!
 
Où est la ramification ? Ou je suis stupide... Je veux dire, nous venons d'ouvrir une commande sous les conditions !
 
drknn:

...

Vous avez une façon compliquée d'atteindre la vérité. Je suis sûr que si vous formulez le problème lui-même au peuple, il vous dira une façon plus simple de le résoudre.

P.S.

De toutes les solutions à un problème, la plus simple est toujours la plus difficile à trouver, car pour la trouver, il faut recycler et passer au crible un tas d'ordures. Alors, n'hésitez pas à formuler - solution simple ne veut pas dire solution rapide. Peut-être que les gens ici vous sauveront plus d'un jour de votre vie.


Ok. Je vais essayer de vous donner l'essentiel du problème, peut-être quelqu'un vous donnera-t-il un indice ou m'aidera-t-il à le résoudre plus facilement.

Nous travaillons sur le graphique en 1 minute. Nous prenons la barre d'une minute (high+low/2 - valeur moyenne de la barre) sur le graphique du 29/10/12 à 00:00 - ce sera le point de départ.

Ensuite, nous vérifions la déviation de ce prix vers le haut de 10 pips (chaque déviation correcte est +1).

Lorsque nous atteignons l'écart de 10 points par rapport au point de départ - le compteur +1 ; et nous commençons à vérifier les autres écarts, mais à partir du point où nous avons atteint l'écart de 10 points, et nous attendons la prochaine hausse de 10 points du prix.

Par exemple, on obtient :

Si (point de départ) + 10 pips <= prix (nous utilisons tous les prix ultérieurs des barres à partir du point de départ.) Nous obtenons un compteur = compteur +1 ; et nous commençons le point de départ déjà à partir de ce point -(point de départ + 10 pips).

Si (point de départ + 10 pips) +10 pips <= prix (tous les prix ultérieurs des barres à partir du point de référence sont utilisés) nous obtenons counter=Counter+1 ; et nous partons de ce point-(point de départ + 10 pips) +10 pips.

Si(point de départ + 10 pips+10 pips) + 10 pips <= prix (nous utilisons tous les prix ultérieurs des barres à partir du point de référence.) nous obtenons counter=Counter+1 ; et nous partons de ce point -(point de départ + 10 pips+ 10pips) + 10 pips.

et ainsi de suite...

Jusqu'à ce que nous atteignions un compteur de 10(compteur == 10).

Et à chaque nouvellebarre d'une minute formée(haut+bas/2 - valeur moyenne de la barre), nous vérifions cette condition et attendons que le compteur atteigne10 (compteur == 10). Supposons que deux jours se soient écoulés, à chaque nouvelle barre formée nous vérifions et décalons si les conditions sont correctes ......

Et lorsque nous atteignons le compteur =10, nous émettons le message "Compteur == 10". Nous déplaçons le point de départ de 2 jours en avant du point initial défini par l'utilisateur, c'est-à-dire du29/10/12 à 00:00 au 31/10/12 à 00:00 et nous répétons le cycle.

Répétez le cycle et avancez ainsi dans le programme.

C'est-à-dire que nous devrions prendre les barres nouvellement formées et dessiner(high+low/2 - valeur moyenne de la barre). Vérifiez ensuite les conditions et, si elles sont correctes, procédez au changement de vitesse comme décrit ci-dessus.

J'ai essayé de l'implémenter par le biais d'un tableau, mais c'est très confus et cela donne des valeurs erronées ! Aidez-moi à mettre en œuvre cet algorithme !

Raison: