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

 

Hallo. Es gibt ein Problem mit dem Schreiben eines idnikator, im Grunde gibt es zwei Arrays für Puffer,

Masse1

Masse2

Und die Daten für jedes Element des Arrays werden in kleinen Zahlen gezählt, d.h. die Werte sind 15, 27, 41, 14, usw.

Wenn ich den int-Typ von Arrays einstelle und jedes Element durchlaufe, kann ich sehen, dass die Array-Werte den berechneten Werten entsprechen, aber wenn der Typ Int ist, werden die Indikatorlinien nicht im Fenster angezeigt.

Wenn ich den Typ des Arrays double einstelle, speichert das Array mehr Werte, von denen ich nicht weiß, woher sie kommen, zum Beispiel 21456545454, 43654534532, 24325235232 usw. die überhaupt nicht mit den berechneten Werten übereinstimmen.

Was könnte das Problem sein?

 

Hallo zusammen!

Helfen Sie mir auf die Sprünge.

Ich habe ein einfaches Skript zum Öffnen einer Bestellung geschrieben (aus dem MQL4-Tutorial).

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

In diesem Beispiel wird der Code für Geräte mit 4 Ziffern angegeben.

Ich habe ein Konto bei einem Unternehmen, das 5 Ziffern nach dem Punkt hat.

Können Sie bitte den Code für 5 Ziffern ändern und warum der Fehler 4109 (Handel nicht erlaubt) angezeigt wird, wenn das Skript läuft.

 
sss2019: Wenn ich den Typ der Arrays auf int einstelle und jedes Element durchlaufe, kann ich sehen, dass die Array-Werte mit den berechneten Werten übereinstimmen, aber wenn der Typ Int ist, werden die Indikatorlinien nicht im Fenster angezeigt.

Wenn ich den Array-Typ double einstelle, speichert das Array mehr Werte, von denen ich nicht weiß, woher sie kommen, z.B. 21456545454, 43654534532, 24325235232, usw. die überhaupt nicht mit den berechneten Werten übereinstimmen.

Woran kann das liegen?

Man muss an die Telepathen appellieren. Es ist aber durchaus möglich, dass das Problem eine Unstimmigkeit bei der Division von reellen Zahlen durch ganze Zahlen ist.
 

Hallo, können Sie mir bitte helfen, mit dem Indikator umzugehen. Die Idee ist, mit der Eröffnung der amerikanischen Sitzung um 16:00 Uhr Moskauer Zeitrahmen eine Markierung über der Kerze platziert wird, auf jedem Zeitrahmen. Ich habe Probleme mit der datetime Funktionen, ich habe das Tutorial mehr als einmal gelesen, schaute auf andere Indikatoren, aber immer noch nicht verstehen.

Dateien:
exfbtix.mq4  2 kb
 
Yulia:

Hallo, können Sie mir bitte helfen, mit dem Indikator umzugehen. Die Idee ist, mit der Eröffnung der amerikanischen Sitzung um 16:00 Uhr Moskauer Zeitrahmen eine Markierung über der Kerze platziert wird, auf jedem Zeitrahmen. Ich habe Probleme mit der datetime Funktionen, ich habe das Tutorial mehr als einmal gelesen, schaute auf andere Indikatoren, aber immer noch nicht verstehen.


#property indicator_chart_window // указываем, что идикатор будет рисоваться в окне, где рисуется график валютной пары
#property indicator_buffers 1 // сколько линий будет рисовать наш индикатор
#property indicator_color1 Lime // какого цвета будет первая линия 
//---- buffers
double Buffer[];

extern int hour =9;

//+------------------------------------------------------------------+
int init()
{
  SetIndexStyle(0,DRAW_ARROW);
  SetIndexArrow(0,108);
  SetIndexBuffer(0,Buffer);  
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{

int counted_bars=IndicatorCounted(); // сколько баров уже просчитано для начего индикатора
if(counted_bars<0) return(-1);// проверяем ошибки


int i=0;
    while(i<Bars)
         {
         if(TimeHour(Time[i])==hour)
            {        
            Buffer[i]=High[i]+150*Point;
            }
         
         i++;
         }

return(0);
}
//+------------------------------------------------------------------+

 
 
Vielen Dank, aber ein wenig falsch, ich brauche nur eine Marke auf der ersten Kerze auf M1, M5 usw., außer natürlich die tägliche und oben.
 
Reshetov:
Sie müssen einen Telepathen konsultieren. Aber es ist durchaus möglich, dass das Problem eine Unstimmigkeit bei der Division von reellen Zahlen durch ganze Zahlen ist.


Hier ist der Code

int lowsum, highsum;
int Mass1[];
int Mass2[];

                        while(start1 < end1 + 1)
                                {
                                lowsum = lowsum + iVolume(Symbol(), PERIOD_M1, start1);
                                start1++;
                                }
                        while(start2 < end2 + 1)
                                {
                                highsum = highsum + iVolume(Symbol(), PERIOD_M1, start2);
                                start2++;
                                }
                        Mass[i] = lowsum;
                        Mass[i] = highsum;
                        Alert(Mass[i], " ", highsum);

Infolgedessen gibt der Alarm diese Meldungen aus:

Sie können sehen, dass die Variable einen Wert hat, aber Sie können einem Array keinen Variablenwert zuweisen. Ich kann nicht herausfinden, was das Problem ist

 
Yulia:
Vielen Dank, aber ein wenig falsch, ich brauche nur eine Marke auf der ersten Kerze auf M1, M5 usw., außer natürlich die tägliche und oben.

Wie du es hattest, so bleibt es
 
sss2019:

Sie können sehen, dass die Variable einen Wert hat, aber Sie können einem Array keinen Variablenwert zuweisen. Ich kann nicht herausfinden, was das Problem ist

Wie groß ist das Array?
 
sss2019:


Hier ist der Code

Infolgedessen gibt der Alarm diese Meldungen aus:

Sie können sehen, dass die Variable einen Wert hat, aber Sie können einem Array keinen Variablenwert zuweisen. Ich kann nicht herausfinden, was das Problem ist


Müssen Sie nicht die Größe des Arrays festlegen?