begin process at 2012 02 13 15:32:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

GROS problème d'agregation, j'ai besoin d'AIDE, SVP !!!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

GROS problème d'agregation, j'ai besoin d'AIDE, SVP !!!!

vendredi 1 septembre 2006 à 16:13:21 | GROS problème d'agregation, j'ai besoin d'AIDE, SVP !!!!

eupeup

Bonjour à tous, j'ai un gros problème avec un algo d'agregation àfaire en VBA sous Excel

 

Dans une feuille excel j'ai une liste avec une colonne comprenant des heures, une colonne comprenant des données (cours d'action), et une troisième colonne comprenant d'autres données (les volumes traités) :

04:45:36.145    85.4   150

04:45:36.141    85.4   260

04:45:36.139    85.3   320

04:45:36.138    85.2   140

04:45:36.134    85.1   169

 

Le but est d'agréger les trades de la manière suivante :

Tous les trades distants de moins d'un dixième de seconde sont agrégés en un seul trade si le cours est identiques entre les trades ou si l'évolution du cours est monotone.

Le volume obtenu pour chaque agrégation se calcule en faisant la somme des volumes des trades agrégés.

Et le cours obtenu pour chaque agrégation se calcule en faisant une moyenne pondérée des cours par les volumes et en arrondissant au centième.

 

Voila un exemple de ce que je souhaiterai obtenir :

 

04:45:36.145    85.4   150

04:45:36.141    85.4   260

04:45:36.139    85.3   320

04:45:36.138    85.2   140

04:45:36.136    85.1   169

04:45:36.124    85.1   150

04:45:36.046    85.1   260

04:45:36.040    85.1   320

04:45:36.039    85.2   140

04:45:36.027    85.2   169

04:45:36.023    85.3   260

04:45:36.019    85.1   320

04:45:36.017    85.1   140

04:45:35.920    85.1   169

 

Ainsi on va agrègé les 7 premiers trades ensembles puisqu'ils sont dans le même dixième de seconde et que les cours évoluent dans le même sens

On agrège ensuite les 4 trades suivant pour les mêmes raisons.

Enfin on agrege ensemble les trois derniers trades puisque l'évolution du cours a changé de sens (on est passé à une baisse du cours) et que ces trades sont compris dans le même dixième de seconde.

 

On obtient alors :

 

04:45:36.145    85.24   1449

04:45:36.040    85.20   889

04:45:36.019    85.1    629

 

 

Donc le premier problème est que Excel ne gère pas les millisecondes, donc j'ai codé une petite macro qui transforme les heures en secondes et je travaille directement avec les secondes.

L'exemple sur lequel je travaille est le suivant :

 

 

09:31:13.142

34273.142

0.82

68

 09:31:13.141

34273.141

0.83

105

 09:31:13.140

34273.14

0.83

88

 09:31:10.139

34270.139

0.84

99

 09:31:09.138

34269.138

0.85

189

 09:31:09.137

34269.137

0.85

75

 09:31:08.136

34268.136

0.84

203

 09:31:03.135

34263.135

0.84

19

 09:31:02.134

34262.134

0.84

58

 09:31:01.133

34261.133

0.84

108

 09:30:56.132

34256.132

0.83

3

 09:30:56.131

34256.131

0.84

7

 09:30:55.130

34255.13

0.84

72

 09:30:55.129

34255.129

0.84

34

 09:30:54.128

34254.128

0.85

6

 09:30:52.127

34252.127

0.85

63

 09:30:52.126

34252.126

0.85

23

 09:30:49.125

34249.125

0.85

25

 09:30:48.124

34248.124

0.85

7

 09:30:46.123

34246.123

0.85

34

 09:30:46.122

34246.122

0.85

20

 09:30:46.121

34246.121

0.85

31

 09:30:46.120

34246.12

0.85

1

 09:30:45.119

34245.119

0.85

14

 09:30:45.118

34245.118

0.85

4

 09:30:44.117

34244.117

0.87

18

 09:30:43.116

34243.116

0.87

39

 09:30:43.115

34243.115

0.87

27

 09:30:42.114

34242.114

0.85

23

 09:30:42.113

34242.113

0.85

3

 09:30:42.112

34242.112

0.86

13

 

 

Bon voila le problème, je galere dessus depuis pas mal de temps, donc si quelqu'un peut m'aider ce serait super sympa.

 

Merci à tous !!!

 

Peupeu

 

samedi 2 septembre 2006 à 16:16:22 | Re : GROS problème d'agregation, j'ai besoin d'AIDE, SVP !!!!

Kobaya

bonjour Peupeu,

il faut d'abord qur tu définisses "monotone" : est-ce 1/10e du cours, plus, moins ?

pour la gestion des secondes, j'ai Excel 200 et windows 2000 SP4, et en utilisant le format "hh:mm:ss.00", on voit jusqu'au 1/100e, donc à priori c'est bon, non ?

prends comme référence Dep = heure de départ + 1 seconde (ex. : =A1+"00:00:01"). Parcours ensuite la liste, et tant que l'heure est inférieure à Dep, tu agrèges.

samedi 2 septembre 2006 à 17:51:03 | Re : GROS problème d'agregation, j'ai besoin d'AIDE, SVP !!!!

Dowin

Membre Club
Réponse acceptée !

Salut
J'ai essayé un truc a toi de voir si ca marche chez toi et surtout si c'est ce que tu cherches.

Sur la feuille 1 j'ai les trades et un CommandButton1 et la feuille 2 affiche l'agrégation.
Voila le code :

Dim IndexHeure As Integer
Dim Ligne As Integer
Dim LigneAffichage As Integer
Dim CoursMontant As Boolean
Dim CoursDescendant As Boolean
Dim CoursMonotone As Boolean

Private Sub AnalyseCours()

Do

If Worksheets(1).Cells(Ligne, 2) <> Worksheets(1).Cells(Ligne - 1, 2) Then
   
    If Worksheets(1).Cells(Ligne, 2) > Worksheets(1).Cells(Ligne - 1, 2) Then
        CoursMontant = True
        CoursMonotone = False
       
        If CoursMontant = CoursDescendant Then
            If CoursMonotone = False Then
                Agregation
                IndexHeure = Ligne
            End If
        End If
       
        CoursDescendant = False
    Else
        CoursDescendant = True
        CoursMonotone = False
       
        If CoursMontant = CoursDescendant Then
            If CoursMonotone = False Then
                Agregation
                IndexHeure = Ligne
            End If
        End If
       
        CoursMontant = False
    End If
   
Else
    CoursMonotone = True
End If

AnalyseHeure

Ligne = Ligne + 1

Loop Until Worksheets(1).Cells(Ligne, 1) = ""

Agregation

End Sub

Private Sub AnalyseHeure()

If (Worksheets(1).Cells(IndexHeure, 1) * 24 * 60 * 60) - (Worksheets(1).Cells(Ligne, 1) * 24 * 60 * 60) > 0.1 Then

    Agregation
    IndexHeure = Ligne
   
    CoursMontant = False
    CoursDescendant = False
    CoursMonotone = True
   
End If

End Sub

Private Sub CommandButton1_Click()

CoursMontant = False
CoursDescendant = False
CoursMonotone = True

IndexHeure = 1
Ligne = 2
LigneAffichage = 1

AnalyseCours

End Sub

Private Sub Agregation()

For i = IndexHeure To Ligne - 1
    Volume = Volume + Worksheets(1).Cells(i, 3)
    Cours = Cours + (Worksheets(1).Cells(i, 2) * Worksheets(1).Cells(i, 3))
Next i

Worksheets(2).Cells(LigneAffichage, 1) = Worksheets(1).Cells(IndexHeure, 1)
Worksheets(2).Cells(LigneAffichage, 2) = Format(Cours / Volume, "########0.00")
Worksheets(2).Cells(LigneAffichage, 3) = Volume

LigneAffichage = LigneAffichage + 1

End Sub

j'ai les fichiers excel que je peux t'envoyer par mail si tu veux.
Dorian

lundi 4 septembre 2006 à 09:39:20 | Re : GROS problème d'agregation, j'ai besoin d'AIDE, SVP !!!!

eupeup

Merci les gars pour votre aide.
Dowin merci pour ton code, je vais le tester de suite, par contre si'il ya moyen de me filer ta feuille excel, ca le ferait grave ( je t'ai envoyé mon adresse par message privé)

Et pour Kobaya, je crains que ca le fasse pas avec les centièmes car je dois gérer des heures qui sont précises au millième.
Sinon monotone signifie que dans le même dixième de seconde si le cours évolue, il doit évoluer dans le même sens (augmenter ou baisser).
Par exemple si dans un même dixième le cours baisse, et qu'à l'instant suivant (toujours dans le même dixième) le cours se met à grimper, alors l'évolution n'est plus monotone, du coup on débute une nouvelle agrégation.

J'espère que j'ai été assez clair.
Sinon dans l'exemple que j'ai filé dans mon premier message, on peut voir que les 7 dernières lignes sont situées dans le même dixième, pourtant on va égréger les lignes en deux groupes. Un premier contiendra les quatres premières lignes (car le cours évolue de manière croissante) et le second contiendra les trois derniers (car le cours s'est mis à baisser).

Voila, merci et Dowin si tu peux m'envoyer ta feuille excel ce serait mortel.

++

Peupeu
lundi 4 septembre 2006 à 10:46:18 | Re : GROS problème d'agregation, j'ai besoin d'AIDE, SVP !!!!

eupeup

Dowin, je viens de tester ton code, et je crois bien que c'est exactement ce que je cherchais, donc c'est nikel nikel.
Je vais vérifier tous les ptits détails, mais je crois avoir bien compris comment t'as fait, donc je devrais pouvoir m'en sortir.
Si je galere je re posterai un message.

Merci beaucoup !!!


Cette discussion est classée dans : problème, cours, gros, agregation, trades


Répondre à ce message

Sujets en rapport avec ce message

Aidez-moi, SVP, gros problème pour un novice [ par clonevince ] Voilà, j'ai crée un programme qui permet de supprimer les raccourcis du bureau.Je désire lancer un jeu quand je clique sur un bouton.Il veut bien le l Gros problème avec les vbrun Urgent!!!!!! [ par Cyber117 ] Je distribut gratuitement mes programmes sur internet mais les gens me disent qu'ils leur marque les vbrun. (lorsque qu'il lance le jeux une fenetre a Gros problème...Résultat opération.... [ par Chricl ] je suis débutant et je rencontre le problème suivant:d = Text1.Textintschilling = dschilling = intschilling / 200.482schillingue = schilling * 6.55957 HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP [ par MyC ] Salut,J'ai un gros problème, lorsque je suis sur intenet explorer et que je voyage sur le net, tant que je suis sur ma fenêtre principale, il n'y a pa Gros problème avec les personnages [ par Rodolf ] Comment on fait pour que quand un agent (génie ou autre)de microsoft lise ou comprend ce que vous dites ce soit en francais !!Sinou le e correspond au GROS problème avec winsock [ par Rodolf ] J' ai créé 2 applications avec winsock pour dialoguer.Si je les mets tous les 2 sur le même ordinateur et je rentre son IP, ca marche.Mais si j' exécu J'ai un super gros problème. elle s'appel erreur 3360 [ par Nitocris ] Je créer une requête via vb pour ACCESS 2000.Cette requette est trop "longue" et cette erreur surviens.Comment contourner ce problème???? J'ai un super gros problème. elle s'appel erreur 3360 [ par Nitocris ] Je créer une requête via vb pour ACCESS 2000.Cette requette est trop "longue" et cette erreur surviens.Comment contourner ce problème???? Gros problème avec set Item dans Collection [ par fio ] Bonjour,J'ai un gros problème avec ma collection, pour laquelle j'ai défini :Public Function Item(Mot As Variant) As clsMots On Error Resume Next Gros problème avec VB .NET!!! [ par FAS ] Bonjour,Je me suis mis il y a qqes jour au vb .Net. J'ai téléchargé qqes programmes, mais VB .Net me retourne toujours une erreur quand il essaie de l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,401 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales