Qui veut une stratégie ? Lots et gratuitement) - page 52

 
Miroslav_Popov писал(а) >>

Générateur réparé. Remplacez votre exe par ceci.


Les groupes électrogènes indiquent parfois Période + Shift > Bar Count ;

Je suis déjà confus. :)

Nouvelle version.

Mais après avoir réduit le nombre de barres à 300, le générateur fonctionne et peut être arrêté avec le bouton Stop.

'

Ancienne version (rapidement téléchargée du site)

Mais, si le nombre de barres est inférieur à 1000, le générateur se bloque.

'

À mon avis, il vaut mieux s'habituer à la limite de 1000 bars exigée pour le testeur, mais à la commodité de pouvoir choisir l'intervalle.

'

 
SergNF писал(а) >>

Je suis déjà confus. :)

'

Ancienne version (téléchargée rapidement depuis le site web)

Mais, si le nombre de barres < 1000, le générateur se bloque.

'

Les pensées heureuses au sujet de l'"ancienne version" se sont avérées erronées.

C'est-à-dire que l'image est la même que dans la nouvelle version. (c'est-à-dire que le nombre de barres est plus prioritaire que la date DO !!!!).

'

'

Oups

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

Est-il correct que la boucle aille jusqu'à iTempBars - MINIMUMBARS, c'est-à-dire jusqu'au nombre maximum de barres iTempBars = iMaxBars; depuis le début de l'historique ?

Dans mes fichiers d'historique beaucoup plus de 50 000 lignes et dans cet intervalle de iTempStartBar = iBars - iMaxBars à iMaxBars- MINIMUMBARS ne peut tout simplement pas être ordonné date ?!

En toute logique, la date de fin et la date de début devraient être recherchées jusqu'à la fin de l'histoire, c'est-à-dire jusqu'aux iBars ???

Mais la barre de fin est trouvée correctement.

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

A propos de vos captures d'écran :

1. "Supprimer les données antérieures au 1er septembre 2008" est ignoré car il y a moins de 300 barres jusqu'au 1er janvier 2009.

2. "Supprimer les données plus récentes que le 1er janvier 2009" - il semble qu'il n'y ait pas de données pour le 1er janvier FSB supprime toutes les barres du 01.01.08 y compris . C'est pourquoi la FSB limite les barres jusqu'au 31.12.08.


(c'est-à-dire que le nombre de barres est plus important que la date BEFORE !!!!).

Exactement.

 
Miroslav_Popov писал(а) >>

1. L ' option "Supprimer les données antérieures au 1er septembre 2008" est ignorée car il y a moins de 300 barres jusqu'au 1er janvier 2009.

2. "Supprimer les données plus récentes que le 1er janvier 2009" - il semble qu'il n'y ait pas de données pour le 1er janvier. C'est pourquoi la FSB limite les barres jusqu'au 31.12.08.

Plus maintenant.

Je montre maintenant l'horloge.

Dans le fichier 63291(iBars) les lignes du 1999-01-04 au 2009-03-18

La date 2008-09-01 est la ligne 59 973

La date 2009-01-02 est la ligne 62 021.

I.e. lorsque le programme recherche la date de début, le cycle "tourne" de la barre 63 291 - 50 000 = 13 291(iTempStartBar = iBars - iMaxBars; ) à la barre 50 000 - 300 = 49 700(iTempBars - MINIMUMBARS) et ne trouvant pas ma date "avant" (barre 59 973), laisse(iTempStartBar = iBars - iMaxBars;) la barre de début = 63 290 - 50 000 = 13 290.

Dans mon fichier, il s'agit du 2001-02-21 12:00 (+/- 300, ce qui correspond à la figure).

Fichier joint.

Dossiers :
eurusd60.rar  702 kb
 

iBars<= 50,000

FSB importe les 50 000 barres les plus récentes du fichier de données.

Donc :

La date 2008-09-01 est la ligne 59 973

La date 2009-01-02 est la ligne 62 021

sont en dehors des données chargées. Data Horizon ne les prend pas en compte.



Ops. J'ai tort.

 
Miroslav_Popov писал(а) >>

iBars <= 50,000

FSB importe les 50 000 barres les plus récentes du fichier de données.

Donc :

La date 2008-09-01 est la ligne 59 973

2009-01-02 est la ligne 62 021

sont en dehors des données chargées. Data Horizont ne les prend pas en compte.

le plus récent ! !!!, c'est-à-dire de 13 291 à 63 291! !!!! et recherche maintenant de 0 à 50.000 (arrondi ;) )

Pas d'accord. :( Dommage :(

Bien qu'il me semble qu'il serait plus correct deremplacer iTempStartBar ;iBar < iTempBars - MINIMUMBARS; iBar++) par iTempEndBar à laplace de iTempBars - MINIMUMBARS. Et tout le bloc "// Définir le nombre maximum de barres" est redondant if AND bUseStartDate=True AND bUseEndDate=True

'

Mais encore une fois, je n'insiste pas. :( (Je vais couper le fichier, bien que pour des raisons de minutie, il pourrait bien vouloir optimiser la stratégie sur les 50 000 barres précédentes et la vérifier sur les 10 000 barres suivantes.

:(

SZY. Il y a encore une erreur dans le code et cela ne correspond pas au schéma !!!!!. (mon intervalle est à droite et non à gauche) :(

 

Réfléchissons-y.


Donnez-moi le code que vous voulez. Je vais le mettre dans le programme et nous allons le tester.

 
Miroslav_Popov писал(а) >>

Réfléchissons-y.

Donnez-moi le code que vous voulez. Je vais le mettre dans le programme et nous allons le tester.

Un extrait de votre code des pages précédentes.

// 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;
}

ajouter

if (bUseStartDate)
{   
 iTempStartBar = 0; 
}
Mais pour la réinitialisation de la date de début iTempStartBar doit être !!!!
 
if (bUseStartDate)
{   
    iTempStartBar = 0; 
}
Si dtStartingDate est antérieur à iMaxBars, ignorer dtStartingDate et limiter par iMaxBars
 
Miroslav_Popov писал(а) >>
si dtStartingDate est antérieur à iMaxBars vous devez ignorer dtStartingDate et limiter par iMaxBars

Et je pense qu'il devrait y avoir des iMaxBars à partir de dtStartingDate "vers la droite", afin que vous puissiez déplacer la taille de la fenêtre des iMaxBars dans tout le fichier !

Mais si, à droite, les barres dtStartingDate sont plus petites que iMaxBars, alors c'est dtStartingDate qui devrait avoir la priorité, car les dates sont plus intuitives que les barres. IMHO.

Et en général, un utilisateur met un "tick" délibérément, et des barres - par défaut, plus il est intégré dans le système (iMaxBars).

'

ZS. Le plus drôle, c'est que je n'utiliserai probablement pas le programme :)

Raison: