[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 640

 

Ich kann nicht herausfinden, was mit den Arrays falsch ist (die Bedingung ist einfach - Kauf/Verkauf nach der nächsten Spitze des geglätteten CCI):

Die Strategie wird ohne Fehler kompiliert und schreibt beim Start nichts in das Protokoll, aber es werden keine Aufträge erteilt.

   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);
   
   double c1s[];
   ArrayResize(c1b,PeriodS);
   for(i=1;i<=PeriodS;i++)
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+3);


   if (c1s_1>c1s_2&&c1s_2<c1s_3)
     {                                          //
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
   if (c1b_1<c1b_2&&c1b_2>c1b_3)
     {                                          //
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }
 


double c1s[];
ArrayResize(c1b,PeriodS)

Sie deklarieren ein Array und ändern ein anderes.

 
Roger:


double c1s[];
ArrayResize(c1b,ZeitraumS)

Sie deklarieren ein Array und ändern ein anderes.


Danke, was ist sonst noch falsch - hat nicht geholfen.
 

Das Array beginnt mit einem Nullelement, so dass der Ausdruck

for(i=1;i<=PeriodS;i++)

überspringt die Null und schreibt nichts in den letzten Eintrag.

wird nur noch dieser Ausdruck in der Schleife ausgeführt

c1b[i]=iCCI(NULL,0,ZeitraumB,PRICE_TYPICAL,i);

der Rest ist bedeutungslos, da nach der Schleife i gleich Maximum ist und somit alle Werte Null sind.

 
Craft:

was sonst noch falsch ist


Der Vergleich von Doppelwerten ohne Normalisierung ist falsch... Versuchen Sie es auf diese Weise:

   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);
   
   double c1s[];
   ArrayResize(c1b,PeriodS);
   for(i=1;i<=PeriodS;i++)
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+3);


   if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
     {                                          //
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
   if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
     {                                          //
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

 
DDFedor:


Der Vergleich von Doppeln ohne Normalisierung ist falsch... Versuchen Sie es auf diese Weise:


Danke für die Hilfe, Brüder, es funktioniert immer noch nicht.
 
Roger:

Das Array beginnt mit einem Nullelement, so dass der Ausdruck

for(i=1;i<=PeriodS;i++)

überspringt die Null und schreibt nichts in den letzten Eintrag.

wird nur noch dieser Ausdruck in der Schleife ausgeführt

c1b[i]=iCCI(NULL,0,ZeitraumB,PRICE_TYPICAL,i);

der Rest ist bedeutungslos, da nach der Schleife i gleich Maximum ist und somit alle Werte Null sind.


Was soll ich dann tun? Versucht for(i=0;i<=PeriodS;i++) - hat nicht funktioniert.
 
Craft:

Was dann?

Setzen Sie an jedem Codepunkt Drucker auf jede Variable und sehen Sie in den Protokollen nach, was bei jedem Schritt passiert.
 

Hallo, kann ich Ihnen eine Frage stellen? Wenn ich symbol() in der Funktion open in der Demo schreibe, aber wenn ich es in ein Symbol ändere, zum Beispiel EURUSD, erhalte ich Fehler 133.
{Alert("!");}else{Alert("?");} - Er gibt "!" aus, d.h. der Handel ist erlaubt... und gleichzeitig 133. Was ist das Problem? Kein EA öffnet einen Handel, wenn ich ein bestimmtes Symbol in der Open-Funktion angebe... Ich habe alles versucht.

Ich danke Ihnen im Voraus. ich bin hier, um das Forum nicht zu überladen ))

 
artmedia70:
Wer sagt, dass es sich um Umkehrungen und nicht um Korrekturen handelt?

Tut mir leid, ich habe nicht sofort geantwortet, mein Notebook hat sich komplett verabschiedet. Ich hoffe, der Zahn tut nicht mehr weh, das ist eine beängstigende Sache. Mein Geständnis, ich gebe dem Babon die Schuld, er funktioniert einwandfrei und der Indikator NMAZZ ist schuld, ich weiß nicht mehr, wo ich ihn heruntergeladen habe, aber er funktioniert noch auf einem Chart, aber ich habe ihn auf drei Charts installiert (5M, 30M, 4H) und das war's, der Computer ist komplett eingefroren, oder besser gesagt das Terminal. Ich habe begonnen, die Indikatoren nach und nach aus den Diagrammen zu entfernen und dabei diesen Fehler gefunden. Ich weiß nicht, was mit diesem Indikator nicht stimmt, aber am Anfang funktionierte er gut. Und über die Umkehrung oder Korrektur, ja Sie haben Recht, es ist immer eindeutig eine Umkehrung, aber wenn bei 30M, 1H und 4H der Staffelstab die Farbe ändert, wenn nicht eine Umkehrung, dann Korrektur ist eindeutig und Sie können einige Gewinne machen.
Grund der Beschwerde: