Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 393

 
YarTrade: VolC - so habe ich die Datei genannt. Benötigen Sie nicht einen Dateinamen?

Dann geht es so:

   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);       // V5 - это что?
   FileClose(file_handle);
 
STARIJ:

Dann geht es so:


V5 ist eine Art Berechnungsergebnis. Ich habe V5 entfernt, ein Array an seine Stelle gesetzt und möchte, dass es in die Datei geschrieben wird. Die Datei wird erstellt, aber es wird nur ein Wert in die Datei geschrieben, nicht das Indikator-Datenfeld. Was fehlt noch? Ich habe einen Indikator, der im Diagramm korrekt dargestellt wird. Ich möchte die Werte in eine Datei schreiben, um sie später lesen zu können. Es wird aber nur eine Zahl geschrieben. Können Sie mir helfen zu verstehen, was los ist?

 
STARIJ:

Dann geht es so:


Ich habe es mit FileWriteArray getan, aber jetzt ist die Datei leer. es wird nicht ein Array dort schreiben :(. Wissen Sie, wie Sie helfen können? Aber sicher doch. Bitte sagen Sie mir, was los ist.

 
YarTrade: Ich habe es mit FileWriteArray gemacht, aber jetzt ist die Datei leer und das Array wird nicht dorthin geschrieben :(. Wissen Sie, wie Sie helfen können? Aber sicher doch. Bitte sagen Sie mir, was los ist.

Sie lautet wie folgt

   int V5=555;
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,V5);
   FileClose(file_handle);

Welche Art von Array? Fügen Sie den Code ein, hören Sie auf, gierig zu sein! Und hier ist ein Array, das offensichtlich nur ein Zeichenarray schreibt.

   string V5[5]={"Жили","были","дед","и","баба"};
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWriteArray(file_handle,V5);
   FileClose(file_handle);

Und das Array double in der Schleife schreibt

   double V5[5]={3.333,7.7777777,1.1,2.22,9.999999999};
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   for(int n=0; n<5; n++)FileWrite(file_handle,V5[n]);
   FileClose(file_handle);
 
STARIJ:

Sie lautet wie folgt

Welche Art von Array? Fügen Sie den Code ein, hören Sie auf, gierig zu sein! Und dieses Array schreibt offenbar nur ein Zeichen-Array

Und hier ist das Array double in der Schreibschleife


Wie gierig ist das denn? :)

#property copyright "ZyZy"
#property link      "https://www.mql5.com/ru/users/alexeyvik/news"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
// #property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#property indicator_separate_window
//--- input parameters
input int      Aver=15;
datetime Время=0;   // Время прошлого бара
double Bid1;
long V1; // объем для текущего тика вверх
long V2; // накопленный объем для всех тиков вверх текущего бара
long V3; // накопленный объем для всех тиков вниз для текущего бара
long V4; // объем текущего тика вниз
long V5;

//--- indicator buffers
double         Buf_1[];   // буфер для значений идикатора
double         Counter[];     // буфер для расчетов   
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorBuffers(2);
   SetIndexBuffer(0,Buf_1,INDICATOR_DATA); // создаю буфер для значений индикатора
   SetIndexBuffer(1,Counter,INDICATOR_CALCULATIONS);
   SetIndexEmptyValue(0,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
//int limit = prev_calculated > 0 ? rates_total-prev_calculated : rates_total-1;
//for(int i =  limit; i >= 0; i--)
// {
//  Counter[i] = close[i];
//  Indicator[i] = iMAOnArray(Counter, 0, 5, 0, 0, i);
// }
   if(prev_calculated==0)
     {
      ArrayInitialize(Counter,0.0);
      ArrayInitialize(Buf_1,0.0);
     }
   datetime Вр=Time[0];   // Время текущего бара
   if(Вр>Время)           // Если новый бар
     {
      Время=Вр;           // Запомнить
      Counter[0]=0;         // и обнулить последний элемент буфера
      V2 = 0;
      V4 = 0;
     }

   if(Bid>=Bid1)
     {
      if(Bid>Bid1)
        {
         V1 = iVolume(NULL, 0, 0);
         V2 = V1 + V2;
        }
      else
        {
         V1 = 0;
         V2 = V1 + V2;
        }
     }
   else
     {
      V3 = iVolume(NULL, 0, 0);
      V4 = V3 + V4;
     }

   V5=V2-V4;
   Bid1=Bid;
   Counter[0]=(double)V5;
   Buf_1[0]=iMAOnArray(Counter,0,Aver,0,MODE_SMA,0);
   Comment("Counter ",Counter[0],"\n"
           ,"Buf_1 ",Buf_1[0]);
   
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWriteArray(file_handle,Counter, 0, WHOLE_ARRAY);     
   FileClose(file_handle);

   return(rates_total);
  }
//+------------------------------------------------------------------+
 
YarTrade: Welche Gier ist im Spiel? :)

Warum sollten Sie etwas von einem Indikator drucken? Alles ist auf dem Bildschirm zu sehen - das ist ein Indikator. Wenn ich eine Tabelle benötige, führe ich ein Skript mit iCustom() aus.

 

Hallo, ich habe mit dem Code zu kämpfen, der den Preis der Bestellung im Terminal überprüfen soll. Ich beschloss, die Tickets zu überprüfen. Legen Sie die Tickets in ein Array und beginnen Sie mit der Überprüfung.

Alles ist gut, es kommt TRUE zurück. Ich denke, ich werde eine löschen, sie wird FALSE zurückgeben. Aber nein((( Ich habe alles gelöscht, und das Skript liefert immer noch 1 statt 0. Was mache ich falsch?


int start()
{
   while(!IsStopped())
   {
      int ordsel = 0;
      double ticord[3] = {8895969,8901032,8901033};
         for(ordsel=0; ordsel<=2;ordsel++) 
         {
            Sleep(5000); 
            Alert(OrderSelect(ticord[ordsel],SELECT_BY_TICKET,MODE_TRADES)); 
         }
      if(!IsExpertEnabled()) break;
   }
   return;
}
 

Hallo, liebe Experten! Bitte helfen Sie einem Anfänger. Ich versuche, einen Indikator in einen Expert Advisor einzubauen (ich habe mir das Hirn zermartert ...)! Gibt einen Fehler aus: 'limit' - Deklaration ohne Typ.

In dieser Zeile: limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period());


 
Dimitry-1983:

Hallo, ich habe mit dem Code zu kämpfen, der den Bestellpreis im Terminal überprüfen soll. Ich beschloss, die Tickets zu überprüfen. Legen Sie die Tickets in ein Array und beginnen Sie mit der Überprüfung.

Alles ist gut, es kommt TRUE zurück. Ich denke, ich werde eine löschen, sie wird FALSE zurückgeben. Aber nein((( Ich habe alles gelöscht, und das Skript liefert immer noch 1 statt 0. Was mache ich falsch?



Die Sache ist die, dass, wenn Sie (OrderSelect(...)) durch Ticket auswählen, Parameter 3 ignoriert wirdMODE_TRADES

Um also herauszufinden, aus welcher Liste (geschlossen, offen) Sie den Auftrag ausgewählt haben, müssen Sie seine Abschlusszeit überprüfen

0- offen und schwebend, >0 geschlossen

 
Ptichka12:

Hallo, liebe Experten! Bitte helfen Sie einem Anfänger. Ich versuche, einen Indikator in einen Expert Advisor einzubauen (ich habe mir das Hirn zermartert ...)! Gibt einen Fehler aus: 'limit' - Deklaration ohne Typ.

In dieser Zeile: limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period()));



Das ist eine sehr interessante Vorgehensweise.

Versuchen Sie, den Fehler wie folgt zu beheben

int limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));