Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 12

 

Wer weiß, wie man im MT4-Terminal eine Verbindung zur Systemzeit des Computers herstellt, bitte ich um Rat:

- Karten

- offene Aufträge

- Geschäftsgeschichte

- Protokolle

- Protokolle

Das Problem ist, dass die Zeit nicht synchronisiert ist.

Was könnte das Problem sein?

 

Guten Tag!

Ich habe einen derVolumenindikatoren als Grundlage genommen, ihn an meine Parameter angepasst und nur das Nötigste übrig gelassen, jetzt zeigt er nur die Pfeile an, die benötigt werden.

Ich schaffe es nicht, den ALERT so anzuhängen, dass beim Aufleuchten des grünen oder roten Pfeils die Meldung erscheint.

Bitte um Hilfe!

Z.U. schaute sich verschiedene Tutorials an, wie man etwas tut, das nicht funktioniert.

 
Refresh052:

Guten Tag!

Ich habe einen derVolumenindikatoren als Grundlage genommen, ihn an meine Parameter angepasst und nur das Nötigste übrig gelassen, jetzt zeigt er nur die Pfeile an, die benötigt werden.

Ich schaffe es nicht, den ALERT so anzuhängen, dass beim Aufleuchten des grünen oder roten Pfeils die Meldung erscheint.

Bitte um Hilfe!

Z.U. schaute sich verschiedene Tutorials an, wie man etwas tut, das nicht funktioniert.

Kommen Sie, stellen Sie den gesamten Code des Indikators hier ein
 
Stanislav Aksenov:
Fügen Sie den gesamten Code des Indikators hier ein

#Eigenschaft streng

#property indicator_chart_window


#property indicator_minimum 0

#Eigenschaft indicator_buffers 2

#property indicator_color1 Rot

#Eigenschaft indicator_color2 Lime




#Eigenschaft indicator_width1 4

#Eigenschaft indicator_width2 4


extern ENUM_APPLIED_PRICE price = PRICE_CLOSE;

extern double Overbought = 80;

extern double Oversold = 20;

extern int NumberOfBars = 500;

extern string Note = "0 bedeutet Alle Balken anzeigen";

extern int MAPeriod = 100;

extern int LookBack = 20;

extern bool Alert=True;

double red[],lime[];

//+------------------------------------------------------------------+

//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |

//+------------------------------------------------------------------+

int init()

{

//---- Indikatoren

SetIndexPuffer(0,rot);

SetIndexStyle(0,DRAW_ARROW, STYLE_SOLID,3);

SetIndexPfeil(0,234);

SetIndexLabel(0, "Climax High ");

SetIndexPuffer(1,lime);

SetIndexStyle(1,DRAW_ARROW, STYLE_SOLID,3);

SetIndexPfeil(1,233);

SetIndexLabel(1, "Climax Low ");

SetIndexEmptyValue(0,0.0);

SetIndexEmptyValue(1,0.0);

SetIndexDrawBegin(0,0);

SetIndexDrawBegin(1,0);

IndicatorShortName("MKSP_Volume" );


//----

zurück(0);

}

//+------------------------------------------------------------------+

//| Benutzerdefinierte Indikator-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

zurück(0);

}

//+------------------------------------------------------------------+

//| Benutzerdefinierte Indikator-Iterationsfunktion |

//+------------------------------------------------------------------+

int start()

{


double VolLowest,Range,Value2,Value3,HiValue2,HiValue3,LoValue3,tempv2,tempv3

int-Grenze;

int counted_bars=IndicatorCounted();

//---- zuletzt gezählte Takt wird nachgezählt

if(gezählte_Balken>0) gezählte_Balken--;

wenn ( Anzahl der Balken == 0 )

NumberOfBars = Bars-counted_bars;

limit=NumberOfBars; //Bars-counted_bars;

for(int i=0; i<limit; i++)

{

rot[i] = 0; lime[i] = 0;

Value2=0;Value3=0;HiValue2=0;HiValue3=0;LoValue3=99999999;tempv2=0;tempv3=0;tempv=0;

VolLowest = Volume[iLowest(NULL,0,MODE_VOLUME,20,i)];

if (Volumen[i] == VolLowest)

{

}

Bereich = (High[i]-Low[i]);

Wert2 = Volumen[i]*Bereich;

if ( Bereich != 0 )

Wert3 = Volumen[i]/Bereich;

for ( int n=i;n<i+MAPeriode;n++ )

{

tempv= Volumen[n] + tempv;

}

for ( int n=i;n<i+LookBack;n++)

{

tempv2 = Volumen[n]*((Hoch[n]-Tief[n]));

wenn ( tempv2 >= HiValue2 )

HiValue2 = tempv2;

wenn ( Volumen[n]*((Hoch[n]-Tief[n])) != 0 )

{

tempv3 = Volumen[n] / ((Hoch[n]-Tief[n]);

wenn ( tempv3 > HiValue3 )

HiValue3 = tempv3;

wenn ( tempv3 < LoValue3 )

LoWert3 = tempv3;

}

}

if ( Value2 == HiValue2 && Close[i] > (High[i] + Low[i]) / 2 )

{

rot[i] = Hoch[i]+10*Punkt;

}

wenn ( Wert3 == HiValue3 )

{

NormalizeDouble(Volumen[i],0);

rot[i]=0;

}

if ( Wert2 == HiValue2 && Wert3 == HiValue3 )

{

NormalizeDouble(Volumen[i],0);

rot[i]=0;

}

if ( Value2 == HiValue2 && Close[i] <= (High[i] + Low[i]) / 2 )

{

lime[i] = Low[i]-10*Point;

}

}

//----

//----

zurück(0);

}

//+------------------------------------------------------------------+

Und ein Bildschirmfoto

Dateien:
 
Stanislav Aksenov:
Geben Sie den gesamten Code für den Indikator hier ein.
Ich weiß nicht, wo ich Alert unterbringen soll.
 
Refresh052:


Und ein Bildschirmfoto

if ( Value2 == HiValue2  && Close[i] > (High[i] + Low[i]) / 2 )

            {

               red[i] = High[i]+10*Point;

             Alert("===================");  

            }  

            

          if ( Value3 == HiValue3 )

            {

               NormalizeDouble(Volume[i],0);                

               red[i]=0;

            }

          if ( Value2 == HiValue2 && Value3 == HiValue3 )

            {

               NormalizeDouble(Volume[i],0);

               red[i]=0;

              

            }

         if ( Value2 == HiValue2  && Close[i] <= (High[i] + Low[i]) / 2 )

            {

               lime[i] = Low[i]-10*Point;

               Alert("===================");            

              }
 
Alekseu Fedotov:
if ( Value2 == HiValue2  && Close[i] > (High[i] + Low[i]) / 2 )

            {

               red[i] = High[i]+10*Point;

             Alert("===================");  

            }  

            

          if ( Value3 == HiValue3 )

            {

               NormalizeDouble(Volume[i],0);                

               red[i]=0;

            }

          if ( Value2 == HiValue2 && Value3 == HiValue3 )

            {

               NormalizeDouble(Volume[i],0);

               red[i]=0;

              

            }

         if ( Value2 == HiValue2  && Close[i] <= (High[i] + Low[i]) / 2 )

            {

               lime[i] = Low[i]-10*Point;

               Alert("===================");            

              }
jede Kerze signalisiert genauer jede Sekunde
 

#property strict
#property indicator_chart_window
#property indicator_minimum 0
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_width1 4
#property indicator_width2 4

extern ENUM_APPLIED_PRICE price = PRICE_CLOSE;
extern double Overbought = 80;
extern double Oversold   = 20;
extern int     NumberOfBars = 500;
extern string  Note = "0 means Display all bars";
extern int     MAPeriod = 100;
extern int     LookBack = 20;
extern bool Alert=True;
double red[],lime[];
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
      SetIndexBuffer(0,red);
      SetIndexStyle(0,DRAW_ARROW, STYLE_SOLID,3);
      SetIndexArrow (0,234);
      SetIndexLabel(0,"Climax High ");
      SetIndexBuffer(1,lime);
      SetIndexStyle(1,DRAW_ARROW, STYLE_SOLID,3);
      SetIndexArrow (1,233);
      SetIndexLabel(1,"Climax Low ");
      SetIndexEmptyValue(0,0.0);
      SetIndexEmptyValue(1,0.0);
      SetIndexDrawBegin(0,0);
      SetIndexDrawBegin(1,0);
      IndicatorShortName("MKSP_Volume" );
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
int start()
{
   double VolLowest,Range,Value2,Value3,HiValue2,HiValue3,LoValue3,tempv2,tempv3,tempv;
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   if ( NumberOfBars == 0 ) NumberOfBars = Bars-counted_bars;
   limit=NumberOfBars; //Bars-counted_bars;

   for(int i=0; i<limit; i++)  
      {
         red[i] = 0; lime[i] = 0;
         Value2=0;Value3=0;HiValue2=0;HiValue3=0;LoValue3=99999999;tempv2=0;tempv3=0;tempv=0;
         VolLowest = Volume[iLowest(NULL,0,MODE_VOLUME,20,i)];
         if (Volume[i] == VolLowest)
            {
                           }

         Range = (High[i]-Low[i]);
         Value2 = Volume[i]*Range;

         if (  Range != 0 ) Value3 = Volume[i]/Range;

         for ( int n=i;n<i+MAPeriod;n++ )
            {
               tempv= Volume[n] + tempv;
            }

          for( int n=i;n<i+LookBack;n++)
            {
               tempv2 = Volume[n]*((High[n]-Low[n]));
               if ( tempv2 >= HiValue2 )
                  HiValue2 = tempv2;

               if ( Volume[n]*((High[n]-Low[n])) != 0 )
                  {          
                     tempv3 = Volume[n] / ((High[n]-Low[n]));
                     if ( tempv3 > HiValue3 )  HiValue3 = tempv3;
                     if ( tempv3 < LoValue3 ) LoValue3 = tempv3;
                  }
            }
          if ( Value2 == HiValue2  && Close[i] > (High[i] + Low[i]) / 2 )
            {
               red[i] = High[i]+10*Point;

if(i==0) Alert("Вроде бы красная стрелка"); 

            }  

          if ( Value3 == HiValue3 )
            {
               NormalizeDouble(Volume[i],0);                
               red[i]=0;
            }
          if ( Value2 == HiValue2 && Value3 == HiValue3 )
            {
               NormalizeDouble(Volume[i],0);
               red[i]=0;
            }
         if ( Value2 == HiValue2  && Close[i] <= (High[i] + Low[i]) / 2 )
            {
               lime[i] = Low[i]-10*Point;

if(i==0) Alert("Вроде бы зеленая стрелка");  

              }
      }
   return(0);
  }

Geben Sie den Code nicht als reinen Text ein, sondern verwenden Sie ein spezielles Layout dafür.

Ich habe es nicht wirklich verstanden,

In der Regel wird ein Alarm ausgelöst, wenn es ein Signal auf dem letzten Balken (Null) gibt.

 
Stanislav Aksenov:

#property strict
#property indicator_chart_window
#property indicator_minimum 0
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_width1 4
#property indicator_width2 4

extern ENUM_APPLIED_PRICE price = PRICE_CLOSE;
extern double Overbought = 80;
extern double Oversold   = 20;
extern int     NumberOfBars = 500;
extern string  Note = "0 means Display all bars";
extern int     MAPeriod = 100;
extern int     LookBack = 20;
extern bool Alert=True;
double red[],lime[];
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
      SetIndexBuffer(0,red);
      SetIndexStyle(0,DRAW_ARROW, STYLE_SOLID,3);
      SetIndexArrow (0,234);
      SetIndexLabel(0,"Climax High ");
      SetIndexBuffer(1,lime);
      SetIndexStyle(1,DRAW_ARROW, STYLE_SOLID,3);
      SetIndexArrow (1,233);
      SetIndexLabel(1,"Climax Low ");
      SetIndexEmptyValue(0,0.0);
      SetIndexEmptyValue(1,0.0);
      SetIndexDrawBegin(0,0);
      SetIndexDrawBegin(1,0);
      IndicatorShortName("MKSP_Volume" );
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
int start()
{
   double VolLowest,Range,Value2,Value3,HiValue2,HiValue3,LoValue3,tempv2,tempv3,tempv;
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   if ( NumberOfBars == 0 ) NumberOfBars = Bars-counted_bars;
   limit=NumberOfBars; //Bars-counted_bars;

   for(int i=0; i<limit; i++)  
      {
         red[i] = 0; lime[i] = 0;
         Value2=0;Value3=0;HiValue2=0;HiValue3=0;LoValue3=99999999;tempv2=0;tempv3=0;tempv=0;
         VolLowest = Volume[iLowest(NULL,0,MODE_VOLUME,20,i)];
         if (Volume[i] == VolLowest)
            {
                           }

         Range = (High[i]-Low[i]);
         Value2 = Volume[i]*Range;

         if (  Range != 0 ) Value3 = Volume[i]/Range;

         for ( int n=i;n<i+MAPeriod;n++ )
            {
               tempv= Volume[n] + tempv;
            }

          for( int n=i;n<i+LookBack;n++)
            {
               tempv2 = Volume[n]*((High[n]-Low[n]));
               if ( tempv2 >= HiValue2 )
                  HiValue2 = tempv2;

               if ( Volume[n]*((High[n]-Low[n])) != 0 )
                  {          
                     tempv3 = Volume[n] / ((High[n]-Low[n]));
                     if ( tempv3 > HiValue3 )  HiValue3 = tempv3;
                     if ( tempv3 < LoValue3 ) LoValue3 = tempv3;
                  }
            }
          if ( Value2 == HiValue2  && Close[i] > (High[i] + Low[i]) / 2 )
            {
               red[i] = High[i]+10*Point;

if(i==0) Alert("Вроде бы красная стрелка"); 

            }  

          if ( Value3 == HiValue3 )
            {
               NormalizeDouble(Volume[i],0);                
               red[i]=0;
            }
          if ( Value2 == HiValue2 && Value3 == HiValue3 )
            {
               NormalizeDouble(Volume[i],0);
               red[i]=0;
            }
         if ( Value2 == HiValue2  && Close[i] <= (High[i] + Low[i]) / 2 )
            {
               lime[i] = Low[i]-10*Point;

if(i==0) Alert("Вроде бы зеленая стрелка");  

              }
      }
   return(0);
  }

Fügen Sie den Code nicht im Klartext in Ihre Nachrichten ein, sondern verwenden Sie das Code-Layout.

Ich habe es nicht wirklich herausgefunden,

In der Regel wird ein Alarm ausgegeben, wenn es ein Signal auf dem letzten Balken gibt, ich denke, ich habe es an die richtigen Stellen gesetzt...

Ok danke, ich werde es versuchen, auch eine separate Lektion))))
 
Stanislav Aksenov:

#property strict
#property indicator_chart_window
#property indicator_minimum 0
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_width1 4
#property indicator_width2 4

extern ENUM_APPLIED_PRICE price = PRICE_CLOSE;
extern double Overbought = 80;
extern double Oversold   = 20;
extern int     NumberOfBars = 500;
extern string  Note = "0 means Display all bars";
extern int     MAPeriod = 100;
extern int     LookBack = 20;
extern bool Alert=True;
double red[],lime[];
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
      SetIndexBuffer(0,red);
      SetIndexStyle(0,DRAW_ARROW, STYLE_SOLID,3);
      SetIndexArrow (0,234);
      SetIndexLabel(0,"Climax High ");
      SetIndexBuffer(1,lime);
      SetIndexStyle(1,DRAW_ARROW, STYLE_SOLID,3);
      SetIndexArrow (1,233);
      SetIndexLabel(1,"Climax Low ");
      SetIndexEmptyValue(0,0.0);
      SetIndexEmptyValue(1,0.0);
      SetIndexDrawBegin(0,0);
      SetIndexDrawBegin(1,0);
      IndicatorShortName("MKSP_Volume" );
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
int start()
{
   double VolLowest,Range,Value2,Value3,HiValue2,HiValue3,LoValue3,tempv2,tempv3,tempv;
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   if ( NumberOfBars == 0 ) NumberOfBars = Bars-counted_bars;
   limit=NumberOfBars; //Bars-counted_bars;

   for(int i=0; i<limit; i++)  
      {
         red[i] = 0; lime[i] = 0;
         Value2=0;Value3=0;HiValue2=0;HiValue3=0;LoValue3=99999999;tempv2=0;tempv3=0;tempv=0;
         VolLowest = Volume[iLowest(NULL,0,MODE_VOLUME,20,i)];
         if (Volume[i] == VolLowest)
            {
                           }

         Range = (High[i]-Low[i]);
         Value2 = Volume[i]*Range;

         if (  Range != 0 ) Value3 = Volume[i]/Range;

         for ( int n=i;n<i+MAPeriod;n++ )
            {
               tempv= Volume[n] + tempv;
            }

          for( int n=i;n<i+LookBack;n++)
            {
               tempv2 = Volume[n]*((High[n]-Low[n]));
               if ( tempv2 >= HiValue2 )
                  HiValue2 = tempv2;

               if ( Volume[n]*((High[n]-Low[n])) != 0 )
                  {          
                     tempv3 = Volume[n] / ((High[n]-Low[n]));
                     if ( tempv3 > HiValue3 )  HiValue3 = tempv3;
                     if ( tempv3 < LoValue3 ) LoValue3 = tempv3;
                  }
            }
          if ( Value2 == HiValue2  && Close[i] > (High[i] + Low[i]) / 2 )
            {
               red[i] = High[i]+10*Point;

if(i==0) Alert("Вроде бы красная стрелка"); 

            }  

          if ( Value3 == HiValue3 )
            {
               NormalizeDouble(Volume[i],0);                
               red[i]=0;
            }
          if ( Value2 == HiValue2 && Value3 == HiValue3 )
            {
               NormalizeDouble(Volume[i],0);
               red[i]=0;
            }
         if ( Value2 == HiValue2  && Close[i] <= (High[i] + Low[i]) / 2 )
            {
               lime[i] = Low[i]-10*Point;

if(i==0) Alert("Вроде бы зеленая стрелка");  

              }
      }
   return(0);
  }

Geben Sie den Code nicht als reinen Text ein, sondern verwenden Sie ein spezielles Layout dafür.

Ich habe es nicht wirklich verstanden,

In der Regel wird ein Alarm ausgelöst, wenn es ein Signal auf dem letzten Balken (Null) gibt.

Jede Sekunde wird ein Alarm ausgelöst