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

 
agat8430:


Dann sagen Sie mir, wie ich den Code bearbeiten kann, damit er nicht gehackt aussieht, wenn Sie verstehen, was ich meine. Ich bin zum ersten Mal in diesem Forum und habe eine schöne Antwort bekommen.

"Geniale Menschen haben eine geniale Antwort."


Machen Sie die Namen der Variablen "lesbar".
 
hoz:


Nein, nicht ohne Zwischenstopp. Ich habe gerade ein Stück davon gepostet. Hier ist meine Breakeven-Funktion:

Die Linie zeigt deutlich, dass es keine Änderung gibt, wenn die berechnete Haltestelle mit der bereits vorhandenen übereinstimmt! Richtig? Der Scheck war also ursprünglich da? Aber der Fehler 1 tauchte immer wieder auf, bis ich vor der Änderungsfunktion eine andere Bedingung in den Start eingegeben hatte:

Das ist der Grund.... Das ist es, was ich verstehen möchte. Ich denke, ich habe alles gründlich beschrieben.

Diese Funktion dient für alle Modifikationen, wie z.B. das Setzen von SL und TP, das Verschieben von Positionen und die Auftragsverfolgung mit Versuchen und Fehlerkontrollen.

Und der Start muss nur diePositionswahl, Bedingungen und Warnungen vorschreiben. Hier ist die Funktion:

void ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime e,color arrow_color)
{
  int ModifyCnt = 0, err;
  while(ModifyCnt < 3)
  {
    if(OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),
    NormalizeDouble(takeprofit,Digits),0,arrow_color))
    ModifyCnt = 3;
    else err = GetLastError();
    if(err > 0)
    { 
      Print(ModifyCnt," #",ticket," Error modifing order: (", err , ") " , ErrorDescription(err));
      Sleep(5000); RefreshRates(); ModifyCnt++;
} } }
Es ist eine kleine, aber eine große Sache!
 
borilunad:

In erster Linie für Neueinsteiger:

Forum-Navigator und Antworten auf häufig gestellte Fragen. Eine sehr empfehlenswerte Lektüre!( 1 2 3 4 5 6 ) 51 18.02.2011 FAQ


Ich danke Ihnen! Ich werde es auf jeden Fall lesen.

Die Welt ist nicht ohne gute Menschen.

 
hoz:

Geben Sie den Variablen einen "lesbaren" Namen.


Ich möchte nicht alle offenen Aufträge ändern, sondern nur den ersten und den letzten T/P-Auftrag. Helfen Sie mir. Hier ist der Code

 /* Так и до бана не далеко */
 

Hallo zusammen, ich nehme Indikatorwerte in einem separaten Fenster von einem bereits gebildeten Balken (z.B. Balken 1), den ich einmal auf Balken 0 auf seinem ersten Tick zähle. Alles funktioniert schnell und korrekt.Aber wenn ich den Computer ausschalte und nach einiger Zeit wieder einschalte, funktionieren die Indikatoren weiterhin richtig, aber ihre Werte zu der Zeit, als der Computer ausgeschaltet war, gibt es nur einen leeren Platz. d.h. es gibt Indikatorwerte vor und nach dem Einschalten des Computers. Aber schalten Sie einfach hin und her von TF zu TF - alle "verschwundenen" Werte erscheinen. DieIndikatoren sind Standard - CCI, AO, etc. Die Codes wurden aus den Foren genommen, ich bin sie anhängen, bitte erklären, wo ich falsch bin und was ich nicht verstehe.



      Код №1
        ------


int start()
  {  
              
//--------------------------------------------------------------------
   Fun_New_Bar();                               // Обращение к ф-ии
   if (New_Bar==false)                          // Если бар не новый..
      return;                                   // ..то уходим
//--------------------------------------------------------------------    
        
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------
   return(0);
 
  }
   
//+------------------------------------------------------------------+  
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }
//--------------------------------------------------------------------  



        Код №2
        ------


int start()
{  
     if (NewBar() == true)
  {  
         
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------           
  }    

   return(0); 
}
   
//+------------------------------------------------------------------+    
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}


      
          Код №3
          ------


//--- buffers
double ExtMapBuffer1[];
//--- for one bar
datetime Last,New;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    New=Time[0]; 
      
     if(Last!=New)     
   {
  
  int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------             
   
    Last=New;
   }     
//----
   return(0);
  }
//+------------------------------------------------------------------+




       Код №4
       ------


int start()
  {
      if(last>=Time[0]) return;
  
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
        
//-------------------------------              
       
      last=Time[0];      
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

 
borilunad:

Ich habe eine Funktion für alle Modifikationen wie das Setzen von SL und TP, das Übertragen auf B/S, das Durchsuchen von Positionen und Aufträgen mit Versuchen und Fehlerprüfungen.

Ich muss nur die Positionswahl, die Bedingungen und die Warnungen am Anfang vorschreiben. Hier ist die Funktion:

Klein aber fein!


Wow :) Ich danke Ihnen. Das muss ich mir mal ansehen!
 
agat8430:


Ich möchte nicht alle offenen Aufträge ändern, sondern nur den Start- und den letzten Auftrag auf T/P. Ich möchte einen EA für mich erstellen.

Eigentlich sollten wir alle abgeschlossenen Aufträge "aussortieren", den Magier und das Symbol natürlich nicht mitgerechnet. Wählen Sie dann den ersten und den letzten zu ändernden Auftrag aus.

Die OrderSelect (g_pos_300, SELECT_BY_POS, MODE_TRADES); - dies ist die letzte Order.

Und die OrderSelect(0, SELECT_BY_POS, MODE_TRADES); - dies wird die erste Bestellung sein.

Dies ist ein Zweig mit Fragen zur Sprache, und ich habe Ihre Frage beantwortet. Bots sind hier nicht an der Neugestaltung beteiligt. Aber Sie können alles oben finden, um es in den Expert Advisor mit dem geringsten Verständnis der Sprache einzuschließen. Ich hoffe, das hat geholfen...

 
agat8430:


Ich möchte, dass nicht alle offenen Aufträge geändert werden, sondern nur der erste und der letzte T/P-Auftrag. Ich möchte, dass nicht alle offenen Aufträge geändert werden, sondern nur der letzte T/P-Auftrag.

Nutzen Sie Kims "Nützliche Eigenschaften" für fast jede Gelegenheit, um die richtigen Gegenstände zu erwischen!

https://www.mql5.com/ru/forum/131859

 
hoz:

Im Allgemeinen sollten geschlossene Aufträge "aussortiert" werden, wobei der Zauberer und das Symbol natürlich nicht mitgezählt werden. Wählen Sie dann den ersten und den letzten zu ändernden Auftrag aus.

Die OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES); - dies ist die letzte Order.

Und die OrderSelect(0, SELECT_BY_POS, MODE_TRADES); - dies wird die erste Bestellung sein.

Dies ist ein Zweig mit Fragen zur Sprache, und ich habe Ihre Frage beantwortet. Bots sind hier nicht an der Neugestaltung beteiligt. Aber Sie können alles finden, um es in den Expert Advisor zu integrieren, wenn Sie die Sprache auch nur ein bisschen verstehen. Ich hoffe, das hat geholfen...

Tut mir leid, das wird nicht funktionieren! Nicht der erste und nicht der letzte!
 
MK07:

Ich nehme Indikatorwerte in einem separaten Fenster von einem bereits gebildeten Balken (z.B. von Balken #1), den ich einmal auf Balken #0 auf seinem ersten Tick zähle. alles funktioniert schnell und korrekt. aber wenn ich den Computer ausschalte und nach einiger Zeit wieder einschalte, arbeiten die Indikatoren weiterhin korrekt, aber ihre Werte zu der Zeit, als der Computer ausgeschaltet war, existieren nicht.Die Codes sind Standard-Indikatoren - CCI, AO, etc. Ich nahm sie von Foren, sie sind beigefügt.

Code 1

        ------


int start()
  {  
              
//--------------------------------------------------------------------
   Fun_New_Bar();                               // Обращение к ф-ии
   if (New_Bar==false)                          // Если бар не новый..
      return;                                   // ..то уходим
//--------------------------------------------------------------------    
        
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------
   return(0);

  }
   
//+------------------------------------------------------------------+  
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }

//--------------------------------------------------------------------  

        Код №2
        ------


int start()
{  
     if (NewBar() == true)
  {  
         
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------           
  }    

   return(0); 
}
   
//+------------------------------------------------------------------+    
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }

}

         Код №3
          ------


//--- buffers
double ExtMapBuffer1[];
//--- for one bar
datetime Last,New;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    New=Time[0]; 
      
     if(Last!=New)     
   {
  
  int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
//-------------------------------      

   { 

       Код №4
       ------


int start()
  {
      if(last>=Time[0]) return;
  
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
        
//-------------------------------              
       
      last=Time[0];      
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

Verwenden Sie dieSRC-Schaltfläche am oberen Rand, um den Code einzufügen! Niemand wird auf diese Weise herumstochern. Ich habe sie für Sie eingefügt. Sie können dies auch in Ihrem Beitrag tun.
Grund der Beschwerde: