Wer will eine Strategie? Lose und kostenlos) - Seite 52

 
Miroslav_Popov писал(а) >>

Generator repariert. Ersetzen Sie Ihre Exe durch diese.


Der Generator setzt manchmal Indikator Periode + Shift > Bar Count;

Ich bin bereits verwirrt. :)

Neue Version.

Nachdem die Anzahl der Takte auf 300 reduziert wurde, funktioniert der Generator und kann mit der Schaltfläche Stop gestoppt werden.

'

Alte Version (schnell von der Website heruntergeladen)

Aber wenn die Anzahl der Balken < 1000 ist, dann bleibt der Generator hängen.

'

IMHO ist es besser, sich an die 1000-bar-Grenzwertanforderung für das Prüfgerät zu gewöhnen, aber die Bequemlichkeit, das Intervall zu wählen.

'

 
SergNF писал(а) >>

Ich bin bereits verwirrt. :)

'

Alte Version (schnell von der Website heruntergeladen)

Aber wenn die Anzahl der Balken < 1000 ist, bleibt der Generator hängen.

'

Der glückliche Gedanke an die "alte Version" erwies sich als falsch.

D.h. das Bild ist dasselbe wie bei der neuen Version. (d.h. die Anzahl der Balken hat höhere Priorität als das Datum DO!!!!)

'

'

Hoppla

if ( bUseStartDate && aBar[ iTempStartBar].Time < dtStartingDate)
{   // We need to cut out the oldest bars
 for (int iBar = iTempStartBar; iBar < iTempBars - MINIMUMBARS; iBar++)
 {

Ist es richtig, dass die Schleife bis iTempBars - MINIMUMBARS geht, d.h. bis zur maximalen Anzahl von Balken iTempBars = iMaxBars; vom Beginn der Historie an?

In meinen Verlaufsdateien sind weit über 50 000 Zeilen und in diesem Intervall von iTempStartBar = iBars - iMaxBars bis iMaxBars- MINIMUMBARS kann einfach kein Datum bestellt werden?!

Logischerweise sollten das Enddatum und das Startdatum bis zum Ende der gesamten Geschichte gesucht werden, d.h. bis zum iBars ??

Die Endleiste wird jedoch korrekt gefunden.

int  iTempEndBar   = iBars - 1;
for (int iBar = iTempStartBar + MINIMUMBARS; iBar < iTempEndBar; iBar++
 
SergNF >> :

Zu Ihren Bildschirmfotos:

1. Die Option "Daten entfernen, die älter sind als der 1. September 2008" wird ignoriert, da es weniger als 300 Balken bis zum 1. Januar 2009 gibt.

2. "Daten vor dem 1. Januar 2009 entfernen" - es scheint, dass es keine Daten für den 1. Januar gibt FSB schneidet alle Balken ab dem 01.01.08 aus, einschließlich . Aus diesem Grund begrenzt FSB die Barren bis zum 31.12.08.


(D.h. die Anzahl der Balken hat höhere Priorität als das Datum BEFORE!!!!)

Ganz genau.

 
Miroslav_Popov писал(а) >>

1. "Daten, die älter als der 1. September 2008 sind, werden ignoriert, da es bis zum 1. Januar 2009 weniger als 300 Balken gibt.

2. "Daten vor dem 1. Januar 2009 entfernen" - es scheint, dass es keine Daten für den 1. Januar gibt. Aus diesem Grund begrenzt FSB die Barren bis zum 31.12.08.

Jetzt nicht mehr.

Ich zeige jetzt die Uhr.

In Datei 63291(iBars) die Zeilen vom 1999-01-04 bis 2009-03-18

Datum 2008-09-01 ist Zeile 59 973

Das Datum 2009-01-02 steht in Zeile 62 021.

D.h. Wenn das Programm nach dem Startdatum sucht, "läuft" der Zyklus von Takt 63 291 - 50 000 = 13 291(iTempStartBar = iBars - iMaxBars; ) bis Takt 50 000 - 300 = 49 700(iTempBars - MINIMUMBARS) und findet mein "Vorher"-Datum (Takt 59 973) nicht, so dass(iTempStartBar = iBars - iMaxBars;) Starttakt = 63 290 - 50 000 = 13 290.

In meiner Datei ist es 2001-02-21 12:00 (+/- 300, was der Zahl entspricht)

Datei beigefügt.

Dateien:
eurusd60.rar  702 kb
 

iBars<= 50.000

FSB importiert die neuesten 50.000 Balken aus der Datendatei.

Also:

Datum 2008-09-01 ist Zeile 59 973

Datum 2009-01-02 ist Zeile 62 021

liegen außerhalb der geladenen Daten. Sie werden von Data Horizon nicht berücksichtigt.



Ops. Ich habe mich geirrt.

 
Miroslav_Popov писал(а) >>

iBars <= 50.000

FSB importiert die neuesten 50.000 Balken aus der Datendatei.

Also:

Datum 2008-09-01 ist Zeile 59 973

2009-01-02 ist Zeile 62 021

liegen außerhalb der geladenen Daten. Sie werden von Data Horizont nicht berücksichtigt.

neueste !!!!, d.h. von 13.291 bis 63 291!!!!! und sucht jetzt von 0 bis 50.000 (gerundet ;) )

Keine Einigung. :( Schade :(

Allerdings scheint es mir korrekter zu sein, iTempStartBar ;iBar < iTempBars - MINIMUMBARS; iBar++) durch iTempEndBar anstellevon iTempBars - MINIMUMBARS zuersetzen .Und der ganze Block "// Die maximale Anzahl der Balken festlegen" ist überflüssig, wenn AND bUseStartDate=True AND bUseEndDate=True

'

Aber wie gesagt, ich bestehe nicht darauf. :( (Ich schneide die Datei, obwohl für Minutien kann es gut wollen, um die Strategie auf den letzten 50 000 Bars zu optimieren und überprüfen Sie es auf die nächsten 10 000 Bars.

:(

SZY: Es gibt immer noch einen Fehler im Code und er entspricht nicht dem Schema!!!!! (mein Intervall ist auf der rechten Seite und nicht auf der linken Seite) :(

 

Denken wir mal darüber nach.


Geben Sie mir den gewünschten Code. Ich werde es in das Programm einfügen und wir werden es testen.

 
Miroslav_Popov писал(а) >>

Denken wir mal darüber nach.

Geben Sie mir den gewünschten Code. Ich werde es in das Programm einfügen und wir werden es testen.

Ein Ausschnitt Ihres Codes von den vorherigen Seiten.

// Set the maximum nuber of bars
// if (iBars > iMaxBars && iMaxBars >= MINIMUMBARS)
// {   // We need to cut out the oldest bars
//  iTempBars     = iMaxBars;
//  iTempStartBar = iBars - iMaxBars;
//  bChange       = true;
// }
// Или оставить 
// только если && bUseStartDate=False && bUseEndDate=False 
// или && (bUseStartDate=False || bUseEndDate=False)
// сам не представляю, но весь блок "сбивает"



// Set the starting date
DateTime dtStartingDate = new DateTime( iStartYear, iStartMonth, iStartDay);
if ( bUseStartDate && aBar[ iTempStartBar].Time < dtStartingDate)
{   // We need to cut out the oldest bars
 for (int iBar = iTempStartBar; iBar < iTempEndBar; iBar++)
 {
  if ( aBar[ iBar].Time >= dtStartingDate)
  {
   iTempStartBar = iBar;
   iTempBars     = iTempEndBar - iTempStartBar + 1;
   bChange       = true;
   break;
  }
 }
}

Как вариант, после
// Set the maximum nuber of bars
if (iBars > iMaxBars && iMaxBars >= MINIMUMBARS)
{   // We need to cut out the oldest bars
 iTempBars     = iMaxBars;
 iTempStartBar = iBars - iMaxBars;
 bChange       = true;
}
if (bUseStartDate)
{   
 iTempStartBar = 0; 
}

hinzufügen

, aber für die Rücksetzung des Startdatums muss iTempStartBar!!!! sein
 
if (bUseStartDate)
{   
    iTempStartBar = 0; 
}
Wenn dtStartingDate vor iMaxBars liegt, wird dtStartingDate ignoriert und durch iMaxBars begrenzt.
 
Miroslav_Popov писал(а) >>
wenn dtStartingDate vor iMaxBars liegt, sollten Sie dtStartingDate ignorieren und durch iMaxBars begrenzen

Und ich denke, es sollte iMaxBars von dtStartingDate "nach rechts", so dass Sie die Fenstergröße von iMaxBars in der gesamten Datei bewegen können!

Wenn jedoch die Balken von dtStartingDate kleiner sind als die von iMaxBars, dann sollte dtStartingDate Vorrang haben, da Datumsangaben intuitiver sind als Balken. IMHO.

Und in der Regel setzt ein Benutzer ein "tick" bewusst, und Bars - standardmäßig, desto mehr, so ist es in das System (iMaxBars) eingebettet

'

ZS: Das Lustige ist, dass ich das Programm wahrscheinlich nicht benutzen werde :)