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

 
Integer:


Können Sie mir sagen, warum die Leute statt "it" "ito" schreiben?

1. Wissen Sie nicht, dass "it" mit einem "e" und nicht mit einem "e" geschrieben wird?

2. Sind Sie zu faul, Ihre Hand zum Buchstaben "e" zu bewegen, ist es einfacher, "e" zu drücken?

3. Gibt es keine "e"-Taste auf der Tastatur? Wenn nicht, warum nicht?

4. Handelt es sich um eine besondere Art von Ponce?

5. Ein anderer unbekannter Grund. Was ist das?


Ich bin kein Russe und es gibt keine russischen Buchstaben auf der Tastatur. Außerdem benutze ich eine phonetische Tastatur (es ist ein Softwareprogramm). Ich drücke "p", aber es steht "p". Der Buchstabe "e" ist auch dabei. Ich muss "\" tippen.

Es gibt grammatikalische Fehler, weil die Grammatik längst vergessen ist. Ich musste nur in Foren auf Russisch schreiben, und das nach vielen Jahren.

Ich entschuldige mich für die Fehler. Treten Sie mich nicht zu sehr.

 
artmedia70:

Diese Zeile kann entfernt werden, da iFractals() als Abwesenheit eines Fraktals nicht den "leeren Wert" (EMPTY_VALUE), sondern Null zurückgibt.

Meine Frage lautet wie folgt: Versuchen Sie, einen Indikator zu erstellen, der nach zwei aufeinanderfolgenden Fraktalen sucht? Oder suchen Sie in Ihrem EA nach zwei aufeinanderfolgenden Fraktalen, die dem aktuellen Balken am nächsten sind? Diese Frage ist nicht umsonst, denn die Suchmethoden im Indikator und im Expert Advisor sind unterschiedlich - der Indikator rechnet vom Ende zum Anfang, also von der Vergangenheit zur Gegenwart, während der Expert Advisor die Balken von der Gegenwart zur Vergangenheit durchsucht. Dementsprechend sind auch die Suchrichtungen im Expert Advisor und im Indikator unterschiedlich.

Und eine letzte Frage: Wie soll die Ausgabe aussehen?



Es interessiert mich nicht, was iFractals( ) zurückgibt (ich musste es bisher nicht wissen). Wenn er wirklich 0 ist - ja, ich habe gelogen, EMPTY_VALUE muss nicht überprüft werden.

Ich habe diese Formulierung als nette Rechtfertigung gefunden - wir haben den allgemeinen Fall von EMPTY_VALUE betrachtet und nicht den lokalen Fall mit 0 Rückgabe.

Aber ich schäme mich und amüsiere mich darüber, dass ich eine so elementare Sache nicht gewusst habe.

Soweit ich weiß, war der Code für einen Indikator - artmedia70 hat Recht, dass der Ansatz für Expert Advisors anders ist.

Ich habe keine Zeit dafür - ich werde es nachts machen, wenn ich nach Hause komme, weil wir uns nicht gut verstanden haben (nachdem ich die Bedingung von zwei Fraktalen gefunden habe, sollte das Ereignis verarbeitet werden), aber alles ist OK.

//----
   БЛОК ПРОВЕРКИ НОВОГО БАРА;                //проверить наличие нового бара 

   int   a1=0,                               //преведущий фрактал (-1 ->нижний, 1 -> верхний)
         a2,                                 //нынешний фрактал  (-1 ->нижний, 1 -> верхний)
         a3,                                 //сума преведущий + нынешний
         kilkict,                            //была введена с мыслю уменьшить перерасчет после глобального расчета (идея просто еще не реализована)
         frac,                               //frac - флаг существования фракталов,
         frac1=0,                            //frac1- счетчик фракталов (+1 или 0 за цикл)сейчас просто выполняет роль фильтра, надо найти сперва 2 фрактала чтобы приступить к их сравнению.
         i;
     
   kilkict=Bars;                            

   for (i=3; i<kilkict;i++){                 // 3
      a2=0;
      frac=0;
      if(iFractals(NULL, 0, MODE_UPPER, i)>0) {            
         if (Bufer0!=EMPTY_VALUE) {          //не нужно для iFrctals()данной проверки условий
            a2+=1;                           //к числу фракталов добавляем 1
            frac=1;                          //флаг - фрактал есть
            frac1++;                         //счетчик увеличиваем на 1
         }
      }
      if(iFractals(NULL, 0, MODE_LOWER, i)>0) {            
         if (Bufer0!=EMPTY_VALUE) {          //не нужно для iFrctals() данной проверки условий
            if(a2==0){              
               frac1++;                      //счетчик увеличиваем на 1 
               frac=1;                       //флаг - фрактал есть
            }
            a2+=-1;                          //к числу фракталов добавляем -1(т. е. уменшаем)
         }
      } 
      if (frac==0){continue;}                // если флага нет (фрактал не найден)
      if (frac1==1){                         //если счетчик равен 1,
         a1=a2; 
         continue;
      }          
      a3=a1+a2;
      if(a3<0)           { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; continue;}//Два фрактала вниз  подряд найдено// 
      if(a3>0)           { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; continue;}//Два фрактала вверх подряд найдено //
      if(a3==0 && a1==0) { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; }// Два фрактала подряд вверх и два фрактала подряд вниз найдено //
   } 

 
gince:


...

Ich entschuldige mich für die Fehler. Seien Sie nicht zu streng mit mir.


Ich wundere mich nur, es ist ein komisches Phänomen.
 
Integer:

Ich wundere mich nur, es ist ein komisches Phänomen.

Danke für die Korrektur.
 
if(!SL==0)
   {
  dollarsPerPip = lot/SL;
   }

Wer macht so etwas?

if(SL>0) dollarsPerPip = lot/SL;

Warum sich mit vielen { }?? herumschlagen und den Prozess verlangsamen...

alternativ ...

if(SL) dollarsPerPip = lot/SL;
 
gince:


Die Suchmethoden im Indikator und im Expert Advisor sind unterschiedlich - der Indikator rechnet vom Ende zum Anfang, von der Vergangenheit zur Gegenwart, und der Expert Advisor durchsucht die Balken von der Gegenwart zur Vergangenheit .

for (i=kilkict;i>0;i--)

Ergebnis - zwei Hochs -> Verkaufen (Pfeil nach unten), zwei Tiefs -> Kaufen (Pfeil nach oben). Das Signal erscheint +2 Balken rechts vom Fraktal. Das würde ich gerne zu Beginn der Geschichte visuell sehen. Und wahrscheinlich werden wir einen Filter brauchen.

Dann stellt sich die Frage: Warum wollen Sie sich die Mühe machen, diesen Indikator zu schreiben, wenn Sie sich nur die Geschichte ansehen wollen? Sie haben einen Link zum Articulus-Indikator erhalten. Es tut genau das, was Sie wollen:

//+------------------------------------------------------------------+
//|                                                    iFractals.mq4 |
//|                             Copyright © 2010, EGEN Software LTD. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright   "Copyright © 2010, EGEN Software LTD."
#property link        "http://www.metaquotes.net"

#property indicator_chart_window

#property indicator_buffers   2
#property indicator_color1    Lime
#property indicator_color2    Red
#property indicator_width1    2
#property indicator_width2    2

datetime TIME; double F,F1,F2;

double WAVE.0[];
double WAVE.1[];

bool EQ(int value1, int value2)
{
   return(value1==value2);
}

bool ZERO(int value)
{
   return(EQ(value,0));
}

int MathSign(double value1, double value2)
{
   if(value1<0)
      if(value2<0) return(-1);
   if(value1>0)
      if(value2>0) return(1);
   return(0);
}

bool TOTAL(int index)
{
   return(index<Bars);
}

double FRACTALS(int mode, int shift)
{
  return(iFractals(NULL,0,mode,shift));
}

double UPPER(int shift)
{
   return(FRACTALS(MODE_UPPER,shift));
}

double LOWER(int shift)
{
   return(FRACTALS(MODE_LOWER,shift));   
}

int PEAK(int shift)
{
   int peak=0;
   double F1=UPPER(shift); 
   if(F1>0) peak++;
   double F2=LOWER(shift); 
   if(F2>0) peak--;
   F=F1+F2; 
   return(peak);
}

void init()
{
   IndicatorBuffers(2);
   SetIndexBuffer(0,WAVE.0);
   SetIndexStyle(0,DRAW_ARROW,EMPTY);  
   SetIndexArrow(0,236);    
   SetIndexBuffer(1,WAVE.1);
   SetIndexStyle(1,DRAW_ARROW,EMPTY);      
   SetIndexArrow(1,238);
   IndicatorDigits(Digits);
   IndicatorShortName("iFractals");  
}

bool F1(int shift)
{
   int peak=PEAK(shift);
   if(ZERO(peak)) return(false); 
   F1=F*peak;
   return(true);
}

int WAVE.1(int shift)
{   
   for(int i=shift; TOTAL(i); i++) 
      if(F1(i)) break; 
   return(i);
}

bool F2(int shift)
{
   int peak=PEAK(shift);
   if(ZERO(peak)) return(false); 
   F2=F*peak;
   return(true);
}

int WAVE.2(int shift)
{   
   for(int i=shift; TOTAL(i); i++) 
      if(F2(i)) break; 
   return(i);
}

void WAVE(int shift)
{
   WAVE.0[shift]=EMPTY_VALUE;
   WAVE.1[shift]=EMPTY_VALUE;
   shift=WAVE.1(shift); 
   int index=shift; shift++;
   shift=WAVE.2(shift);
   int wave=MathSign(F1,F2);
   F1=MathAbs(F1);
   F2=MathAbs(F2);
   if(wave<0) 
      if(F1<F2) WAVE.1[index]=F1; else WAVE.0[index]=F1;                  
   if(wave>0) 
      if(F1>F2) WAVE.0[index]=F1; else WAVE.1[index]=F1;       
}   

void CheckWave()
{
   for(int i=3; TOTAL(i); i++) WAVE(i);
}   

void start()
{
   CheckWave();
}

Stellen Sie die Geschichten zusammen und sehen Sie sie sich an. Ziehen Sie dann Schlussfolgerungen.

Oder ist "in einer Hängematte stehen" bequemer?

 
artmedia70:

Dann stellt sich die Frage: Warum quälen Sie sich mit dem Schreiben dieses Indikators, wenn Sie sich die Geschichten nur ansehen wollen? Sie haben einen Link zum Articulus-Indikator erhalten. Es tut genau das, was Sie wollen:

Kompilieren Sie sie und sehen Sie sich den Verlauf an. Und dann Schlussfolgerungen ziehen.

Oder ist "in einer Hängematte stehen" bequemer?



und Sie verfolgen die Logik des Truthahns ))

Sie brauchen keine 20 Funktionen, um das herauszufinden, oder?

 
VOLDEMAR:

Wer tut so etwas?

Warum sich mit vielen { }?? herumschlagen und den Prozess verlangsamen...

alternativ ...


Komisch, das wusste ich gar nicht, das muss ich mir mal ansehen.
 
ALXIMIKS:


und Sie verfolgen die Logik des Truthahns ))

Sie langweilen sich nicht bei 20 Funktionen???

Jede Funktion liefert dort ein Ergebnis, das auf einen Blick verständlich ist. Ich kann mich nicht mit einem Blick verzetteln. Es ist so klar wie der Tag. Außerdem, was braucht er? Er muss sich mit Geschichten befassen, nicht mit Code.
 
VOLDEMAR:

Wer tut so etwas?

Warum sich mit vielen { }?? herumschlagen und den Prozess verlangsamen...

Das ist eine Möglichkeit, es zu tun.

Danke für die Korrektur.

Ich habe diese dumme Angewohnheit

beim Schreiben einer bedingten Anweisung

um gleich Klammern zu setzen.