[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 221

 

Hallo zusammen.

Ich habe ein Skript, das alle verfügbaren Aufträge abschließt.

Ich verstehe drei Zeilen darin nicht:

Wenn es nicht schwierig ist, übersetzen Sie es bitte in die russische Sprache, die für einen Anfänger verständlich ist.

Ich habe das Tutorium studiert, aber ich bin nicht auf solch lange logische Ausdrücke gestoßen.

Das Skript füge ich bei. Ich danke Ihnen.

Dateien:
 

Lassen Sie mich versuchen, den ersten Eintrag für Sie zu "übersetzen":

if(((OrderSymbol() == Symbol() && OnlyThisSymbol) || !OnlyThisSymbol))

"Wenn mindestens einer der Ausdrücke 1. oder 2. wahr ist, dann ... "
1.das Auftragsinstrument ist dasselbe wie das Chartinstrument und die externe Variable OnlyThisSymbol hat den Wert true
Die externe Variable OnlyThisSymbol hat den Wert false.

Nun zur Bedeutung dieses Eintrags:
Es gibt eine Aufzählung von Aufträgen, die durch Positionen mit verschiedenen Filtern geschlossen werden. Dieser Datensatz ist ein Filter nach Instrumenten. Wenn Sie den Wert der externen Variable onlyThisSymbol setzen, können Sie wählen, ob Sie nur Aufträge für ein Chart-Symbol oder Aufträge für ein beliebiges Symbol schließen möchten.

 
alsu:

Nicht ganz. Der Punkt ist, dass die Variable Experts bereits den Typ int hat, daher sollte die Typkonvertierung stattfinden, BEVOR ihr ein Wert zugewiesen wird, d.h. der Compiler

* einen Wert des Typs double (er hat in Ihrem Programm keinen Namen und wird einfach an eine dem Compiler bekannte Adresse im Hauptspeicher oder in einem Register der CPU geschrieben)

* alle notwendigen Änderungen am Wert der obigen Variablen vorgenommen und einen neuen Wert (vom Typ int!) in die Variable Experts geschrieben,

* diesen Wert (vom Typ int!) der Variablen New_Experts zugewiesen. Sie haben den gleichen Typ, so dass es nur darum geht, einen Wert von einem Speicherplatz in einen anderen zu kopieren.


P.S. Ich bin sehr froh, dass es Menschen gibt, die ihre Taten so detailliert nachvollziehen können. In der Tat, kein Scherz. Bleiben Sie in Kontakt.


Guten Tag... In Bezug auf Ihre letzte und vorletzte Nachricht bin ich ratlos. Insbesondere (Ihre Nachricht aus der vorherigen Antwort): "Wenn wir dann einen Wert aus der Box nehmen, ist er vom Typ double, aber wenn wir den Befehl geben, das Ergebnis in eine Variable vom Typ int zu schreiben, führt der Compiler automatisch alle Aktionen aus, die notwendig sind, um den Wert in eine neue Box zu schreiben." Und Ihre Nachricht aus der letzten Antwort: "Der Punkt ist, dass die Variable Experts bereits den Typ int hat... Haben wir sie nicht in dem Moment in den Typ double umgewandelt, als wir sie in ein GV-Variablenfeld "gesetzt" haben?

Vielen Dank im Voraus für die Antwort

 

Könnt ihr mich beraten, Freunde? Erlaubt MQL4 die Einstellung des Kontostandswerts programmatisch und nicht nur in den Anfangsbedingungen des Testers?

Ich werde erklären, warum ich es brauche, nur um die Frage zu verdeutlichen. Ich möchte, dass der Expert Advisor die Kontogröße als Variable während der Optimierung ändert.

 

Guten Tag.

Ich versuche, einen Indikator zu erstellen, um Sl und Tp auf dem Diagramm basierend auf (H-L)/2, es funktioniert nicht - es zeichnet nur durch den Abschluss der Bar, was ist das Problem?

Als Grundlage wurde ein Indikator ATR herangezogen.

//+------------------------------------------------------------------+
//|                                                          Tp/Sl.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 Green
#property indicator_color3 Red
#property indicator_color4 Green
//---- input parameters
extern int PeriodMM=25;
//---- buffers
double SlBuffer[];
double TpBuffer[];
double SlBuffer2[];
double TpBuffer2[];
double TempBuffer[];
double TempBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 1 additional buffer used for counting.
   IndicatorBuffers(4);
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,SlBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,TpBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,SlBuffer2);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,TpBuffer2);
   SetIndexBuffer(4,TempBuffer);
   SetIndexBuffer(5,TempBuffer2);
//----
   SetIndexDrawBegin(0,PeriodMM);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=PeriodMM) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=PeriodMM;i++)
      SlBuffer[Bars-i]=0.0;
      TpBuffer[Bars-i]=0.0;
      SlBuffer2[Bars-i]=0.0;
      TpBuffer2[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      double close = Close[i];
      TempBuffer[i]=(high-low)/2;
      TempBuffer2[i]=(high-low)/2*2.5;
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      SlBuffer[i]=Close[i]+iMAOnArray(TempBuffer,Bars,PeriodMM,0,MODE_SMA,i);
      TpBuffer[i]=Close[i]+iMAOnArray(TempBuffer2,Bars,PeriodMM,0,MODE_SMA,i);
      SlBuffer2[i]=Close[i]-iMAOnArray(TempBuffer,Bars,PeriodMM,0,MODE_SMA,i);
      TpBuffer2[i]=Close[i]-iMAOnArray(TempBuffer2,Bars,PeriodMM,0,MODE_SMA,i);
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Kameraden, ich verstehe nicht, warum die CSV-Dateien nicht erstellt werden, vorher hat alles funktioniert.
//+------------------------------------------------------------------+
//|                                                          TP1.mq4 |
//|                                                      S.I.Shlikov |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "S.I.Shlikov"
#property link      ""
int init()  
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,"Date","EURUSD","GBPUSD","NZDUSD","USDJPY","EURJPY","GBPJPY","USDCHF","EURCHF","GBPCHF");
   FileClose(h);        
  }
int start()
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   string Wtime=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES);
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,Wtime,DoubleToStr(iClose("EURUSD",Period(),0),MarketInfo("EURUSD",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPUSD",Period(),0),MarketInfo("GBPUSD",MODE_DIGITS)),
                     DoubleToStr(iClose("NZDUSD",Period(),0),MarketInfo("NZDUSD",MODE_DIGITS)),
                     
                     DoubleToStr(iClose("USDJPY",Period(),0),MarketInfo("USDJPY",MODE_DIGITS)),
                     DoubleToStr(iClose("EURJPY",Period(),0),MarketInfo("EURJPY",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPJPY",Period(),0),MarketInfo("GBPJPY",MODE_DIGITS)),
                     
                     DoubleToStr(iClose("USDCHF",Period(),0),MarketInfo("USDCHF",MODE_DIGITS)),
                     DoubleToStr(iClose("EURCHF",Period(),0),MarketInfo("EURCHF",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPCHF",Period(),0),MarketInfo("GBPCHF",MODE_DIGITS))
                     );
   FileClose(h);   
   return(0);
  }
 
orb:
Kameraden, ich verstehe nicht, warum die CSV-Dateien nicht erstellt werden, vorher hat alles funktioniert.

Wie lautet die Fehlernummer?
 
sergeev:

Wie lautet die Fehlernummer?
keine Fehlernummer...nur keine Dateien erstellt, Suche nach ALPARI\tester\files\
 
orb:
keine Fehlernummer... es werden einfach keine Dateien erstellt, es wird nach ALPARI\tester\files\ gesucht

Nun, schauen Sie in das andere.
 
sergeev:

Nun, schauen Sie woanders hin.
Das habe ich bereits getan.
Grund der Beschwerde: