[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 476

 
Ich komme mit dieser Pause-Break-Emulation nicht zurecht, sie funktioniert nicht!
//+------------------------------------------------------------------+
//|                                                     советник.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: dll-Aufrufe sind nicht erlaubt; 'user32.dll'-'keybd_event' Ich glaube, ich habe es herausgefunden. Wie kann ich die DLL entsperren?
 
Nein, es scheint in Ordnung zu sein!!!
 
Puffer sind im Test immer 0 !!! Zur Hölle damit, ich werde es in der Realität testen - ich werde einen Vorwärtszyklus 200 Bars rückwärts schreiben, und nach Einstiegspunkten suchen!
 
Entschuldigen Sie, ich habe eine halbe Stunde lang gesucht, um herauszufinden, wo meine Klammern aus dem Gleichgewicht geraten sind, oder was bedeutet das? Ich habe die Fingerabdrücke eingegeben und los geht's... Es lässt sich nicht kompilieren, aber es flucht '\Ende_des_Programms' - unausgewogene linke Klammer C:\Alpari\experts\customer.mq4 (94, 1)
 
Hier, es tut mir leid... Ich habe die Klammern achtmal nachgeprüft - sie sind jetzt ausgeglichen! Ausgewogen! Oder doch nicht?
//+------------------------------------------------------------------+
//|                                                     советник.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:
Es tut mir leid, ich habe eine halbe Stunde lang nach Klammern gesucht, die nicht im Gleichgewicht sind. Ich gebe einfach die Fingerabdrücke ein und schon geht's los... Es lässt sich nicht kompilieren, aber es flucht '\Ende_des_Programms' - unausgewogene linke Klammer C:\Alpari\experts\customer.mq4 (94, 1)

auf den ersten Blick fehlt die allerletzte geschweifte Klammer (für main())

Ihr Code endet mit einer Verzweigung

  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 dies ist für den obigen Code

 
Ich danke Ihnen!!! Ich schaue mir den Code besser mal an... Ich habe auch die Klammern einzeln auf einem Blatt Papier gezählt - ausgewogen!!!
 
Wo ist die Verzweigung? Oder bin ich dumm... Ich meine, wir eröffnen gerade einen Auftrag unter den Bedingungen!
 
drknn:

...

Sie haben eine komplizierte Art, der Wahrheit auf die Spur zu kommen. Ich bin sicher, wenn Sie den Menschen das Problem selbst formulieren, werden sie Ihnen einen einfacheren Weg zur Lösung nennen.

P.S.

Von allen Lösungen für ein Problem ist die einfachste immer die am schwersten zu findende, denn um sie zu finden, muss man einen Haufen Schrott recyceln und sichten. Sie können also frei formulieren - eine einfache Lösung ist nicht gleichbedeutend mit einer schnellen Lösung. Vielleicht retten Ihnen die Menschen hier mehr als nur einen Tag Ihres Lebens.


Gut. Ich werde versuchen, Ihnen den Kern des Problems zu schildern, vielleicht gibt Ihnen jemand einen Tipp oder hilft mir, das Problem leichter zu lösen.

Wir arbeiten mit dem 1-Minuten-Chart. Wir nehmen den Ein-Minuten-Balken (Hoch+Tief/2 - Durchschnittswert des Balkens) auf dem Chart vom 29.10.12 um 00:00 Uhr - dies wird der Ausgangspunkt sein.

Dann prüfen wir die Abweichung von diesem Preis nach oben um 10 Pips (jede korrekte Abweichung ist +1).

Wenn wir die 10-Punkte-Abweichung vom Ausgangspunkt erreicht haben - der +1-Zähler; und wir beginnen, weitere Abweichungen zu überprüfen, aber von dem Punkt aus, an dem wir die 10-Punkte-Abweichung erreicht haben, und warten auf den nächsten 10-Punkte-Kursanstieg.

Wir erhalten zum Beispiel:

Wenn (Startpunkt) + 10 Pips <= Preis (wir verwenden alle nachfolgenden Preise der Balken vom Startpunkt.) Wir erhalten einen Zähler = Zähler +1; und wir beginnen den Startpunkt bereits von diesem Punkt -(Startpunkt + 10 Pips).

Wenn (Startpunkt + 10 Pips) +10 Pips <= Preis (alle nachfolgenden Preise der Balken ab dem Referenzpunkt werden verwendet), erhalten wir counter=Counter+1; und wir beginnen von diesem Punkt-(Startpunkt + 10 Pips) +10 Pips.

Wenn(Startpunkt + 10 Pips+10 Pips) + 10 Pips <= Preis (wir verwenden alle nachfolgenden Preise der Bars vom Referenzpunkt aus.) erhalten wir counter=Counter+1; und wir beginnen von diesem Punkt -(Startpunkt + 10 Pips+ 10Pips) + 10 Pips.

und so weiter...

Bis wir einen Zähler von 10 erreichen(Zähler == 10).

Und bei jedem neu gebildeten1-Minuten-Balken (Hoch+Tief/2 - Durchschnittswert des Balkens) prüfen wir auf diese Bedingung und warten, bis der Zähler10 erreicht(Zähler == 10). Nehmen wir an, es vergingen zwei Tage, bei jedem neuen Balken, den wir bildeten, überprüften und verschoben wir, ob die Bedingungen korrekt waren .....

Und wenn wir den Zähler =10 erreicht haben, geben wir die Meldung "Zähler == 10" aus. Wir verschieben den Startpunkt um 2 Tage nach vorne, d.h. vom29.10.12 um 00:00 Uhr auf den 31.10.12 um 00:00 Uhr und wiederholen den Zyklus.

Wiederholen Sie den Zyklus und gehen Sie so durch den Zeitplan.

D.h. wir sollten die neu gebildeten Balken nehmen und(Hoch+Tief/2 - Durchschnittswert des Balkens) zeichnen. Prüfen Sie, ob die Bedingungen erfüllt sind, und schalten Sie sie, wie oben beschrieben, um.

Ich habe versucht, es durch ein Array zu implementieren, es ist sehr verwirrend und gibt falsche Werte! Helfen Sie mir, wie ich diesen Algorithmus implementieren kann!