[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 78

 

Hallo! Ich habe angefangen, mquel4 zu lernen. Ich werde ein Beispiel für einen einfachen Indikator verwenden, der die maximalen und minimalen Kerzenpreise berechnet und an den Kerzenextremen Linien durch zwei Puffer auf dem Bildschirm zieht:

#property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[],Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
SetIndexBuffer(0,Buf_0); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(1,Buf_1); // Назначение массива буферу
SetIndexStyle (1,DRAW_LINE,STYLE_DOT,1);// Стиль линии
return; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
int i,// Индекс бара
Counted_bars; // Количество просчитанных баров 
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
i=Bars-Counted_bars-1;
// Индекс первого непосчитанного
while(i>=0) // Цикл по непосчитанным барам
{
Buf_0[i]=High[i]; // Значение 0 буфера на i-ом баре
Buf_1[i]=Low[i]; // Значение 1 буфера на i-ом баре

i--; // Расчёт индекса следующего бара
}
//--------------------------------------------------------------------
return; // Выход из спец. ф-ии start()
}

Wie kann man also erreichen, dass die Pufferlinie durch zwei (drei usw.) Kerzenständer verläuft, anstatt durch jeden einzelnen?

 
wolf05632:

Wie kann ich also erreichen, dass die Pufferlinie durch zwei (drei usw.) Kerzen statt durch jede Kerze verläuft?

Lernen Sie zunächst, wie Sie eine Nachricht mit Hilfe der Schaltfläche "SRC" korrekt in den Code einfügen, so dass sie eine lesbare Form hat und genauso aussieht wie in MetaEditor.


Der zweite Schritt ist der Versuch, die Variable Counted_bars mit der if-Anweisung zu verknüpfen.

Zum Beispiel:

Wir geben die Indikatorberechnung jeden zweiten Balken ein (ungerade Balken werden übersprungen, gerade Balken bleiben stehen):

if (MathMod(Counted_bars, 2) == 0)
{
   // расчёт для буферов индикатора
}
else return(0);

Hier können Sie über die Funktion MathMod() lesen. Aber Sie müssen es nicht benutzen. Sie können eine beliebige Bedingung in die if-Anweisung einfügen.

Vergessen Sie aber nicht, dass solche Codeänderungen den Verlust einiger Werte im Puffer zur Folge haben. Ob Sie es brauchen oder nicht, weiß ich nicht. Alles hängt von Ihrer Aufgabe ab.

 

Ich bin ein wenig verwirrt. Ich habe versucht, den Zyklusschritt gleich zwei zu machen (ich denke, Sie würden das Gleiche meinen), aber es funktioniert nicht. Ich muss nicht durch eine bestimmte Kerze gehen, sondern durch eine beliebige Anzahl von Kerzen. Meines Erachtens sollte die Struktur folgendermaßen aussehen:

Puffer array[1]= Array von Kerzenständern[1]

Puffer array[2]= Array von Kerzenständern[2]

Puffer array[3]= array of candlesticks[4]

...

Puffer array[5]= array of candlesticks[x] usw. Aber es funktioniert nicht.

 
wolf05632:

Ich sehe kein Muster zwischen den Puffer-Indizes und den Candlestick-Indizes...

Und es wäre noch besser, wenn Sie ein Bild von dem, was Sie bekommen möchten, anhängen würden.

 

Sie lautet wie folgt

Und ich brauche es so:

Aber seien Sie nicht speziell auf die Linien fixiert, die durch eine Kerze gezogen werden, sie können auch durch zwei oder drei usw. gezogen werden.

 
sergeev:

Ich denke, wir hätten das zu den Telepathen bringen sollen und nicht hierher.

Er macht sich nur über uns lustig.


Schauen Sie sich den Code an, Sie können ohne Leerzeichen sehen, wo das Ergebnis des Sendens der Bestellung, sein Fehlercode und die Ziffern für das Instrument.
 

Dann müssen Sie einen zick-zack-ähnlichen Indikator verwenden (meine Meinung):

#property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[], Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
   SetIndexBuffer(0, Buf_0); // Назначение массива буферу
   SetIndexStyle (0, DRAW_SECTION);
   SetIndexBuffer(1, Buf_1); // Назначение массива буферу
   SetIndexStyle (1, DRAW_SECTION);
   return; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
   int i,// Индекс бара
   Counted_bars; // Количество просчитанных баров 
   //--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   if (MathMod(Bars, 2) != 0 && Counted_bars == 0)
      return(0);
   i = Bars-Counted_bars-1;
   // Индекс первого непосчитанного
   while(i >= 0) // Цикл по непосчитанным барам
   {
      if (MathMod(i, 2) == 0)
      {
         Buf_0[i] = High[i]; // Значение 0 буфера на i-ом баре
         Buf_1[i] = Low[i]; // Значение 1 буфера на i-ом баре
      }
   
      i--; // Расчёт индекса следующего бара
   }
   //--------------------------------------------------------------------
   return; // Выход из спец. ф-ии start()
}

Ich denke, Sie können die Änderungen nachvollziehen. Das einzige, was ich war falsch über, es ist besser, Bars-Parameter anstelle von IndicatorCounted() als Index der Bar berechnet werden, zu verwenden.

Ihre Aufgabe besteht nun darin, den Teiler in einen externen Parameter zu übernehmen. Sie ist gleich der Anzahl der durchlaufenen Kerzenständer.

 
grell:

Schauen Sie sich einfach den Code an, Sie können ohne Leerzeichen sehen, wo das Ergebnis des Sendens der Bestellung, sein Fehlercode und die Ziffern für das Instrument.

Ganz genau. Deshalb sprechen wir ja auch von Telepathen.

Sie haben uns vorhin den Code gegeben:

Alert("Ordersend_Number",res,err);

Ich habe den Code nicht durchgesehen, aber leider konnte ich den Fehler nicht finden... Ich habe keine Erfahrung im Schreiben von Expert Advisors für mehrere Währungen. Ich kenne nur einige Grundsätze, das ist alles.

 
Es ist offensichtlich, dass -1129 der Fehlercode ist. Wo haben Sie die Fehlernummer 1292 gesehen?
 
grell:
Es ist klar, dass -1129 ein Fehlercode ist, wo haben Sie die Fehlernummer 1292 gesehen?

Es kann alles passieren...

Haben Sie Ihren EA nur auf einem DC getestet? Dauert es lange, bis der Fehler 129 erscheint? Oder die Bestellung öffnet sich erst nach mehreren Anfragen?