Hilfe bei der Codierung - Seite 701

 
AtApi:

Hallo Jungs und Code-Gurus,

ich bin auf der Suche nach einem einfachen Indikator, der seine eigenen Werte aus einer CSV-Datei aufzeichnet. Kann mir bitte jemand helfen?

Vielen Dank im Voraus!

Was bedeutet der "eigene Wert"?
 
mladen:
Was bedeutet der "eigene Wert"?

Danke mladen,

Lassen Sie mich ein bisschen besser erklären: Ich brauche einen Indikator, der aus einer CVS-Datei liest und die Werte in einem Unterfenster anzeigt. Die CVS-Datei enthält 2 durch Komma getrennte Werte, der erste Wert ist das Datum und der zweite ist der tatsächliche Wert, den der Indikator anzeigen soll.

zum Beispiel

Der CVS sieht wie folgt aus:

date,value
2016.10.26.05.55,126.845
2016.10.26.05.50,126.848
2016.10.26.05.45,126.844
2016.10.26.05.40,126.82
2016.10.26.05.35,126.816
2016.10.26.05.30,126.81

der Indikator wird den Wert entsprechend dem Datum darstellen

Ich hoffe, es ist jetzt etwas klarer...

Danke für deine Hilfe, mein Freund!

 

Lieber Freund,

ich brauche eine Kodierung,

Kerze schließen dann, wenn Kerze ist UP dann AlarmUP und Kerze ist DOWN dann AlarmDOWN jeder Zeitrahmen

wenn Sie pls teilen Sie mich haben,

Ich danke Ihnen im Voraus,

- jesing

 
AtApi:

Danke mladen,

Lassen Sie mich ein bisschen besser erklären: Ich brauche einen Indikator, der aus einer CVS-Datei liest und die Werte in einem Unterfenster anzeigt. Die CVS-Datei enthält 2 durch Komma getrennte Werte, der erste Wert ist das Datum und der zweite ist der tatsächliche Wert, den der Indikator anzeigen soll.

zum Beispiel

Der CVS sieht wie folgt aus:

Zeit,Wert

2016.10.26.21.20,127.765

2016.10.26.21.15,127.777

2016.10.26.21.10,127.777

2016.10.26.21.05,127.799

2016.10.26.21.00,127.791

2016.10.26.20.55,127.788

Der Indikator wird den Wert entsprechend dem Datum darstellen.

Ich hoffe, es ist jetzt etwas klarer...

Danke für deine Hilfe mein Freund!

Das ist, was ich bisher erreicht habe:

extern   string   FileName    = "AUDCAD.CSV";
datetime   dt[9999];
double     val[9999];

string     arr[2];    

int h = FileOpen(FileName, FILE_CSV|FILE_READ,'~');
  if (h==0)   Comment("File "+FileName+" not found.");

  
  for (int c=0; !FileIsEnding(h) && c<9999; c++)  {

  
    string tmp = FileReadString(h);
    if (FileIsEnding(h))  break;
    StrToStringArray(tmp,arr,",");
    dt[c]  = StrToTime(arr[0]);  // <==== This should convert the date value (in the format of "yyyy.mm.dd hh:mi") to datatime type and assign it to the array
    val[c] = StrToNumber(arr[1]); // <==== This will assign the value to the array
   

  }
  FileClose(h);

//+------------------------------------------------------------------+
void StrToStringArray(string str, string &a[], string delim=",")  {
//+------------------------------------------------------------------+
  int z1=-1, z2=0;
  for (int i=0; i<ArraySize(a); i++)  {
    z2 = StringFind(str,delim,z1+1);
    a[i] = StringSubstr(str,z1+1,z2-z1-1);
    if (z2 >= StringLen(str)-1)   break;
    z1 = z2;
    
  }
}
//+------------------------------------------------------------------+
double StrToNumber(string str)  {
//+------------------------------------------------------------------+
// Usage: strips all non-numeric characters out of a string
  int    dp   = -1;
  int    sgn  = 1;
  double num  = 0.0;
  for (int i=0; i<StringLen(str); i++)  {
    string s = StringSubstr(str,i,1);
    if (s == "-")  sgn = -sgn;   else
    if (s == ".")  dp = 0;       else
    if (s >= "0" && s <= "9")  {
      if (dp >= 0)  dp++;
      if (dp > 0)
        num = num + StrToInteger(s) / MathPow(10,dp);
      else
        num = num * 10 + StrToInteger(s);
    }
  }
  return(num*sgn);
}
Ich bin mir nicht sicher, warum, wenn ich dt[c] ausdrucke , es immer den gleichen Wert zurückgibt..als ob sich die Zeit nie ändert, auch wenn sich arr[0] bei jeder Iteration der Schleife ändert...
Danach sollten wir den Wert dem Bar mit dieser Zeit zuordnen..aber ich stecke fest...

	          
 
AtApi:
AtApi:

Danke mladen,

Lassen Sie mich ein bisschen besser erklären: Ich brauche einen Indikator, der aus einer CVS-Datei liest und die Werte in einem Unterfenster anzeigt. Die CVS-Datei enthält 2 durch Komma getrennte Werte, der erste Wert ist das Datum und der zweite ist der tatsächliche Wert, den der Indikator anzeigen soll.

zum Beispiel

Die CVS-Datei sieht wie folgt aus:

Zeit,Wert

2016.10.26.21.20,127.765

2016.10.26.21.15,127.777

2016.10.26.21.10,127.777

2016.10.26.21.05,127.799

2016.10.26.21.00,127.791

2016.10.26.20.55,127.788

Der Indikator wird den Wert entsprechend dem Datum darstellen.

Ich hoffe, es ist jetzt etwas klarer...

Danke für deine Hilfe mein Freund!

Das ist was ich bis jetzt erreicht habe:

Nevermind i have solved the problem....the SrtToTime only accept string with this format: "yyyy.mm.dd hh:mi" that means that i was loading a CSV with this format instead "yyyy.mm.dd hh.mi" and obviously was giving me a error.. anyway i solved!!!
 

hallo

Herr mladen:

könnte es für den neuen mt4 build aktualisieren

beste Grüße

Dateien:
 

Kann mir jemand helfen, diese 3 Probleme zu beheben?

1. den Trailing-Fehler beheben

2.entfernen Sie den zweiten Zeitrahmenfilter, das System wird auf 30m Chat laufen

3.fügen Sie den beigefügten Indikator als Filter für den 1D-Chat hinzu

 

@Liebe Freunde,

Mein ea gibt den folgenden Fehler,.

"EURUSD+,M5: unknown ticket 21847676 for OrderDelete function"

Was bedeutet dieser Satz? Was ist das Problem und was kann ich tun?

 
oguz:

@Liebe Freunde,

Mein ea gibt das folgende Problem.

"EURUSD+,M5: unbekanntes Ticket 21847676 für StringConcatenate(function"

Was bedeutet dieser Satz? Was ist das Problem?

Was kann ich tun?

Es bedeutet, dass es keinen Auftrag mit der Ticketnummer 218476 finden kann, den es löschen kann.

Entweder :

  • die Ticketnummer ist falsch
  • oder der Auftrag wurde in der Zwischenzeit bereits gelöscht (zwei EAs, oder die Schleife hat nicht richtig geprüft, oder etwas ähnliches ...)
 

hallo herr mladen

könnten Sie mir helfen, diesen Indikator in einemseparaten MTF-Diagramm ähnlich diesem Bild darzustellen?

siehe

Dateien:
xb4d_2.mq4  4 kb