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

 
skyjet:

Ich danke Ihnen! Spielt es keine Rolle, auf welcher Seite man mit dem Zählen beginnt, z.B. beim 3. Takt?

Für Ihr Beispiel macht es eigentlich keinen Unterschied, aber Sie müssen trotzdem den Anfang und das Ende des Arrays angeben.

for (int x=3; x>1; x--)
{
 if(Open[x]==Open[x-1]) continue;
 if(Open[x]<Open[x-1])
   {
   //--- action
   }
}
Der Anfang spielt eine Rolle, wenn das Feld groß ist. Wenn die Bedingung beispielsweise in der Regel am Ende des Arrays ausgelöst wird, sollten Sie besser am Ende beginnen. Dieses Beispiel ist typisch für die Auftrags-/Positionssuche. Wenn Sie in diesem Fall zuerst die Suche durchführen, gelangt das Programm natürlich trotzdem zu diesem Punkt, aber es werden mehr Ressourcen benötigt.
 
Danila_mactep:
Hallo zusammen, bitte berät mich zu diesem Thema... Ich möchte das MA-Niveau in der Registerkarte Ebenen verschieben. Wenn ich es auf 798 verschieben möchte, ist die Berechnung für viele Paare zu kompliziert. Wie kann ich einen Indikator schreiben, der entweder den Preis des verschobenen gleitenden Durchschnitts zeichnet oder ihn im Datenfenster anzeigt, ohne dass ich ihn manuell berechnen muss?
Sie können einen Indikator mit einer MA-Verschiebung in seinen Eingabedaten erstellen. Der Indikator berechnet das Preisniveau und zeigt seine Objekte sofort auf dem Chart an.
 
chief2000:
Ein solches Problem - es gibt ein eindimensionales Feld, dessen Größe variieren kann.
Wie kann man alle möglichen Kombinationen von Array-Elementen miteinander durchlaufen?
Die Reihenfolge der Elemente spielt keine Rolle, d.h. 123==213==321...

Hier ist ein Beispiel für ein Array mit 4 Elementen:


Das ist eine gute Aufgabe für Ihr Gehirn. Sie können es so versuchen:
int start(){
 double array[4];
 int k,N[];
 k=ArraySize(array);
 ArrayResize(N,k);
 for (int i=0;i<k;i++)N[i]=-i-1;// Заполнили массив элементов массива отрицательными
//
 int j=0;
 while(N[k-1]<k){
  if(N[j]<k-1){
   N[j]++;
   bool NewComb=false;
   for(i=0;i<k-1;i++){
    if(N[i]>N[i+1]){NewComb=true;}else{NewComb=false;break;}
   }
//
   if(NewComb){
// Получили новую комбинацию в массиве N размерностью k    
    string temp="";
    for(i=0;i<k;i++){// Перебираем массив N. Если N[i] то элемент array[N[i]] не участвует в выборке.
                     // Например, для размерности 4 если N[0]=3,N[1]=1,N[2}<0,N[3]<0 то это выборка array[3] и array[1]
                     //                             если N[0]=3,N[1]=2,N[2]=1,N[3]=0 то это выборка array[3] и array[2] array[1] и array[0]
     if(N[i]<0)temp=StringConcatenate(temp,"X");else temp=StringConcatenate(temp,N[i]);
    }
   Print("NEWCOMB ",temp);// это для проверки какие комбинации выбираются
   }
//
  }
  else{
   N[j]=0;i=1;
   while(i<k){
    if(N[i]<k-1) {if(N[i]>=0)N[i]++;else N[i]=0;j=0;break;}
    else {N[i]=0;i++;}
   }
  }
  if(N[k-1]>=k-1) break;
 }
 return;
}

Testergebnis für Dimension 4. Wenn X-Element des Arrays nicht ausgewählt ist, ansonsten array[digit] und fragment für Dimension 6 verwenden:

 
artmedia70:
Erstellen Sie einen Indikator, dessen Eingabedaten die MA-Verschiebung angeben. Der Indikator berechnet das Preisniveau und zeigt seine Objekte sofort auf dem Chart an.


Ich weiß nicht, wie das geht, und ehrlich gesagt habe ich auch keine Ahnung, wie das geht - wenn ich den МА МА-Code öffne, gibt es dort so viel Zeug, dass ich nicht sehe, wo der Ebenenparameter ist, also kann ich keine Ebenen kopieren und einfügen.
 
Danila_mactep:

Wenn ich den MA-Code öffne, gibt es dort so viel Zeug, dass ich nicht sehen kann, wo der Level-Parameter ist, also kann ich die Level nicht kopieren und einfügen.
Sie müssen anfangen, Ihren eigenen Indikator zu schreiben, und sie werden Ihnen sagen, was zu tun ist.
 
artmedia70:
Nein, Sie müssen anfangen, Ihren eigenen Indikator zu schreiben, und dann wird man Ihnen sagen, was Sie tun müssen.

Ich habe einen neuen Indikator erstellt, der bisher wie folgt aussieht:

#property copyright "Copyright 2013, MetaQuotes Software Corp.
#property link "http://www.metaquotes.net"

#property indicator_chart_window
#Eigenschaft indicator_buffers 1
#property indicator_color1 Rot
//--- Puffer
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int init()
{
//---- Indikatoren
SetIndexStyle(0,DRAW_LINE);
SetIndexPuffer(0,ExtMapPuffer1);
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----
#include "Gleitende Durchschnitte.mq4"
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+

 
Der MA-Indikator weist verschiedene Stufen auf. Die Frage ist: Wie können wir Daten von diesen Niveaus abrufen, z. B. wenn der Kurs das Niveau 100 oder -100 erreicht hat (Eröffnung eines Kauf-/Verkaufsgeschäfts).
 
alexey1979621:
Der MA-Indikator weist verschiedene Stufen auf. Die Frage ist: Wie können wir Daten von diesen Niveaus erhalten, z.B. wenn der Preis das Niveau 100 oder -100 erreicht hat (Eröffnung eines Kauf-/Verkaufsgeschäfts).

Der MA selbst auf dem Null-Balken (aktuell) ist:

double priceMA0=iMA(Symbol(), Period(), MA_Period, MA_Shift, MA_ Method, PRICE_OPEN, 0);

Zur Berechnung des MA wird der Eröffnungskurs herangezogen, um die "Schwankungen" des aktuellen Balkens zu beseitigen.

Dann wird der Preis der Stufe +100 sein:

double priceP100=priceMA0+100*Point;

Das Preisniveau von -100 wird sein:

double priceM100=priceMA0-100*Point;
 
artmedia70:

Der MA selbst auf dem Null-Balken (aktuell) ist:

Zur Berechnung des MA wird der Eröffnungskurs herangezogen, um die "Schwankungen" des aktuellen Balkens zu beseitigen.

Dann wird der Preis der Stufe +100 sein:

Das Preisniveau von -100 wäre:


Vielen Dank, Sie haben mir schon mehr als einmal geholfen. Ich bin sicher, dass ich die Programmierung bald in den Griff bekommen werde.....
Grund der Beschwerde: