Lien de téléchargement valable 4 jour : http://cjoint.com/12oc/BJBmwHVHXCa.htm, sinon Email en MP
Programme de la semaine 43 : Développement d'une mini application communiquante via DDE entre Excel et MT4 qui actualisera en permanence les prix du CAC et du DAX. Nous pourrons définir en temps réel quand l'un des indices superforme l'autre. Me reste à trouver un style graphique.
N'ayant que très peu de notion VBA j'ai potassé pour aller au plus simple.
Voici une première mouture du code VBA ainsi que le fichier XLS me permettant de comparer la valeur Bid du Dax et du Cac par rapport à leur High respectif de la journée.
Le programme compare toutes les 60 secondes le Bid par rapport au High et crée un point graphique de couleur verte pour le Dax et de couleur rouge pour le Cac. Il est clair que le programme a des faiblesses :
- Bug après mise en veille du PC
- Style graphique
- l'échelle de temps commence quand on appui sur Start et non par rapport à l'échelle du temps des ticks
- l'échelle du temps ne figure pas sur le graphique bien qu'il soit en temps réel (peut-être résolu mais tant que les points graphiques ne s'actualisent pas au centième de seconde de chacune des minutes... Cela reste pour l'instant à l'étude)
- Il n'est pas intégré dans MT4 pr le moment (faudra un jour potasser le C++, mais je laisse Stèph débroussailler le sujet LOL ! )
Installation :
Une fois le fichier Arbitrage v0.3 téléchargé, il faut l'ouvrir avec Excel
Mode d'emploi :
1) Dans Mt4 Aller dans Outils/ Options
2) Cocher la case Autoriser Serveur DDE
3) Les marchés doivent-être ouverts
4) Ouvrir et fermer MT4
5) Le fichier Arbitrage v0.3 doit être fermé et ouvert
6) Vous devez accepter : activer les liaisons avec d'autres classeurs en l’occurrence MT4
7) Appuyez sur Start pour commencer la macro
8) Appuyez sur Stop pour finir la macro
9) Le bouton Reset efface les données
Attention : ne jamais déplacer le curseur dans les onglets "DDEO" et "Feuil3" cela collerait les données en dehors du tableau. Si cela vous arrive appuyez sur RESET et sélectionnez la case A1 dans chacun des onglets
En image : J'ai fait un RESET à 20H00, la portion de graphique que nous voyons et de 20h00 à 22h00. La procédure continue après 22H00 vendredi soir (hier) mais le marché est fermé.
Le programme reste ouvert vous pouvez ainsi le manipuler à souhait. VBA vous permettra de parcourir le code.
Structure des modules :
module 1 : Dimensionnement des variables liées au Timer
Public RunWhen As Double
Public Const cRunIntervalSeconds = 60 ' one minutes
Public Const cRunWhat = "Arbitrage" ' the name of the procedure to runDim Time As Date
module 2 : Procédure de démarrage du Timer, le code de la macro principale (eh oui au plus simple ! 10 lignes lol !) et procédure d’arrêt du Timer
Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
Schedule:=True
End Sub
Public Sub Arbitrage()
Sheets("DDEO").Select
Range("A2:E2").Select
Selection.Copy
Sheets("Feuil3").Select
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("Performances").Activate
StartTimer
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
Schedule:=False
End Sub
module 4 : Procédure d'effacement
Sub Reset()
Sheets("Feuil3").Select
Range("A2:E840").Select
Selection.ClearContents
Range("A1").Select
Sheets("Performances").Activate
End Sub
Exemple de manipulation de code :
Si vous voulez changer d'UT pour l'UT 5, il vous suffit de modifier la valeur 60 par 300 dans le module 1 cela donnera l'ordre au Timer de s'actualiser toutes les 300 secondes au lieu de 60.
Le futur de l'appli :
1) Résoudre le déclenchement de la création du point graphique de couleur au centième de seconde de chaque nouvelle minute
2) La ligne 5 compte deux menus déroulants afin de pouvoir choisir les sous-jacents à comparer. Ils ne sont pas actifs pour le moment mais reste à ma portée. Cela vous permettra de comparer les données des principales paires de devises et ainsi de les arbitrer tour à tour.
Je reste à votre disposition pour que puissiez créer le programme sur votre PC sans le télécharger et qu'on puisse le réaliser ensemble de A à Z.
Dans l'attente de vos critiques techniques ou suggestions pour l'amélioration de l'appli, je vous souhaite à toutes et à tous un bon week-end
Bagi!
PS : Je devais vous fournir l'appli sur la gestion de position en fonction du MM, mais je ne me suis pas encore penché dessus pour l'instant mais je vous la donnerais une fois remaniée.
