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

 
sibemol >> :

Danke für die Antwort, ich werde es ausprobieren und Ihnen die Ergebnisse mitteilen.

Ich habe nur ein paar Dinge als Anregung hinzugefügt.


//+------------------------------------------------------------------+
//| CopyBars.mq4 |
//| Copyright © 2009, Sorento |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Sibemol & Sorento" // :)
#property link "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 White
//---- input parameters
extern int Max_Length=9;
double v1[];int pos, hFile;datetime CurentT;
string O="CB", strng, F=";", Filler="0000000000000000";
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
string Name_File;
Name_File=StringConcatenate(O,Symbol(),TimeYear(Time[0]),"_",TimeMonth(
Time[0]),"_",TimeDay(Time[0]),"x",TimeHour(iTime(NULL,1,0)),"_",
TimeMinute(iTime(NULL,1,0)),".CSV");
Print ("Bars in ",Name_File," start!");
hFile=FileOpen(Name_File,FILE_CSV |FILE_WRITE,F);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,v1);
strng=StringConcatenate("<ticker>",F,"<per>",F,"<date>",F,"<time>",F,"<open>",F,"<high>");
strng=StringConcatenate(strng,F,"<low>",F,"<close>",F,"<volume>",F,"<oi>",F);
pos=pos+StringLen(strng);
FileWrite(hFile,strng);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
FileClose(hFile);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(), limit;
//----- первый вызов
if (counted_bars==0)
{CurentT=Time[0];// при записи может закрыться текущий бар и появится новый
limit=Bars-1;
CurentT =FilesWR(limit,1);
//----
return(0);
}
//---- последующие
if (counted_bars>0)
if (CurentT<Time[0])
{// мог быть обрыв связи - нужно найти последний и может еще не обновлённый бар
limit=iBarShift(NULL,Period(),CurentT,false);
CurentT=Time[0];// при записи может закрыться текущий бар и появится новый
FilesWR(limit+1,0);
}
else FilesWR(1,0); //бар еще текущий
//-----
return(0);
}
//+------------------------------------------------------------------+
datetime FilesWR(int startBar,int code){

int codec=code;

for(int i=startBar; i>=0; i--)
{
v1[i]=Close[i];
int _Year=TimeYear(Time[i]),
_Month=TimeMonth(Time[i]),
_Day=TimeDay(Time[i]),
_Hour=TimeHour(Time[i]),
_Minute=TimeMinute(Time[i]);

string Y, M, D, H, Mi, Date, _Time;

if(_Month<10) M="0"+DoubleToStr(_Month, 0); else M=DoubleToStr(_Month, 0);
if(_Day<10) D="0"+DoubleToStr(_Day, 0); else D=DoubleToStr(_Day, 0);
if(_Hour<1) H="00";
else if(_Hour<10 ) H="0"+DoubleToStr(_Hour, 0);
else H=DoubleToStr(_Hour, 0);
if(_Minute<1)Mi="00";
else if(_Minute<10) Mi="0"+DoubleToStr(_Minute, 0);
else Mi=DoubleToStr(_Minute, 0);
Date=DoubleToStr(_Year, 0)+M+D;
_Time=H+Mi;

strng=StringConcatenate(Symbol(),F, Period(),F, Date,F, _Time,F,
DS(Open[i]),F,DS(High[i]),F, DS(Low[i]),F,DS( Close[i]),F,IS( Volume[i],10),F);
pos=+StringLen(strng);// можно заранее просчитать длину и использовать предопределённую константу
if (codec==0)
{//обновим предпоследний бар тоже
FileSeek(hFile,pos-StringLen(strng),SEEK_SET);
codec=+1;
}

FileWrite(hFile,strng);// при записи может закрыться текущий бар и появится новый
if ( CurentT<Time[0]) i=+1;// сместим индексы

}
CurentT=Time[0];
FileFlush(hFile);
return ;
}
//----------Быстрая коричневая сука----------
//----------12345678901234567890----------!!!
string DS(double value)
{
string strng=DoubleToStr(value,Digits);
int k=StringLen(strng);
int l=StringFind(strng,".")+Digits+1;
if (l<k)
{ strng=StringConcatenate(strng,StringSubstr(Filler,0,k-l));k=2*k-l;}
int i=Max_Length-k;// add char
return (StringConcatenate(StringSubstr(Filler,0,i+1),strng));
}
string IS(int iValue, int Max_Length)
{
string strng=DoubleToStr(iValue,0);
int k=StringLen(strng);
int i=Max_Length-k;// add 0
return (StringConcatenate(StringSubstr(Filler,0,i+1),strng));
}
 

Die Optimierung endete mit der folgenden Meldung:

There were 60 passes done during optimization
optimization stopped, 140 cache records were used, 140 cache records rejected

In diesem Fall war es das Fenster mit den Einstellungen:

200 / 1 280 (200)


1. Kann jemand erklären, was diese Zahlen bedeuten und wie sie zustande gekommen sein könnten? (60, 140, 200, 1280)

2. Wenn z. B. zwei Parameter optimiert werden und die Anzahl der möglichen Kombinationen 15 bzw. 20 beträgt - wo würden sie (unter diesen Zahlen) sichtbar sein?

3) Gibt es eine Begrenzung der Anzahl der Optimierungszyklen? (Würden alle Kombinationen garantiert berücksichtigt werden?).

Ich danke Ihnen!

 

Wie kann ich eine Beschreibung der Ebenen des Fibo-Objekts in den Eigenschaften verfügbar machen? Wie die Werte im Code einzustellen sind, ist klar:

      ObjectSet("fibo", OBJPROP_FIBOLEVELS,8);
      ObjectSet("fibo", OBJPROP_FIRSTLEVEL+0,0.0);
      ObjectSet("fibo", OBJPROP_FIRSTLEVEL+1,0.382);
      ObjectSet("fibo", OBJPROP_FIRSTLEVEL+2,0.618);
      ObjectSet("fibo", OBJPROP_FIRSTLEVEL+3,1.0);
      ObjectSet("fibo", OBJPROP_FIRSTLEVEL+4,1.382);
      ObjectSet("fibo", OBJPROP_FIRSTLEVEL+5,1.618);
      ObjectSet("fibo", OBJPROP_FIRSTLEVEL+6,2.0);
      ObjectSet("fibo", OBJPROP_FIRSTLEVEL+7,2.618);

Aber die Beschreibung? Oder ist sie nicht über den Code verfügbar?

 

Sorento, herzlichen Dank! Sobald das Wochenende vorbei ist, werde ich sicher sein, Ihre Version und alsu zu überprüfen.

2alsu: Ich bin mit den Feldern durcheinander gekommen und habe sie als Strings gezählt )).

 
sibemol >> :
Sorento, herzlichen Dank! Sobald das Wochenende vorbei ist, werde ich auf jeden Fall Ihre Variante und alsu überprüfen.

Dies ermöglicht es Ihnen, sich auf die Fehlersuche in nur zwei Situationen zu konzentrieren.

die Bar ist noch alt

und es gibt eine neue.

Wenn es einen neuen Balken gibt, müssen Sie den fertig geformten Balken aktualisieren.

es gibt etwas zu optimieren.

Und prüfen Sie, ob der Algorithmus einen Link überspringt und damit künstlich ein Stück der Geschichte verliert.


Viel Glück auf Ihrem Weg.


PS. Ich glaube, ich muss zwei Längen zurückschalten. Überlegen Sie es sich.

 
Sorento, überprüfte den Code ohne etwas auf dem stehenden Markt zu ändern. Die Zeilen sehen wie folgt aus: EURUSD;15;20091224;1830;0001.43580;0001.43625;0001.43566;0001.43611;00000000163; EURUSD;15;20091224;1845;0001.43612;0001.43612;0001.43536;0001.43538;00000000180; und die beiden letzten Balken werden am Anfang der Datei geschrieben (dupliziert). Ich werde ihn verschieben müssen. Ich werde Ihren Code studieren. Ich danke Ihnen.
 

Führende und auffüllende Nullen nach DoubleToStr(value,Digits) sind für die Längenkonstanz erforderlich - das war das Problem.

Sie können vom Ende aus nach Positionen suchen. ;)

Viel Glück bei Ihrer Suche.

 

2Sorento:

In Ihrem Code.

int start()
{
int counted_bars=IndicatorCounted(), limit;
//----- первый вызов
if ( counted_bars==0)
{ CurentT=Time[0];// при записи может закрыться текущий бар и появится новый
limit=Bars-1;
CurentT = FilesWR( limit,1);
//----
//return(0);

Ich habe return(0) entfernt, dann wurde die Datei so geschrieben, wie sie sein sollte, nur gibt es keine Werte für das letzte <oi>-Feld, das in allen Datensätzen 0 enthält, aber das ist nichts, ich werde es beheben. Jetzt müssen wir die Bewegung überprüfen. Nochmals vielen Dank.

ZS Gibt es keine Möglichkeit, führende Nullen in den Preisfeldern zu entfernen? Es scheint die Länge nicht zu beeinflussen.

 
Svinozavr >> :

Wie kann ich eine Beschreibung der Ebenen des Fibo-Objekts in den Eigenschaften verfügbar machen? Wie die Werte im Code einzustellen sind, ist klar:

Und die Beschreibung? Oder ist sie nicht über den Code zugänglich?


Dank an Sorento - vorgeschlagen ObjectSetFiboDescription.

Frage entfernt.

 
sibemol >> :

2Sorento:

In Ihrem Code.

Return(0) entfernt, dann wird die Datei so geschrieben, wie sie sollte, nur gibt es keine Werte im letzten <oi>-Feld, das in allen Datensätzen 0 enthält, aber das sind Kleinigkeiten, ich werde es herausfinden. Jetzt müssen wir die Bewegung überprüfen. Nochmals vielen Dank.

ZS Gibt es keine Möglichkeit, führende Nullen in den Preisfeldern zu entfernen? Das scheint keinen Einfluss auf die Länge zu haben.

Goldlauf. 1140 и 980

Satzlängenänderungen.

und <oi> ich habe es wegen mangelnder Nutzung entfernt ;)

Grund der Beschwerde: