Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1033

 
abeiks:

Hallo.

Die Uhrzeit wird im Moment nicht korrekt zurückgegeben. Wenn die Uhrzeit beispielsweise 12.04 Uhr ist, wird 12.4 Uhr zurückgegeben. Können Sie mir sagen, wie ich diese Funktion richtig einstellen kann?

Nun, Hour() und Minute() geben die aktuelle Stunde und die aktuelle Minute der letzten Serverzeit zum Zeitpunkt des Programmstarts zurück. Und die zurückgegebenen Werte sind vom Typ int. Und das sind nur ganze Zahlen. Deshalb müssen Sie sie formatieren. Zum Beispiel so:

string label=IntegerToString(Hour(),2,'0')+":"+IntegerToString(Minute(),2,'0');
 
artmedia70:

Hour() und Minute() geben die aktuelle Stunde und die aktuelle Minute der letzten Serverzeit beim Programmstart zurück. Und die zurückgegebenen Werte sind vom Typ int. Und das sind nur ganze Zahlen. Sie müssen sie also noch formatieren. Zum Beispiel so:


Ich danke Ihnen!
 
abeiks:
Ich danke Ihnen!

Bitte sehr. Wenn es kein Geheimnis ist, warum brauchen Sie dann einen Zeitstempel, der das letzte Mal anzeigt, als Ihr Programm gestartet wurde - die Zeit darin wird sich nicht ändern.

Nur aus reiner Neugierde...

 

Guten Tag!

Bitte beraten Sie mich, wie man die Funktion der Begrenzung von 1 Geschäft auf 1 Bar korrekt implementiert (d.h. wenn ein Geschäft bereits auf einer Kerze geöffnet oder geschlossen wurde, wird ein neues Geschäft nicht auf dieser Kerze geöffnet)

Ich habe viele Varianten gefunden, kann aber nicht herausfinden, wie man den Code einer Eule korrekt schreibt (d. h. welcher Teil in globale Variablen und welcher Teil in die Bedingung für die Geschäftseröffnung geschrieben werden sollte)

Hier ist zum Beispiel eine solche Variante:

int TekBar = -1; // Aktueller Takt.

if (TekBar == Bars)return(0); // Nur ein Handel pro Takt.
TekBar = Bars; // Es gibt nur einen Handel auf einem Balken.

{...}

Welcher Teil dieses Skripts sollte in welchen Bereich des Eulencodes eingefügt werden?

 
DuKle:

Guten Tag!

Bitte beraten Sie mich, wie man die Funktion der Begrenzung von 1 Geschäft auf 1 Bar korrekt implementiert (d.h. wenn ein Geschäft bereits auf einer Kerze geöffnet oder geschlossen wurde, wird ein neues Geschäft nicht auf dieser Kerze geöffnet)

Ich habe viele Varianten gefunden, kann aber nicht herausfinden, wie man den Code einer Eule korrekt schreibt (d. h. welcher Teil in globale Variablen und welcher Teil in die Bedingung für die Geschäftseröffnung geschrieben werden sollte)

Hier ist zum Beispiel eine solche Variante:

int TekBar = -1; // Aktueller Balken.

if (TekBar == Bars)return(0); // Nur ein Handel pro Bar.
TekBar = Bars; // Es gibt nur einen Handel auf einem Balken.

{...}

Welcher Teil dieses Skripts sollte in welchen Bereich des Eulencodes eingefügt werden?

Sie müssen herausfinden, ob der letzte Handel bei Taktnummer 0 eröffnet oder geschlossen wurde.

Dazu müssen Sie den letzten offenen Handel und den letzten geschlossenen Handel finden.

Zeigen Sie den Balken des letzten offenen Handels und den Balken des letzten geschlossenen Handels an.

Wenn einer dieser Werte (Balken des letzten offenen Handels oder Balken des letzten geschlossenen Handels) Null ist, können Sie keine neuen Positionen eröffnen.

Und ja, es ist kein Skript, es ist nur ein Stück Code. Und in die Eule brauchen Sie nichts hineinzuschreiben: Die Eule ist ein nachtaktiver Greifvogel, und lassen Sie den Vogel leben.

 

Hallo! Bitte helfen Sie!

Ich habe eine Idee, aber ich weiß nicht, wie ich sie umsetzen soll. Und was am wichtigsten ist: Ich weiß nicht, ob es für dieses Problem eine Lösung gibt.

Im Wesentlichen geht es um Folgendes: Wir haben einen Indikator, der eine Linie auf dem Diagramm für eine bestimmte Anzahl von Balken zeichnet.

Ist es möglich, die Anzahl der Takte, auf denen die Linie gezeichnet wird, durch Ziehen des linken "Endes" der Linie mit der Maus zu ändern? Nach dem Ziehen sollte sich der Indikator die neue Anzahl der für die Berechnung verwendeten Balken merken. Hier ist ein Beispiel für einen Indikator, den ich verbessern möchte

//+------------------------------------------------------------------+
//|                                                      Canal__.mq4 |
//+------------------------------------------------------------------+
//----------------------------------
#property indicator_chart_window
//----------------------------------
extern int Hours=20;
extern color col=Red;
//------------------
double lr,lr0,lrp;
double sx,sy,sxy,sx2,aa,bb;
int p,fs;
ulong sName;
int f,f0,f1;
double dh,dl,dh_1,dl_1,dh_2,dl_2;
int ai_1,ai_2,bi_1,bi_2;
double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;
double price_p1,price_p0,price_p2,price_01,price_00,price_02;
int p1,p0,p2,fp;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   p=Hours*60/Period();
   if(fs==0)
     {
      sName=TimeCurrent(); 
      fs=1;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete("1"+(string)sName);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,n;
//----
   if(f==1)
     {
      p1=iBarShift(Symbol(),Period(),(datetime)ObjectGet("1"+(string)sName,OBJPROP_TIME1));
      if(fp==0 && p!=p1) {p=p1; fp=1;}
     }
//----
   sx=0; sy=0; sxy=0; sx2=0;
   for(n=0; n<=p; n++)
     {
      sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+=MathPow(n,2);
     }
   aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);
//----
   for(i=0; i<=p; i++)
     {
      lr=bb+aa*i;
      dh=High[i]-lr; dl=Low[i]-lr;
      //----
      if(i<p/2)
        {
         if(i==0)
           {
            dh_1=0.0; dl_1=0.0; ai_1=i; bi_1=i;
           }
         if(dh>=dh_1) {dh_1=dh; ai_1=i;}
         if(dl<=dl_1) {dl_1=dl; bi_1=i;}
        }
      //----
      if(i>=p/2)
        {
         if(i==p/2)
           {
            dh_2=0.0; dl_2=0.0; ai_2=i; bi_2=i;
           }
         if(dh>=dh_2) {dh_2=dh; ai_2=i;}
         if(dl<=dl_2) {dl_2=dl; bi_2=i;}
        }
     }
   lr0=bb; lrp=bb+aa*(i+p);
//===================================================
   if(MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;
   if(MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;
   if(MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2))
     {
      if(MathAbs(dh_1-dh_2)<MathAbs(dl_1-dl_2)) f=1; if(MathAbs(dh_1-dh_2)>=MathAbs(dl_1-dl_2)) f=2;
     }
//=================================================
   if(f==1)
     {
      for(n=0; n<=20; n++)
        {
         f1=0;
         for(i=0; i<=p; i++)
           {
            hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
            if(i==0 || i==p/2) dhm=0.0;
            if(High[i]-hai>dhm && i<p/2) {ai_1=i; f1=1;}
            if(High[i]-hai>dhm && i>=p/2) {ai_2=i; f1=1;}
           }
         if(f==0) break;
        }
      //----------------------------
      for(i=0; i<=p; i++)
        {
         hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
         dli=Low[i]-hai;
         if(i==0) dlm=0.0; if(dli<dlm) dlm=dli;
        }
      ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);
      hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);
      //----------------------------
      price_p1=hap+dlm/2;
      price_01=ha0+dlm/2;
     }
//=================================================
   if(f==2)
     {
      for(n=0; n<=20; n++)
        {
         f1=0;
         for(i=0; i<=p; i++) 
           {
            lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
            if(i==0 || i==p/2) dlm=0.0;
            if(Low[i]-lai<dlm && i<p/2) {bi_1=i; f1=1;}
            if(Low[i]-lai<dlm && i>=p/2) {bi_2=i; f1=1;}
           }
         if(f==0) break;
        }
      //----------------------------
      for(i=0; i<=p; i++)
        {
         lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
         dhi=High[i]-lai;
         if(i==0) dhm=0.0; if(dhi>dhm) dhm=dhi;
        }
      la0=Low[bi_1]*(0-bi_2)/(bi_1-bi_2)+Low[bi_2]*(0-bi_1)/(bi_2-bi_1);
      lap=Low[bi_1]*(p-bi_2)/(bi_1-bi_2)+Low[bi_2]*(p-bi_1)/(bi_2-bi_1);
      //----------------------------------------------------------------
      price_p1=lap+dhm/2;
      price_01=la0+dhm/2;
     }
//=================================================================================== отрисовка линий
   ObjectCreate("1"+(string)sName,2,0,Time[p],price_p1,Time[0],price_01);
//-----------------------------------------------------------------
   ObjectSet("1"+(string)sName,OBJPROP_COLOR,col);
   ObjectSet("1"+(string)sName,OBJPROP_STYLE,STYLE_DASHDOT);
   ObjectSet("1"+(string)sName,OBJPROP_RAY,false);
//---------------------------------------------
   ObjectSet("1"+(string)sName,OBJPROP_TIME1,Time[p]);
   ObjectSet("1"+(string)sName,OBJPROP_PRICE1,price_p1);
   ObjectSet("1"+(string)sName,OBJPROP_TIME2,Time[0]);
   ObjectSet("1"+(string)sName,OBJPROP_PRICE2,price_01);
   f=1; p1=p; p0=p; p2=p; fp=0;
//===================================================================================
   return(0);
  }
//+------------------------------------------------------------------+
 
Night63:

Hallo! Bitte helfen Sie!

Ich habe eine Idee, aber ich weiß nicht, wie ich sie umsetzen soll. Und was am wichtigsten ist: Ich weiß nicht, ob es für dieses Problem eine Lösung gibt.

Im Wesentlichen geht es um Folgendes: Wir haben einen Indikator, der eine Linie auf dem Diagramm für eine bestimmte Anzahl von Balken zeichnet.

Ist es möglich, die Anzahl der Takte, auf denen die Linie gezeichnet wird, durch Ziehen des linken "Endes" der Linie mit der Maus zu ändern? Nach dem Ziehen sollte sich der Indikator die neue Anzahl der für die Berechnung verwendeten Balken merken. Hier ist ein Beispiel für einen Indikator, den ich verbessern möchte

Sie müssen OnChartEvent() zum Indikator hinzufügen und das Ereignis der Änderung der Liniengröße mit seinem Namen verfolgen: CHARTEVENT_OBJECT_CHANGE. Berechnen Sie die neue Zeilenlänge in Takten neu, und verwenden Sie die neue Größe als Parameter für die Berechnung.
 
artmedia70:

Sie müssen herausfinden, ob der letzte Handel bei Taktnummer 0 eröffnet oder geschlossen wurde.

Dazu müssen Sie den letzten offenen Handel und den letzten geschlossenen Handel finden.

Zeigen Sie den Eröffnungsbalken des letzten offenen Handels und den Schlussbalken des letzten geschlossenen Handels an.

Wenn einer dieser Werte (der Balken des letzten offenen Handels oder der Balken des letzten geschlossenen Handels) Null ist, können Sie keine neuen Positionen eröffnen.

Und, ja: Sie haben kein Skript, es ist nur ein Teil des Codes von nepomyshchego. Und in die Eule brauchen Sie nichts hineinzuschreiben: Die Eule ist ein nachtaktiver Greifvogel, und lassen Sie den Vogel leben.

Ich verstehe das Prinzip der Erkennung des Vorhandenseins eines Geschäfts, aber ich weiß nicht, wie ich es im Code umsetzen kann :-(
 
DuKle:
Ich verstehe das Prinzip, wie man feststellt, ob eine Transaktion existiert, aber ich weiß nicht, wie man es in Code umsetzt :-(

Wie traurig das alles ist...

Soll ich es für Sie tun?

Für den Anfang und um mehr zu verstehen, lesen Sie den Thread"Nützliche Funktionen von KimIV".

Der Code ist natürlich redundant, aber für den Einstieg und zum Lernen genau richtig.

 

Liebe mql4/5-Programmierer!

Ich bin ein Anfänger, der die Grundlagen der Programmiersprache erlernt und einen EA für meine Diplomarbeit entwickelt hat!

Ich habe in meinem Diplom ein Kapitel mit dem Titel "Wirtschaft".

Wenn ich ein Programm für ein Unternehmen entwickeln soll, ist mit dem wirtschaftlichen Teil alles klar.

Aber wie soll das in meinem Fall sein? Was kann ich berücksichtigen und welche Wege sind zu beschreiten!

Herzlichen Dank!!!!

___________________________

Der Weg wird von denjenigen beschritten, die ihn gehen (c)