Excel & VBA

Améliorez vos connaissances Excel & VBA avec des classeurs dédiés au trading et à la construction d'indicateurs : 

Gummy Stuff
Cyberpapy

Forum Excel & VBA 

Nouveau Forum VBA  

 

Découvrez :

                                         RobalgoRobalgo

Lecteur graphique VBA de cotations dynamiques CSV

 

Télecharger (1.43mo) : Robalgo-lite v1.0

 

T9

 

 

 

Robalgo-lite (démo) est une application Excel (.xls) qui permet de conditionner des stratégies de trading. Les sources de données sont des fichiers Csv que l'on peut importer de trois lieux différents : le serveur Turtle!, le serveur Yahoo!, et depuis MT4 en local.

 

Robalgo-lite PRO : Robalgo-21K est en cours de développement. Le module Backtest donnera la possibilité d'analyser les signaux d'entrées et de sorties sur 21'000 données OHLC. Elle permettra aussi de choisir votre source de donnée. Enfin le module Money Management vous donnera l'exposition maximale à respecter scrupuleusement.

 

 

 

Historique deRobalgo :

MAJ ROBALGO du 14/09/2014  (pleine de bug mais en open sources^^)

Robalgo 1

 

 

 

MAJ ROBALGO du 09/02/2014 Version Yahoo Server normalement OK

Bonjour à toutes et tous,

Réparation ROBALGO Etape 1 : Version Yahoo Server normalement OK

Comme promis je reviens sur ROBALGO ayant changé de machine et d'Excel, ce n'est pas évident de s'y remettre !

 

Téléchargement : http://cjoint.com/14fe/DBjkPcRiFSM.htm
(merci de recopier ce lien dans un nouvel onglet ! Grrrr ! (e-monsite n'aime plus les RAR je crois!!!)



Bonne journée 

A+ Bagi !

PS : Fichier RAR uniquement, Eriiic dis rien stp^^ ! :mrgreen:




Turtle Signal : Programme générateur de signaux de trading 
----------------------------------------------------------

Gagner du temps : CTRL+F et indiquer le terme, la phrase ou le bug recherché



Installation sans MT4
---------------------

Cela veut dire utilisation uniquement des données du serveur Yahoo et pas des données provenant de MT4

Copier le dossier Turtle Signal à la racine de C: sans en modifier le nom. 
Si vous ne voulez pas, il faudra changer les lignes de code en référence à "Turtle Signal". 
Pour cela faites une recherche de ce terme dans tous les modules, les feuilles et l'activewookbook et changer par l'adresse souhaitée.




Installation avec MT4
---------------------

Cela veut dire utilisation des données provenant de MT4 ou des données du serveur Yahoo

Copier le dossier Turtle Signal à la racine de C: sans en modifier le nom. 
Si vous ne voulez pas, il faudra changer les lignes de code en référence à "Turtle Signal". 
Pour cela faites une recherche de ce terme dans tous les modules, les feuilles et l'activewookbook et changer par l'adresse souhaitée.


Installer l'indicateur MT4 P4L-period con dans W7 : C:\Users\votre nom d'utilisateur\AppData\Local\VirtualStore\Program Files\MetaTrader - ActivTrades\experts\indicators 
ou dans XP:C:\Program Files\MetaTrader - ActivTrades\experts\indicators, éteindre et rallumer MT4, faire glisser l'indicateur dans le graphique de votre choix 
et le fichier CSV est directement créer dans le répertoire dans W7 C:\Users\votre nom d'utilisateur\AppData\Local\VirtualStore\Program Files\MetaTrader - ActivTrades\experts\files 
ou dans XP:C:\Program Files\MetaTrader - ActivTrades\experts\files




Excel 2007 pour demarrer ROBALGO depuis Excel 2007 : 1 à l'ouverture accepter tous les contenus et options 2 / a) Cliquer sur la bulle Office (en haut à gauche) b) Cliquer sur Option Excel (en bas à droite de la liste déroulante) c) Dans la partie Centre de gestion de la confidentialité, cliquer sur le bouton Paramètres du Centre de gestion de la confidentialité... d) Dans Paramètre des macros, cocher l'option que vous souhaitez selon les cas. Dans le mien, c'est Activer toutes les macros.











Réinstallation de A à Z sur une autre machine (départ samedi 08/02/2014 vers 13h00 sur excel 2003)


Pour fermer ROBALGO et rester sur Turtle Signal V 0.1 cliquer sur la croix en haut à droite de l'interface et non sur le bouton fin.


BUGS 
----


1- Erreur de compilation, Projet ou bibliothèque introuvable
------------------------------------------------------------

Ouvrir VBE( visual basic editor) -> Dans Excel raccourci clavier : Alt + F11 ou Outils/Macros/Visual Basi Editor

À partir de cette fenêtre, barre des menus / outils / références /
et décocher les références qui sont marquées : Manquantes

si on vous demande un mot de passe : 1234


source : http://www.generation-nt.com/reponses/e ... 09701.html



2- Impossibilité d'afficher la feuille ROBALGO - Erreur d'excution 13 - incompatibilité de Type
-----------------------------------------------------------------------------------------------

Dans le code de la feuille (Userform) ROBALGO, la demande de renseignement des Labels provient des données de la feuille (Onglet) VAR soit ces cellules :


pour le SJ1 (sous-jacent 1) : ligne 24 et ligne 52 à 55

'LabelTIMEDDE = Sheets("VAR").Range("AE3") 

'LabelBIDSJ1 = Sheets("VAR").Range("AA3")
'LabelASKSJ1 = Sheets("VAR").Range("AB3")
'LabelHIGHSJ1 = Sheets("VAR").Range("AC3")
'LabelLOWSJ1 = Sheets("VAR").Range("AD3")



pour le SJ2 (sous-jacent 2) : ligne 685 à 688


'LabelBIDSJ2 = Sheets("VAR").Range("AA6")
'LabelASKSJ2 = Sheets("VAR").Range("AB6")
'LabelHIGHSJ2 = Sheets("VAR").Range("AC6")
'LabelLOWSJ2 = Sheets("VAR").Range("AD6")


Ces lignes de code apparaissent trop tôt et ne prennennt pas en compte les utilisateurs qui n'utilisent pas MT4 pour extraire les données OHLC. 

Si on met ces lignes en commentaire (avec un ' devant chaque début de ligne) alors le programme fonctionne pour ceux qui non pas MT4. C'est ce que j'ai fait pour le moment.


Les commandes à l'ouverture du fichier 
--------------------------------------

Les commandes à l'ouverture du fichier se trouvent dans l'objet ThisWorkook à la procédure suivante : Private Sub Workbook_Open()


''MAJ Liasons externes de MT4 BID, ASK, HIGH, LOW

'ActiveWorkbook.UpdateLink Type:=xlOLELinks
'ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways



D'une part elles demandent trop tôt la liaison avec MT4 et d'autre part les cellules en rapport avec la liaison externe (DDE) avec MT4 soit les cellules : 



pour le SJ1

Sheets("VAR")

Range("AE3") 
Range("AA3")
Range("AB3")
Range("AC3")
Range("AD3")

pour le SJ2 


Sheets("VAR")
Range("AA6")
Range("AB6")
Range("AC6")
Range("AD6")



sont dès le lancement du programme en attente d'être renseigné par MT4 alors qu'il n'est pas forcément déjà lancé.


De plus à la première installation de Turtle Signal les champss en rapport avec le répertoire des données CSV de MT4 :

C:\Program Files\MetaTrader - ActivTrades\experts\files : D7 pour XP
C:\Users\Bagi !\AppData\Local\VirtualStore\Program Files\MetaTrader - ActivTrades\experts\files : D8 pour W7


peuvent différent d'un utilisateur à l'autre.



Activer les macros :
------------------

Sécurité

Mes Macros sont réalisées sans virus, ni espion , ni sous programme indésirable. 
Pour ceux qui ne veulent pas les accepter et qui désirent monter le fichier eux-même, le code se trouve 
dans les modules en fin de page.

Aller dans Outils/Macros/Sécurité et cocher Niveau de sécurité faible (lors de l'utilisation du programme uniquement)



OK pour Turtle Signal version Yahoo serveur uniquement le dimanche 09/02/2014 à 10h00


Ce que je (ou vous) dois faire maintenant c'est :


Les commandes à l'ouverture du fichier doivent effacer les champs liés à MT4 pour ne pas demander l'ouverture de MT4

Seulement au moment de décocher la croix "Yahoo Server" dans ROBALGO, l'application doit demander l'ouverture de MT4 (il devra déjà être ouvert)

Une nouvelle interface devra apparaître pour renseigner les champs du répertoire des données CSV de MT4. L'indicateur P4L-period con devra déjà être installé et fonctionner tout seul 
en créant automatiquement en fonction de l'UT (par exemple UT5 : chaque 5 minutes, il crée une nouvelle ligne OHLC)





CODE
----


Je mettrais le code de l'ensemble de l'application ici plus tard pour ceux qui veulent monter le fichier eux même mais il est en open source via Alt+F11 dans Excel

MAJ Turtle Signal v0.1.xls : VBAProject avec interface utilisateur ROBALGO

Bonjour à toutes et tous,

Dernière MAJ le 18.08.2013 13h00

Voici Turtle Signal  v0.1.xls : VBAProject avec interface utilisateur ROBALGO

 

Lien 1 en rar : http://turtlesignal.e-monsite.com/medias/files/turtle-signal-v0-1.rar
Lien 2 en zip : http://turtlesignal.e-monsite.com/medias/files/turtle-signal-v0-1.zip

Note : Il se peut qu'il reste encore qq bugs en raison du gestionnaire erreur incomplet. Quand la console VBA s'ouvre et stoppant le programme, faites seulement Arret ou touche Stop et continuer sur le programme. Le programme a été quelque peu allégé et tourne plus rapidemment. L'installation reste la même cf. lignes suivantes. Les onglets Rapport et Terminal sont en cours de réalisation.

 

@+ Bagi !

ROBALGO

 Semaine 25,  l'interface en cours de conception

image5-5.jpg 

image6-4.jpg 

 

 

 

 

 

 

l'onglet stratégie

 

Impostable pour l'instant !

FAQ & Bugs


Chaque fin de semaine, je corrige les bugs et poste un nouveau fichier :
Dernière MAJ le 09.06.2013 13h45

Données :
Précision sur JD v0.1 (fonctionne le mieux sur Excel 2002) : J'ai beau mettre + 15 pour UT15 en G4 le programme efface les données : C'est tout à fait normal, le graphique où l'indicateur MT4 P4L-period con.mq4 est placédoit-être sur M15, il faut changer l'UT du graphique pour que l'indic crée le fichier CSV. et JD v0.1 pourra ainsi lire la nouvelle UT.

Bugs UT : Onglet Backtest : colonnes BE et BK lignes 6 à 12 , il faut enlever le signe "+" devant l'UT ok corrigé
Bug Calibrage Graphique : Pour les sous jacents dont High -Low < 1 (Forex) , je dois trouver les bons paramétres de la macro Echellemicro non corrigé
Bug pour différencier la plage de variable choixstrategie et son adresse dans l'enregistrement et le rappel des stratégies (Module M8Backtest, Macros SignauxPlay et StockerFormule), toutes les variables de l'interface graphique et du conditioneur dans le selectionneur de stratégie s'enregistrent et sont rappelées correctement ok corrigé

Lien Cjoint provisoire pour télechargement des 3 fichiers dans le zip : lien

Fichier : at_-_journal_dynamique.zip

  1. Journal dynamique v0.1.xls
  2. MonHistoriqueAT.xls
  3. P4L-period con.mq4

L'appli Turtle Signal : VBAProject(Journal dynamique v0.1.xls)

Fichier : P4L-period con.mq4 (zip)                                                    Fichier : at-journal-dynamique.xls (zip)

Avant-propos

Depuis que j'ai découvert MetaTrader 4 de MetaQuotes (plateforme pour les CFDs)  et certains programmeurs (dont Stéph de boursikoter.com), j'ai comme eux voulu réaliser mes propres indicateurs techniques et robots de trading. La programmation en Mql4 bien qu'essentiel est indigeste au premier abords. Comme j'étais parti avec Excel en VBA, il a fallu construire une façon efficace de communiquer entre Excel et MT4. A l'accoutuméé, je détourne quelque peu les indicateurs initiaux pour arriver à mes fins. On peut appeler ça du bidouillage car biensur je n'ai jamais trouvé d'exemple complet sur ce sujet.  Puis, les gens, veulent bien vous aider, mais ca reste à dose homéopatique. Au cours de mes recherches j'ai récolté des bouts de codes qui me parraissaient utiles et les ai adaptés pour faire une application de A à Z. Le code est libre et est non protégé pour permettre à ceux qui voudraient s'y mettre d'avoir déjà une base de travail complète.Ils pourront modifier eux-même pour créer leur propre apllication et celà sans perdre trop de temps. Tout ceci dans un but purement pédagogique et puis vos critiques seront extrèmement bienvenues.


JDv.01 est en cours "d'affinage" et restera en open source jusqu'à ce que le module Money Management soit terminé. Bien qu'opérationnel, le fichier est encore bien lourd car j'apprends encore à coder. Ce poste sera modifié en fonction de l'évolution des fonctions et de l'allègement du codage.

Sécurité
Mes Macros sont réalisées sans virus, ni espion , ni sous programme indésirable. Pour ceux qui ne veulent pas les accepter et qui désirent monter le fichier eux-même, le code se trouve dans les modules en fin de page.

Fonctionnement
En quelques mots, on utilise un indicateur MT4 P4L-period con.mq4, qui actualise un fichier CSV des OHLC (Open, High, Low et Close) en permanence et JDv.01 puise dans les données toutes les 56 secondes pour calculer les points graphiques suivants :

Paramétrables via la colonne des variables des séries de données de l'interface graphique : OHLC, Bollinger 1 et 2 à périodes uniques, moyennes mobiles arithmétiques 1, 2, et 3, moyennes mobiles exponentielles 1, et 2, support et résistance S3 et R3.
Enfin les signaux que vous paramettrez grace au conditionneur de stratégie et que sauvegarderz dans le 
sélectionneur de stratégie.

Note : Pour ceux qui n'utilisent pas MT4, il existe une section Yahoo Serveur, il vous suffit de rentrer le code Yahoo finance de votre choix. (La première mise à jour quand on passe d'un système à l'autre peut buguer, il faut simplement renouveler l'opération.

Note 2 : Le code, les cellules, les formules, etc... Rien est protégé : ce qui rend le programme fragile, si vous touchez à tout, vérifiez que toutes les fonctionnalités sont opérationnelles avant de sauvegarder.

Note 3 : Les onglets suivants sont en cours de réalisation : Rapport Mensuel, MM et Performance. En attendant si vous voulez analyser vos trades c'est ici sur un ancien poste : lien

Note 4 : Si vous avez des corrections qui fonctionnent concernant les boucles, les procédures appelantes, la structure des modules, l'organisation des procédures évènementielles ou standards indépendantes, merci d'en faire profiter tout le monde en postant un message (filtrés). Ca peut rendre notre communauté plus sympa ! Si vous préférez au contraire jalousement garder chacune de vos lignes de code et tout protéger par mot de passe et bien c'est... formidable !!!

Journal dynamique v0.1.xls, qu'est-ce que c'est ?

JDv.01 actualise via une macro (M1, M2 et M3) les données OHLC et réalise un graphique presque en temps réel (59 secondes de retard max).

image5-4.jpg

c-aa.jpg

c-ab.jpg

 

 

 

 

 

 

 

JDv.01 ne travaille pas uniquement avec MT4 mais aussi avec le serveur Yahoo ainsi on peut tester les strats sur vraiment tous les codes Yahoo Finance exemple ici avec le code ^FCHI (cac40) en daily et en weekly et pour MT4 toutes les UT et tous les sous jacents

backtest1.jpg

 

 

 

 

 

 

Le terminal MT4 relié directement à excel. Toutes les communications DDE sont opérationnelles et JDv.01 va chercher toutes les infos sur les open trades et délivre une petite analyse que je doit perfectionner.

image6-3.jpg

 

 

 

 

 

 

Mode d'emploi

P4L-period con.mq4
http://www.forexfactory.com/showthread.php?t=206301

L'indicateur P4L-period converter permet d'inverser les prix des cotation MT4 pour des graphes offline et aussi d'utiliser un timeshift pour décaler les heures de cotations du brokers avec l'heure locale. 

Il y a aussi une vraie perle dedans c'est qu'en fonction de l'UT du graph, il crée automatiquement un fichier CSV dans C:\Users\votrenomdutilisateur\AppData\Local\VirtualStore\Program Files\MetaTrader - ActivTrades\experts\files et il n'y a aucun réglage à faire, le reste est automatisé via les macros de JDv.01. 

Installation

1. Installer l'indicateur MT4 P4L-period con dans W7 : C:\Users\votrenomd'utilisateur\AppData\Local\VirtualStore\Program Files\MetaTrader - ActivTrades\experts\indicators ou dans XP:C:\Program Files\MetaTrader - ActivTrades\experts\indicators, éteindre et rallumer MT4, faire glisser l'indicateur dans le graphique de votre choix et le fichier CSV est directement créer dans le répertoire dans W7 C:\Users\votrenomd'utilisateur\AppData\Local\VirtualStore\Program Files\MetaTrader - ActivTrades\experts\files ou dans XP:C:\Program Files\MetaTrader - ActivTrades\experts\files

2. Copier le dossier AT - Journal Dynamique à la racine de C: sans en modifier le nom. Si vous ne voulez pas, il faudra changer les lignes de code en référence à "AT - Journal Dynamique". Pour cela faites une recherche de ce terme dans tous les modules, les feuilles et l'activewookbook et changer par l'adresse souhaitée.

 

Utilisation

CSV MT4 via P4L-period con : toutes les UT et tous les sous jacents proposé dans MT4 ( je dois encore m'assurer de certains comme le Palladium, le Platinium et d'autres cross exotiques que je ne trade pas, mais pour les principaux c'est OK. Dans la section DEE pour importer les données dans JDv.01.

  1. En D5 je sélectionne le nom de l'instrument ex. Ger30, mais il lui faut aussi l'échéance de la fin du contrat Ex. Jun en E5 et aussi l'année Ex. 13 en G5.  Se sont des listes déjà renseignées, vous n'avez qu'à choisir. 
  2. JDv.01 reconnait si je sélectionne des Currency en majuscule aussi et actualise directement la recherche
  3. Quand je modifie le Zoom n c'est le nombre de bougie affiché qui change, le petit bouton à coté c'est le bouton "Zoom" ça rafraichi le graph et au cas où il y a un bug graphique, 
  4. La barre défilement ou Scrollbar permet de se balader dans le graphique
  5. le bouton adresse : d'abord je copie mon chemin exact d'adresse du répertoire qui amène à Files, j'appuis sur adresse et je colle l'adresse dans le cadre, puis OK. La cellule Q1 est une liste d'adresse type.
  6. Le conditionneur : Il n'est pas paramétrer. L'ensemble des paramètres modifiables sont répertoriés sous les variables n et n-1 ainsi on peut réaliser pour l'instant toutes les stratégies possibles à deux conditions. Je choisis mes variables dans les listes (texte noir) et les opérateurs logiques (en blanc), puis j'enregistre avec le bouton Engrenage. Pour rappeler une stratégie, j'appuis sur le bouton Play. J'évite le bouton poubelle. Il ne se passe rien tant que je ne rafraichis pas avec le bouton Zoom. J'appuis sur le bouton Zoom. Je réalise mes premières stratégies : La barre de défilement permet (lentement) de se déplacer sur l'évolution des cours. Les cases grises à droite de l'interface graphique peuvent recevoir différents paramètres comme l'affichage ou non de telles mma ou mme, périodes bol, bol à 2 ou 3 écarts type. On peut afficher les pivots r3 et s3. Dans la case du sélectionneur "B-Retournement" je peux choisir différentes stratégies pré enregistrées et je demande que les signaux soient affichés en appuyant sur le bouton "Play" en modifiant la position de la barre. 
  7. Le bouton ON lance la routine en "temps réel" et actualise constamment le graphique, le OFF arrete la procédure.
 

Serveur Yahoo : en daily et en weekly et pour tous les codes Yahoo finance, choisissez les boutons Daily ou Weekly pour importer les données journalières du symbole

Mise à jour du terminal MT4 : quand on clique sur Mise à jour terminal, JDv.01 recherche tous les open trades dans MonHistoriqueAT et les retranscrit dans l'onglet Terminal

Mes trades : quand on clique sur Importer Mes Trades, une boite de dialogue vous guide pour importer tous vos trades de MT4 depuis MonHistoriqueAT





Exemple pour signaux buy : 

condition 1 : que close N-1 soit supérieur à MMA 269 
condition 2 : que close N-1 soit inférieur à Bol (2) inf avec un écart type de 3

Les limites pour l'instant

L'évaluation du backtest résulte d'une formule encore bien simpliste, ainsi que le calcul du Money Management, très généraliste. L'amélioration de JDv.01 va se poursuivre peu à peu.

 

Bugs

1) Macros non activées : (Excel) Allez dans Outils/options/sécurité/Sécurité macros/ Mettre sur faible :
le bouton sortie du programme remet les valeurs Excel à leur position de base

2) Références/ bibliothèque du projet introuvable : (VBA) Appuyer sur stop/Allez dans Outils/Références :
Décocher toutes les références commençant par Manquantes

 

...fautes d'orthographes en cours de correction :-)

L'application de A à Z

Le code sera amélioré peu à peu. Tout d'abord dans l'allègement et l'efficacité pour permettre d'être plus rapide. Ensuite 2 modules restent à construire. Le plus dure est fait, c'est à dire qu'il y a une vrai base de travail opérationnelle. Il n'en reste pas moins que rendre le programme intelligent sera un nouveau challenge. Au final il devra donner des signaux pertinents comme le placement manuel des points d'entrées et de sorties de trades parfaits et à l'aide du solveur trouver les fonctions et algorithmes qui s'accordent le mieux avec le comportement du bruit du marché.

Voici l'ensemble du code VBA dans les lignes suivantes qui reste encore bien "préhistorique" :-)

vba.jpg

Feuil(Backtest)

Private Sub Worksheet_Activate()

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Range("C5").Select

End Sub


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Applique la macro M3Archives si Nom "UT" change
If Target.Address = "$G$4" Then
Call M2Archives
Application.StatusBar = "OFF..."
End If
'Applique la macro Position si zoom n change
If Target.Address = "$U$26" Then
Call Position
Call Position
End If
If Target.Address = "$L$4" Then
Call M1Cours
Application.StatusBar = "OFF..."
End If

End Sub

L'objet Thisworkbook

 

Private Sub Workbook_Open()
Application.DisplayAlerts = False
Call Message1
Call DDE
Application.DisplayAlerts = True
Application.StatusBar = "OFF..."
End Sub

Sub Message1()


Sheets("Backtest").Select

Dim AdresseCsv As String, Utilisateur As String
Utilisateur = Application.UserName
AdresseCsv = InputBox("Bienvenue : " & Utilisateur & Chr(10) & _
"1. Pour activer la communication DDE, assurez-vous que MT4 est déjà ouvert" & Chr(10) & _
"2. Veuillez entrer l'adresse exacte du dossier de stockage des fichiers CSV de l'indicateur MT4." & Chr(10) & _
"Ex. W7 C:\Users\Bagi !\AppData\Local\VirtualStore\Program Files\MetaTrader - ActivTrades\experts\files" & Chr(10) & _
"Ex. XP C:\Program Files\MetaTrader - ActivTrades\experts\files", "Initialisation de l'application", Range("P1").Value)


Range("P1") = AdresseCsv

End Sub

Sub DDE()

Application.AskToUpdateLinks = False
ActiveWorkbook.UpdateLink Type:=xlOLELinks
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
ActiveWorkbook.UpdateLink Name:="MT4|ASK!Ger30Jun13", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|BID!Ger30Jun13", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|HIGH!Ger30Jun13", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|LOW!Ger30Jun13", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|NAME!Ger30Dec12", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|TIME!Ger30Jun13", Type:=xlOLELinks

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Windows("Journal dynamique v0.1.xls").Close SaveChanges:=True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Module Automate

'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 56 ' 56 secondes
Public Const cRunWhat = "M3Archives" 'nom de la sub à exécuter

 


Sub Start()
Select Case MsgBox("Voulez-vous démarrer la mise à jour CSV ?", vbCritical + vbOKCancel, "Mise à jour CSV")
Case vbOK
Application.StatusBar = "DDE..."
DDE
' Application.AskToUpdateLinks = False
' ActiveWorkbook.UpdateLink Type:=xlOLELinks
' ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
' ActiveWorkbook.UpdateLink Name:="MT4|ASK!Ger30Jun13", Type:=xlOLELinks
' ActiveWorkbook.UpdateLink Name:="MT4|BID!Ger30Jun13", Type:=xlOLELinks
' ActiveWorkbook.UpdateLink Name:="MT4|HIGH!Ger30Jun13", Type:=xlOLELinks
' ActiveWorkbook.UpdateLink Name:="MT4|LOW!Ger30Jun13", Type:=xlOLELinks
' ActiveWorkbook.UpdateLink Name:="MT4|NAME!Ger30Dec12", Type:=xlOLELinks
' ActiveWorkbook.UpdateLink Name:="MT4|TIME!Ger30Jun13", Type:=xlOLELinks


Application.StatusBar = "Lance la routine.."
M3Archives




Case vbCancel
Application.StatusBar = "OFF..."
Exit Sub
End Select
End Sub


Sub LanceLeLecteurDeMessage()
Application.StatusBar = "ON..."

'Programmation horaire = Maintenant + 56 secondes
RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat
End Sub

Sub StoppeLeLecteurDeMessage()
Select Case MsgBox("Voulez-vous arrêter la mise à jour CSV ?", vbCritical + vbOKCancel, "Mise à jour CSV")
Case vbOK
'Arrête le process en lui repassant la dernière programmation horaire
On Error Resume Next
Application.OnTime RunWhen, cRunWhat, , False
Application.StatusBar = "OFF..."
Case vbCancel
Exit Sub
End Select
End Sub

Sub Sortie()
Application.StatusBar = "Au revoir..."
Select Case MsgBox("Voulez-vous sortir de l'application ?", vbCritical + vbOKCancel, "Quitter")
Case vbOK

On Error Resume Next
Application.OnTime RunWhen, cRunWhat, , False
Application.DisplayAlerts = False
Application.StatusBar = False
Windows("Journal dynamique v0.1.xls").Close SaveChanges:=True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Application.ScreenUpdating = True

Case vbCancel
Application.StatusBar = False
Exit Sub
End Select

End Sub
Sub M84StopCalculs()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
End Sub
Sub M85RepriseCalculs()
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Sub DDE()


Application.AskToUpdateLinks = False
ActiveWorkbook.UpdateLink Type:=xlOLELinks
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
ActiveWorkbook.UpdateLink Name:="MT4|ASK!Ger30Jun13", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|BID!Ger30Jun13", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|HIGH!Ger30Jun13", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|LOW!Ger30Jun13", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|NAME!Ger30Dec12", Type:=xlOLELinks
ActiveWorkbook.UpdateLink Name:="MT4|TIME!Ger30Jun13", Type:=xlOLELinks
End Sub

Module M1Import1

'............................................................................
'. Module M1Import1 .
'............................................................................
'. .
'. DESCRIPTION........ : Module d'importation des données OHLC pour les .
'. valeurs et les CFD de MT4 .
'. .
'. .
'. AUTEUR............. : Bagi de http://turtlesignal.e-monsite.com/ .
'. .
'............................................................................

Sub M2Archives()
'Application.StatusBar = "Mise à jour CSV..."
Application.ScreenUpdating = False
Sheets("Cours & Archives").Select
Range("A4:I10000").ClearContents
Application.StatusBar = "Nettoyage données"
CopieNom = Range("I4")

'Workbooks.Open Filename:="C:\Users\Bagi !\AppData\Local\VirtualStore\Program Files\MetaTrader - ActivTrades\experts\files\Ger30Jun13+15.csv"
Dim strFichier As String
Dim strRepertoire As String
strRepertoire = Sheets("Backtest").Range("$P$1").Value
strFichier = Sheets("Backtest").Range("$P$2").Value

Application.DisplayAlerts = False
Workbooks.Open Filename:=strRepertoire & "\" & strFichier

Dim MonTableaucinqmillemax As Range

basLigne = Range("A65536").End(xlUp).Row
If basLigne > 5000 Then
DernLigne = Range("A65536").End(xlUp).Offset(-5000, 0).Row
Set MonTableauMonTableaucinqmillemax = Range("A1:G" & DernLigne)
MonTableauMonTableaucinqmillemax.Select
Selection.Delete Shift:=xlUp
End If


Application.StatusBar = "Importe les données OHLC CSV..."

'Conversion des données CSV dans le fichier CSV
'Données délimitées par une virgule dans la colonne A uniquement
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1)), TrailingMinusNumbers:=True
'Insertion d'une nouvelle colonne entre B et C pour regrouper la date (A) et l'heure (B) dans
'Cette nouvelle colonne C
Columns("C:C").Select
Selection.Insert Shift:=xlToRight


Dim MonTableau As Range
dernièreLigne = Range("A65536").End(xlUp).Row
Set MonTableau = Range("C1:C" & dernièreLigne)
MonTableau.Select
'Formule qui conjugue la date et l'heure
MonTableau.FormulaR1C1 = "=+RC[-2]+RC[-1]"
'Format date
Selection.NumberFormat = "dd mmm/ yyyy hh:mm"
Columns("C:C").ColumnWidth = 17.29
'CopieNom = Range("A1")
Range(Range("C1"), Range("H1").End(xlDown)).Copy
'Retour sur le fichier JD
Windows("Journal dynamique v0.1.xls").Activate
Application.ScreenUpdating = False
Sheets("Cours & Archives").Select
'et copie
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range(Range("I4"), Range("I4").End(xlDown)).FormulaR1C1 = "=+IF(RC[-2]<>"""",RC[-2],"""")"
Range(Range("A4"), Range("I4").End(xlDown)).Font.Size = 7
'Range("C1").Value = CopieNom
Range("C1").Value = Sheets("Backtest").Range("P2").Value
Range("C3") = "Date"
Range("D3") = "Open"
Range("E3") = "High"
Range("F3") = "Low"
Range("G3") = "Close"
Range("H3") = "Volume"
Range("I3") = "Adj. Close"
Range(Range("C3"), Range("C3").End(xlDown)).NumberFormat = "d/mmm/yyyy h:mm"
Range(Range("D3"), Range("G3").End(xlDown)).NumberFormat = "0.00"
Range(Range("H3"), Range("H3").End(xlDown)).NumberFormat = "0,000"
Range(Range("I3"), Range("I3").End(xlDown)).NumberFormat = "0.00"
Range(Range("C3"), Range("C3").End(xlDown)).NumberFormat = "0"


'Index
Application.StatusBar = "Création index..."
Range("A4").FormulaR1C1 = "1"
Range("A5:A" & Range("C65536").End(xlUp).Row).FormulaR1C1 = "=IF(RC[2]<>"""",R[-1]C+1,"""")"
Application.StatusBar = "Création index..."

Range("C1").Select

Windows(strFichier).Close SaveChanges:=False
'Windows("Ger30Jun13+15.csv").Close SaveChanges:=False

Application.StatusBar = "Mise en format des cellules..."
Columns("C:C").ColumnWidth = 17
Range(Range("C4"), Range("C4").End(xlDown)).NumberFormat = "0"
Range(Range("C4"), Range("C4").End(xlDown)).Copy
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range(Range("B4"), Range("B43").End(xlDown)).NumberFormat = "d/mmm/yyyy h:mm"
Columns("B:B").ColumnWidth = 17
Range("G1").FormulaR1C1 = "=MIN(C[-4])"
Range("I1").FormulaR1C1 = "=MAX(C[-6])"
Application.StatusBar = False


'Efface les cellules vides contenant une formule pour que les series de données s'arrettent en
'même temps que le cours OHLC dans le graphique
Range("P5:AI5").Select
Application.CutCopyMode = False
Selection.Copy
Range("P6:AI5003").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False


Dim MonTableau2 As Range

dernièreLigne = Range("A65536").End(xlUp).Offset(1, 0).Row
Set MonTableau2 = Range("P5004:AI" & dernièreLigne)
MonTableau2.Select
Selection.Delete
Range("C1").Select
Sheets("Backtest").Select



Range("P15") = Range("$Bj$4").Value


ActiveSheet.ChartObjects("Graphique 1244").Activate

ActiveChart.PlotArea.Select
ActiveChart.Shapes("Text Box 3").Select
Selection.Formula = "Backtest!$I$4"
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Calibri"
.FontStyle = "Gras"
.Size = 8
.ColorIndex = 3
.Background = xlOpaque
End With

Range("C5").Select


Call Position
Call Position

End Sub

 


Sub M3Archives()
'Application.StatusBar = "Mise à jour CSV..."
Application.ScreenUpdating = False
Sheets("Cours & Archives").Select
Range("A4:I10000").ClearContents
Application.StatusBar = "Nettoyage données"
CopieNom = Range("I4")

'Workbooks.Open Filename:="C:\Users\Bagi !\AppData\Local\VirtualStore\Program Files\MetaTrader - ActivTrades\experts\files\Ger30Jun13+15.csv"
Dim strFichier As String
Dim strRepertoire As String
strRepertoire = Sheets("Backtest").Range("$P$1").Value
strFichier = Sheets("Backtest").Range("$P$2").Value

Application.DisplayAlerts = False
Workbooks.Open Filename:=strRepertoire & "\" & strFichier

Dim MonTableaucinqmillemax As Range

basLigne = Range("A65536").End(xlUp).Row
If basLigne > 5000 Then
DernLigne = Range("A65536").End(xlUp).Offset(-5000, 0).Row
Set MonTableauMonTableaucinqmillemax = Range("A1:G" & DernLigne)
MonTableauMonTableaucinqmillemax.Select
Selection.Delete Shift:=xlUp
End If


Application.StatusBar = "Importe les données OHLC CSV..."

'Conversion des données CSV dans le fichier CSV
'Données délimitées par une virgule dans la colonne A uniquement
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1)), TrailingMinusNumbers:=True
'Insertion d'une nouvelle colonne entre B et C pour regrouper la date (A) et l'heure (B) dans
'Cette nouvelle colonne C
Columns("C:C").Select
Selection.Insert Shift:=xlToRight


Dim MonTableau As Range
dernièreLigne = Range("A65536").End(xlUp).Row
Set MonTableau = Range("C1:C" & dernièreLigne)
MonTableau.Select
'Formule qui conjugue la date et l'heure
MonTableau.FormulaR1C1 = "=+RC[-2]+RC[-1]"
'Format date
Selection.NumberFormat = "dd mmm/ yyyy hh:mm"
Columns("C:C").ColumnWidth = 17.29
'CopieNom = Range("A1")
Range(Range("C1"), Range("H1").End(xlDown)).Copy
'Retour sur le fichier JD
Windows("Journal dynamique v0.1.xls").Activate
Application.ScreenUpdating = False
Sheets("Cours & Archives").Select
'et copie
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range(Range("I4"), Range("I4").End(xlDown)).FormulaR1C1 = "=+IF(RC[-2]<>"""",RC[-2],"""")"
Range(Range("A4"), Range("I4").End(xlDown)).Font.Size = 7
'Range("C1").Value = CopieNom
Range("C1").Value = Sheets("Backtest").Range("P2").Value
Range("C3") = "Date"
Range("D3") = "Open"
Range("E3") = "High"
Range("F3") = "Low"
Range("G3") = "Close"
Range("H3") = "Volume"
Range("I3") = "Adj. Close"
Range(Range("C3"), Range("C3").End(xlDown)).NumberFormat = "d/mmm/yyyy h:mm"
Range(Range("D3"), Range("G3").End(xlDown)).NumberFormat = "0.00"
Range(Range("H3"), Range("H3").End(xlDown)).NumberFormat = "0,000"
Range(Range("I3"), Range("I3").End(xlDown)).NumberFormat = "0.00"
Range(Range("C3"), Range("C3").End(xlDown)).NumberFormat = "0"


'Index
Application.StatusBar = "Création index..."
Range("A4").FormulaR1C1 = "1"
Range("A5:A" & Range("C65536").End(xlUp).Row).FormulaR1C1 = "=IF(RC[2]<>"""",R[-1]C+1,"""")"
Application.StatusBar = "Création index..."

Range("C1").Select

Windows(strFichier).Close SaveChanges:=False
'Windows("Ger30Jun13+15.csv").Close SaveChanges:=False

Application.StatusBar = "Mise en format des cellules..."
Columns("C:C").ColumnWidth = 17
Range(Range("C4"), Range("C4").End(xlDown)).NumberFormat = "0"
Range(Range("C4"), Range("C4").End(xlDown)).Copy
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range(Range("B4"), Range("B43").End(xlDown)).NumberFormat = "d/mmm/yyyy h:mm"
Columns("B:B").ColumnWidth = 17
Range("G1").FormulaR1C1 = "=MIN(C[-4])"
Range("I1").FormulaR1C1 = "=MAX(C[-6])"
Application.StatusBar = False


'Efface les cellules vides contenant une formule pour que les series de données s'arrettent en
'même temps que le cours OHLC dans le graphique
Range("P5:AI5").Select
Application.CutCopyMode = False
Selection.Copy
Range("P6:AI5003").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False


Dim MonTableau2 As Range

dernièreLigne = Range("A65536").End(xlUp).Offset(1, 0).Row
Set MonTableau2 = Range("P5004:AI" & dernièreLigne)
MonTableau2.Select
Selection.Delete
Range("C1").Select
Sheets("Backtest").Select



Range("P15") = Range("$Bj$4").Value


ActiveSheet.ChartObjects("Graphique 1244").Activate

ActiveChart.PlotArea.Select
ActiveChart.Shapes("Text Box 3").Select
Selection.Formula = "Backtest!$I$4"
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Calibri"
.FontStyle = "Gras"
.Size = 8
.ColorIndex = 3
.Background = xlOpaque
End With

Range("C5").Select


Call Position
Call Position
LanceLeLecteurDeMessage
End Sub
Sub M5MatriceMulti()
Application.StatusBar = "Merci de patienter..."

'MME1
ActiveWorkbook.Names.Add Name:="SE1", RefersToR1C1:= _
"=OFFSET('Cours & Archives'!R3C22,Backtest!R4C21,0,Backtest!R26C21,1)"
'MME2
ActiveWorkbook.Names.Add Name:="SE2", RefersToR1C1:= _
"=OFFSET('Cours & Archives'!R3C23,Backtest!R4C21,0,Backtest!R26C21,1)"
'R3
ActiveWorkbook.Names.Add Name:="SR3", RefersToR1C1:= _
"=OFFSET('Cours & Archives'!R3C24,Backtest!R4C21,0,Backtest!R26C21,1)"

Application.StatusBar = "Nommage des variables de matrice multidimensionnelles..."
'S3
ActiveWorkbook.Names.Add Name:="SS3", RefersToR1C1:= _
"=OFFSET('Cours & Archives'!R3C25,Backtest!R4C21,0,Backtest!R26C21,1)"
'MMA2
ActiveWorkbook.Names.Add Name:="SM2", RefersToR1C1:= _
"=OFFSET('Cours & Archives'!R3C26,Backtest!R4C21,0,Backtest!R26C21,1)"
'MMA3
ActiveWorkbook.Names.Add Name:="SM3", RefersToR1C1:= _
"=OFFSET('Cours & Archives'!R3C30,Backtest!R4C21,0,Backtest!R26C21,1)"

Sheets("Backtest").Select
Application.StatusBar = False
End Sub

 

'............................................................................
'. SERVEUR YAHOO .
'............................................................................

Sub M7Daily()
'Range("$BJ$6") = "d"
Application.ScreenUpdating = False
Sheets("Cours & Archives").Select
''Sheets("Cours & Archives").Range("D1") = "d"
Range("D1") = "d"
''d = Range("D1").Value
M1Cours
End Sub

Sub M7Weekly()
'Range("$BJ$6") = "w"
Application.ScreenUpdating = False
Sheets("Cours & Archives").Select
''Sheets("Cours & Archives").Range("D1") = "w"
Range("D1") = "w"
'w = Range("D1").Value
M1Cours
End Sub

Sub M1Cours()
Application.ScreenUpdating = False
Sheets("Cours & Archives").Select
Application.DisplayAlerts = False
Application.StatusBar = "Nettoyage données"
Sheets("Cours & Archives").Select
Range("A4:I10000").ClearContents
Application.AutoRecover.Enabled = False

 

Application.StatusBar = "Préparation Query..."

Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim EndDate As Date
Dim StartDate As Date
Dim Symbol As String
Dim qurl As String
Dim nQuery As Name


Set DataSheet = ActiveSheet

Range("D1").NumberFormat = "@"

Range("F1") = "Du"

Range("G1").FormulaR1C1 = "=R[0]C[2]-5*365-1"
Range("G1").NumberFormat = "d mmm/ yyyy h:mm"
StartDate = DataSheet.Range("G1").Value

Range("H1") = "Au"

Range("I1").FormulaR1C1 = "=TODAY()"
Range("I1").NumberFormat = "d mmm/ yyyy h:mm"
EndDate = DataSheet.Range("I1").Value

' Symbol = DataSheet.Range("C1").Value
Symbol = Sheets("Backtest").Range("L4").Value

' Range("C3").CurrentRegion.ClearContents


'URL

qurl = "http://chart.yahoo.com/table.csv?s=" & Symbol
qurl = qurl & "&a=" & Month(StartDate) - 1 & "&b=" & Day(StartDate) & _
"&c=" & Year(StartDate) & "&d=" & Month(EndDate) - 1 & "&e=" & _
Day(EndDate) & "&f=" & Year(EndDate) & "&g=" & Range("D1") & "&q=q&y=0&z=" & _
Symbol & "&x=.csv"
Range("E1") = qurl

' On Error GoTo GestionnaireErreur1

QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("BY3"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
' .SaveData = False
End With


Columns("BY:BY").Select
Selection.TextToColumns Destination:=Range("BY1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1)), TrailingMinusNumbers:=True


Range("BY4:CE5003").Select
Selection.Sort Key1:=Range("BY4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

'Index
Application.StatusBar = "Création index..."

Range("BW4").FormulaR1C1 = "1"
Dim MonTableau As Range
dernièreLigne = Range("BY65536").End(xlUp).Row
Set MonTableau = Range("BW5:BW" & dernièreLigne)
MonTableau.Select
MonTableau.FormulaR1C1 = "=IF(RC[2]<>"""",R[-1]C+1,"""")"


Range("BY:BY").Copy
Range("BX:BX").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("BX:BX").NumberFormat = "d/mmm/yyyy h:mm"

 

 

 


Dim MonTableaumaxcinqmillequatre As Range
Dim Dligne As Long
Dim Bligne As Long
Dligne = Range("BY" & Rows.Count).End(xlUp).Offset(-1, 0).Row
Bligne = 5007 - Dligne
Set MonTableaumaxcinqmillequatre = Range("BW4:CE" & Dligne)
MonTableaumaxcinqmillequatre.Select
Selection.Copy

'
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Columns("BW:CE").Select
Selection.Delete Shift:=xlToLeft

'Efface les cellules vides contenant une formule pour que les series de données s'arrettent en
'même temps que le cours OHLC dans le graphique
Range("P5:AI5").Select
Application.CutCopyMode = False
Selection.Copy
Range("P6:AI5003").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False


Dim MonTableau2 As Range

dernièreLigne = Range("A65536").End(xlUp).Offset(1, 0).Row
Set MonTableau2 = Range("P5004:AI" & dernièreLigne)
MonTableau2.Select
Selection.Delete
Range("C1").Select
Sheets("Backtest").Select


Range("P15") = Range("$Bj$5").Value


ActiveSheet.ChartObjects("Graphique 1244").Activate

ActiveChart.PlotArea.Select
ActiveChart.Shapes("Text Box 3").Select
Selection.Formula = "Backtest!$L$4"
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Calibri"
.FontStyle = "Gras"
.Size = 8
.ColorIndex = 3
.Background = xlOpaque
End With

Range("C5").Select

 

 

 

 

Call Position
Call Position

 

 

 

End Sub

Sub Echelle()

Application.ScreenUpdating = False
Dim ChartVar As Chart
Dim lMax As Long, lMin As Long
With ActiveSheet
lMax = .Range("Max").Value
lMin = .Range("Min").Value

Set ChartVar = .ChartObjects("Graphique 1244").Chart


With ChartVar.Axes(xlValue, xlPrimary)
.MinimumScale = lMin
.MaximumScale = lMax
End With

With ChartVar.Axes(xlValue, xlSecondary)
.MinimumScale = lMin
.MaximumScale = lMax
End With

End With

n = Sheets("Backtest").Range("$U$5")
z = Sheets("Backtest").Range("$U$26")

Sheets("Backtest").Shapes("Scroll Bar 1227").Select
With Selection
.Max = n - (0.36 * z)
.Display3DShading = True
End With

Range("$C$5").Select

End Sub

Sub Position()

Call M5MatriceMulti
Call Echelle
n = Sheets("Backtest").Range("$U$5")
z = Sheets("Backtest").Range("$U$26")
Sheets("Backtest").Shapes("Scroll Bar 1227").Select
With Selection
.Value = n - (0.8 * z)
.Max = n - (0.2 * z)
.Display3DShading = True
End With
Range("$C$5").Select

 

End Sub

 

Module M2Import2


'............................................................................
'. Module M2Import2 .
'............................................................................
'. .
'. DESCRIPTION........ : Module d'importation de l'historique Trades .
'. .
'. .
'. .
'. AUTEUR............. : Bagi de http://turtlesignal.e-monsite.com/ .
'. .
'. .
'. .
'............................................................................
'. MODIFIE LE ../../.... PAR ...................... .
'. DESCRIPTION DE LA MODIFICATION : .
'. .
'............................................................................

 


Sub PA20MAJMesTrades()
Sheets("Mes Trades").Select
MsgBox "1. Dans le Terminal MT4, Selectionnez Historique du Compte" & Chr(10) & "2. Avec le bouton droit de la souris sélectionnez Toute l'Historique" & Chr(10) & "3. Puis Enregistrez au Format Rapport" & Chr(10) & "4. Dans TYPE séléctionnez Tous fichiers (all files)" & Chr(10) & "5. Choisissez MonHistoriqueAT.xls & Enregistrez." & Chr(10) & "6. Cliquez sur OK", vbCritical + vbOKOnly, "Travaux Manuels"

Call M5ClearMesTrades
Call M84StopCalculs
Call M4MesTrades
Application.StatusBar = "Merci de patienter..."
Call M85RepriseCalculs
Call M6FormulesMesrades
Application.StatusBar = False
Windows("MonHistoriqueAT.xls").Close SaveChanges:=False
Sheets("Performances").Activate
ActiveWindow.ScrollColumn = 21


Exit Sub

End Sub


Sub M4MesTrades()

'Ouverture et Prépa
Workbooks.Open Filename:="C:\AT - Journal Dynamique\MonHistoriqueAT.xls"
'défusionner
Cells.Select
With Selection
.VerticalAlignment = xlBottom
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
'Mise en Format
Range("N:N").Select
Selection.Replace What:=" ", Replacement:="'", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'Et ligne à partir de Summary:
Cells.Find(What:="Summary:", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveSheet.Rows(ActiveCell.Row).EntireRow.Select
ActiveCell.Rows("1:4").EntireRow.Select
Selection.Replace What:=" ", Replacement:="'", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

 

Dim MonTableau As Range
Sheets("MonHistoriqueAT").Select
dernièreLigne = Range("A65536").End(xlUp).Row

Set MonTableau = Range("A5:N" & dernièreLigne)
MonTableau.Select

Selection.Copy
Windows("Journal dynamique v0.1.xls").Activate
Sheets("Mes Trades").Select
Range("A1").Select
Application.StatusBar = "Recopie Mes Trades pour la période sélectionnée..."
ActiveSheet.Paste
Cells.Select
'défusionner
With Selection
.VerticalAlignment = xlBottom
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Interior.ColorIndex = xlNone
Selection.RowHeight = 9.75

With Selection.Font
.Size = 7
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
Range(Range("A1"), Range("N1")).Font.Bold = True

Application.StatusBar = "Merci de patienter..."
Cells.Find(What:="Closed P/L:", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

ActiveCell.Offset(-1, 0).Range("A1").Select

ActiveSheet.Rows(ActiveCell.Row).EntireRow.Select
ActiveCell.Rows("1:21").EntireRow.Select
Selection.ClearContents
Range("A1").Select
Rows("1:1").RowHeight = 53.25

Application.StatusBar = "Préparation du graphique..."

 

End Sub

Sub M5ClearMesTrades()
Range("A2:N6000").ClearContents
Range("AR:AU").ClearContents
Range("A1").Select
End Sub


Sub M6FormulesMesrades()


'Recherche date Historique adaptation Banzaï
'1. Recopiage valeurs sans formule
Columns("O:P").Select
Selection.Copy
Columns("AR:AS").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.NumberFormat = "m/d/yyyy"
Selection.Font.ColorIndex = 0


Range("AR1:AS" & Range("AR" & Rows.Count).End(xlUp).Row).AdvancedFilter _
Action:=xlFilterCopy, Unique:=True, CopyToRange:=Range("AT1:AU1")

Range("AT1:AU" & Range("AT" & Rows.Count).End(xlUp).Row).Sort Key1:=Range("AT2"), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

'Voir en D Deposit
Columns("D:D").ColumnWidth = 12.5


'Mois
Range("P3:P6000").FormulaR1C1 = _
"=CHOOSE(MONTH(RC9),""Janvier"",""Février"",""Mars"",""Avril"",""Mai"",""Juin"",""Juillet"",""Août"",""Septembre"",""Octobre"",""Novembre"",""Décembre"" )"

'Deposit
Range("Q2:Q6000").FormulaR1C1 = _
"=IF(ISERROR(SEARCH(""Deposit"",RC[-13],1)),"""",""Deposit"")"

'Fee

Range("R2:R6000").FormulaR1C1 = _
"=IF(ISERROR(SEARCH(""Fee"",RC[-14],1)),"""",""Fee"")"
'Withdrawal

Range("S2:S6000").FormulaR1C1 = _
"=IF(ISERROR(SEARCH(""Withdrawal"",RC[-15],1)),"""",""Withdrawal"")"

'ADJ
Range("T2:T6000").FormulaR1C1 = _
"=IF(ISERROR(SEARCH(""ADJ"",RC[-16],1)),"""",""ADJ"")"

'CommercialGest
Range("U2:U6000").FormulaR1C1 = _
"=IF(ISERROR(SEARCH(""CommercialGest"",RC[-17],1)),"""",""CommercialGest"")"

 

'Control Profit en V et C14=N
Range("V3:V6000").FormulaR1C1 = "=+RC14"

Range("O1").Select

End Sub

 

 

Module8Backtest

'............................................................................
'. Module M8Backtest .
'............................................................................
'. .
'. DESCRIPTION........ : Module d'exéctution et d'enregistrement des .
'. stratégies basées sur des "algos" simples à .
'. 4 variables et 2 conditions .
'. .
'. AUTEUR............. : Bagi de http://turtlesignal.e-monsite.com/ .
'. .
'............................................................................

 

Sub SignauxPlay()
'Procédure d'exécution dont le bouton se trouve sur l'onglet Backtest


'l'écran reste sur l'onglet en cours même si des procédures s'executent sur d'autres onglets
Application.ScreenUpdating = False
'efface les signaux achat vente de la stratégie précédante
Sheets("Cours & Archives").Range("T5:U5003").ClearContents


'Définition des variables b et s contenant une formule dont les adresses sont des cellules de
'l'onglet Cours & Archives à savoir :

'Séries de données adresses/cellules de l'onglet Cours & Archives à savoir :
'................................................................................

'Bol#1- $AE5
'Bol#1+ $AG5
'Bol#1+n-1 $AG4
'Bol#1-n-1 $AE4
'Bol#2- $AH5
'Bol#2+ $Ai5
'Bol#2+n-1 $Ai4
'Bol#2-n-1 $AH4
'Close $I5
'Close n-1 $I4
'EMA#1 $V5
'EMA#1 n-1 $V4
'EMA#2 $W5
'EMA#2 n-1 $W4
'ET Bol#1 $U$19
'ET Bol#2 $U$20
'High $E5
'High n-1 $E4
'Low $F5
'Low n-1 $F4
'MMA $AF5
'MMA n-1 $AF4
'MMA#2 $Z5
'MMA#2 n-1 $Z4
'MMA#3 $AD5
'MMA#3 n-1 $AD4
'Open $D5
'Open n-1 $D4
'SR3 $X4
'SS3 $Y4

'La formule est crée sur l'onglet Backtest cependant la formule est destinée à l'onglet Cours & Archives,
'c'est une complication due à séparation en deux onglets des données et du graphique


'Définition variables (formules) et leurs adresses
'Le but de cette procédure est de stocker une formule sous forme de texte AB6 et AC6 et de la coller ailleurs sous forme
'd'une formule opérationnelle avant de l'envoyer dans l'onglet Cours & Archives pour une exéction par ligne
Dim b As String
Dim s As String
b = Range("AB6")
s = Range("AC6")

Range("AD3").FormulaLocal = b
Range("AE3").FormulaLocal = s


'Quand l'une des stratégies est sélectionnée dans la cellule $C$5 grise (sélectionneur de stratégies)
'et correspond à celle dans la liste ($W$6:$W$13) le bouton play va chercher toutes les variables concernées par
'celle-ci et l'exécute pour faire apparaitre les signaux propres à chacune d'elle.
Sheets("BACKTEST").Select
' 'EET
If Range("$C$5") = Range("$W$6") Then
'Copie les variables des séries de données. Ex : Périodes correspondantes à l'EMA#1 = 7
'Dans l'interface graphique
Range("AF5:AF17").Copy
Range("U18").Select
ActiveSheet.Paste

'Copie les variables et formules des adresses correspondantes
'aux cellules de calculs de l'onglet Cours & Archives dans le conditionneur
Range("X18:AN18").Copy
Range("B6").Select
ActiveSheet.Paste
Range("X19:AN19").Copy
Range("B10").Select
ActiveSheet.Paste
End If
'
' 'Retournement
If Range("$C$5") = Range("$W$7") Then
Range("AG5:AG17").Copy
Range("U18").Select
ActiveSheet.Paste
Range("X20:AN20").Copy
Range("B6").Select
ActiveSheet.Paste
Range("X21:AN21").Copy
Range("B10").Select
ActiveSheet.Paste
'
End If
'
'Croisement
If Range("$C$5") = Range("$W$8") Then
Range("AH5:AH17").Copy
Range("U18").Select
ActiveSheet.Paste
Range("X22:AN22").Copy
Range("B6").Select
ActiveSheet.Paste
Range("X23:AN23").Copy
Range("B10").Select
ActiveSheet.Paste
End If
'
' 'Turbo CAC
If Range("$C$5") = Range("$W$9") Then
Range("AI5:AI17").Copy
Range("U18").Select
ActiveSheet.Paste
Range("X24:AN24").Copy
Range("B6").Select
ActiveSheet.Paste
Range("X25:AN25").Copy
Range("B10").Select
ActiveSheet.Paste
End If
'
'Turbo DAX
If Range("$C$5") = Range("$W$10") Then
Range("AJ5:AJ17").Copy
Range("U18").Select
ActiveSheet.Paste
Range("X26:AN26").Copy
Range("B6").Select
ActiveSheet.Paste
Range("X27:AN27").Copy
Range("B10").Select
ActiveSheet.Paste
End If
'
'Ma strat 1
If Range("$C$5") = Range("$W$11") Then
Range("AK5:AK17").Copy
Range("U18").Select
ActiveSheet.Paste
Range("X28:AN28").Copy
Range("B6").Select
ActiveSheet.Paste
Range("X29:AN29").Copy
Range("B10").Select
ActiveSheet.Paste
End If
'
'Ma strat 2
If Range("$C$5") = Range("$W$12") Then
Range("AL5:AL17").Copy
Range("U18").Select
ActiveSheet.Paste
Range("X30:AN30").Copy
Range("B6").Select
ActiveSheet.Paste
Range("X31:AN31").Copy
Range("B10").Select
ActiveSheet.Paste
End If

' Ma strat 3
If Range("$C$5") = Range("$W$13") Then
Range("AM5:AM17").Copy
Range("U18").Select
ActiveSheet.Paste
Range("X32:AN32").Copy
Range("B6").Select
ActiveSheet.Paste
Range("X33:AN33").Copy
Range("B10").Select
ActiveSheet.Paste
End If


'Copie les formules opérationnelles
Range("AD3:AE3").Select
Selection.Copy
'Création de la sélection de destination
Sheets("Cours & Archives").Select
Dim MonTableau As Range
dernièreLigne = Range("A65536").End(xlUp).Row
Set MonTableau = Range("T5:U" & dernièreLigne)
MonTableau.Select
'Colle les formules opérationnelles
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False


'Retour sur l'onglet Backtest
Sheets("BACKTEST").Select
'Positionnement
ActiveWindow.ScrollColumn = 1
ActiveWindow.SmallScroll Down:=0
Range("$C$5").Select
End Sub


Sub StockerFormule()

'l'écran reste sur l'onglet en cours même si des procédures s'executent sur d'autres onglets
Application.ScreenUpdating = False

'EET
If Range("$C$5") = Range("$W$6") Then
'Copie les formules texte
Range("X6:Y6").Select
Selection.Copy
'Vers Stockage formules texte
Range("Z6:AA6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'Copie les variables des toutes les séries de données. Ex : Périodes correspondantes à l'EMA#1 = 7, etc...
'de l'interface graphique
Range("U18:U30").Select
Selection.Copy
'vers Stockage variables des séries de données par stratégies
Range("AF5").Select
ActiveSheet.Paste

'Copie les variables du conditionneur
Range("B6:R6").Select
Selection.Copy
'vers Stockage des variables du conditionneur
Range("X18").Select
ActiveSheet.Paste
Range("B10:R10").Select
Application.CutCopyMode = False
Selection.Copy
Range("X19").Select
ActiveSheet.Paste
End If

'Retournement
If Range("$C$5") = Range("$W$7") Then
'Copie les formules texte
Range("X7:Y7").Select
Selection.Copy
'Vers Stockage formules texte
Range("Z7:AA7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'DM
Range("U18:U30").Select
Selection.Copy
Range("AG5").Select
ActiveSheet.Paste

'condition
Range("B6:R6").Select
Selection.Copy
Range("X20").Select
ActiveSheet.Paste
Range("B10:R10").Select
Application.CutCopyMode = False
Selection.Copy
Range("X21").Select
ActiveSheet.Paste

End If

'Croisement
If Range("$C$5") = Range("$W$8") Then
Range("X8:Y8").Select
Selection.Copy
Range("Z8:AA8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'DM
Range("U18:U30").Select
Selection.Copy
Range("AH5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'condition Sell
Range("B6:R6").Select
Selection.Copy
Range("X22").Select
ActiveSheet.Paste
Range("B10:R10").Select
Application.CutCopyMode = False
Selection.Copy
Range("X23").Select
ActiveSheet.Paste

End If

'Turbo CAC
If Range("$C$5") = Range("$W$9") Then
Range("X9:Y9").Select
Selection.Copy
Range("Z9:AA9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


'DM
Range("U18:U30").Select
Selection.Copy
Range("AI5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'condition Sell
Range("B6:R6").Select
Selection.Copy
Range("X24").Select
ActiveSheet.Paste
Range("B10:R10").Select
Application.CutCopyMode = False
Selection.Copy
Range("X25").Select
ActiveSheet.Paste
End If

'Turbo DAX
If Range("$C$5") = Range("$W$10") Then
Range("X10:Y10").Select
Selection.Copy
Range("Z10:AA10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


'DM
Range("U18:U30").Select
Selection.Copy
Range("AJ5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'condition Sell
Range("B6:R6").Select
Selection.Copy
Range("X26").Select
ActiveSheet.Paste
Range("B10:R10").Select
Application.CutCopyMode = False
Selection.Copy
Range("X27").Select
ActiveSheet.Paste
End If

'Ma strat 1
If Range("$C$5") = Range("$W$11") Then
Range("X11:Y11").Select
Selection.Copy
Range("Z11:AA11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'DM
Range("U18:U30").Select
Selection.Copy
Range("AK5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'condition Sell
Range("B6:R6").Select
Selection.Copy
Range("X28").Select
ActiveSheet.Paste
Range("B10:R10").Select
Application.CutCopyMode = False
Selection.Copy
Range("X29").Select
ActiveSheet.Paste
End If

'Ma strat 2
If Range("$C$5") = Range("$W$12") Then
Range("X12:Y12").Select
Selection.Copy
Range("Z12:AA12").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'DM
Range("U18:U30").Select
Selection.Copy
Range("AL5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'condition Sell
Range("B6:R6").Select
Selection.Copy
Range("X30").Select
ActiveSheet.Paste
Range("B10:R10").Select
Application.CutCopyMode = False
Selection.Copy
Range("X31").Select
ActiveSheet.Paste
End If

'Ma strat 3
If Range("$C$5") = Range("$W$13") Then
Range("X13:Y13").Select
Selection.Copy
Range("Z13:AA13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'DM
Range("U18:U30").Select
Selection.Copy
Range("AM5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'condition Sell
Range("B6:R6").Select
Selection.Copy
Range("X32").Select
ActiveSheet.Paste
Range("B10:R10").Select
Application.CutCopyMode = False
Selection.Copy
Range("X33").Select
ActiveSheet.Paste

End If
ActiveWindow.ScrollColumn = 1
Range("$C$5").Select
End Sub

 

Sub AfficherR3S3()
'l'écran reste sur l'onglet en cours même si des procédures s'executent sur d'autres onglets
Application.ScreenUpdating = False
Sheets("Cours & Archives").Select
Range("X:X,Y:Y").Select
Selection.EntireColumn.Hidden = False
Sheets("BACKTEST").Select

Range("$C$5").Select
End Sub
Sub MasquerR3S3()
'l'écran reste sur l'onglet en cours même si des procédures s'executent sur d'autres onglets
Application.ScreenUpdating = False
Sheets("Cours & Archives").Select
Range("X:X,Y:Y").Select
Selection.EntireColumn.Hidden = True
Sheets("BACKTEST").Select

Range("$C$5").Select
End Sub


Sub M83EffacerCondition()

Select Case MsgBox("Vous allez effacer toutes les variables du conditionneur." & Chr(10) & "Est-ce c'est ce que vous voulez ?", vbCritical + vbOKCancel, "Alerte !")
Case vbOK
Range("C6:F6,H6:L6,C10:F10,H10:L10").Select
Selection.ClearContents
Case vbCancel
Exit Sub
End Select

End Sub

 

 

 

'WAF
'2 ' Les variables "signaux" de la formule doivent être stockées à la manière des formules rappelées et enregistrées comme
'Sub StockerFormule() mais stockervariables et doivent être modifiées après enregistrement

'3 'De la même manière les valeurs paramètres des MM et boll doivent être stockées et rappelées
'4 la structure de la formule doit fonctionnelle qu'elle que soit le type de contion cad
' un coup ET 2x un coup OU 3x en gros pas d'abération formule avec les points virgules

'5 Il faut un solveur dont la contraite 1) serait la performance et que la formule s'ajuste
'contrainte 2 = buy ou sell; contrainte 3 ?

'6 Il faut protéger la feuille et les cellules

 

'pour modifier le nombre de conditions de la formule
' soit 2 et tel type de formule (ex de buy)
' soit 3 et tel type de formule (ex de sell)
' soit 4 et tel type de formule (non réalisé)

'idée / mettre un selectionneur de formule type a l'endroit de formule du selectionneur avec les differents type de formule et basta


Sub TestBID()

Dim c As String
Dim d As String
Dim e As String
Dim f As String
Dim g As String
c = Range("D1")
d = Range("F1")
e = Range("H1")
f = Range("J1")
g = Range("L1")

Range("D2").FormulaLocal = c
Range("F2").FormulaLocal = d
Range("H2").FormulaLocal = e
Range("J2").FormulaLocal = f
Range("L2").FormulaLocal = g
End Sub

Module M9TM4


'............................................................................
'. Module M9Import2 .
'............................................................................
'. .
'. DESCRIPTION........ : Module d'importation des Open Trades .
'. .
'. .
'. .
'. AUTEUR............. : Bagi de http://turtlesignal.e-monsite.com/ .
'. .
'. .
'............................................................................


Sub PA90MajTerminal()
MsgBox "1. Dans le Terminal MT4, Selectionnez Historique du Compte" & Chr(10) & "2. Avec le bouton droit de la souris sélectionnez Toute l'Historique" & Chr(10) & "3. Puis Enregistrez au Format Rapport" & Chr(10) & "4. Dans TYPE séléctionnez Tous fichiers (all files)" & Chr(10) & "5. Choisissez MonHistoriqueAT.xls & Enregistrez." & Chr(10) & "6. Cliquez sur OK", vbCritical + vbOKOnly, "Travaux Manuels"
Application.ScreenUpdating = False
Call MiseenPage
Call formulejd
Call BidAsk
Range("A1").Select
Windows("MonHistoriqueAT.xls").Close SaveChanges:=False
Application.StatusBar = False
End Sub
Sub MiseenPage()
Application.StatusBar = "Merci de patienter..."

'Ouverture et Prépa
Workbooks.Open Filename:="C:\AT - Journal Dynamique\MonHistoriqueAT.xls"
'défusionner
Cells.Select
With Selection
.VerticalAlignment = xlBottom
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
'Mise en Format des milliers sans espace
Range("N:N").Select
Selection.Replace What:=" ", Replacement:="'", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'Et à partir de Summary:
Cells.Find(What:="Summary:", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveSheet.Rows(ActiveCell.Row).EntireRow.Select
ActiveCell.Rows("1:4").EntireRow.Select
Selection.Replace What:=" ", Replacement:="'", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'MEP Centrage ------------------------
Cells.Select
With Selection
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With


'Création Suite
Cells.Find(What:="Closed P/L:", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(-1, 0).Range("A1").Select

ActiveSheet.Rows(ActiveCell.Row).EntireRow.Select

ActiveCell.Rows("1:30").EntireRow.Select
Selection.Cut
Sheets("MonHistoriqueAT").Select
Sheets.Add
ActiveCell.Cells.Select
ActiveSheet.Paste
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "Suite"
Sheets("MonHistoriqueAT").Select
Sheets("MonHistoriqueAT").Move Before:=Sheets(1)
'efface les formules qui ont été copiée par colonnes entière
Rows("8025:8025").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.ClearContents

'Création Suite 2
Sheets("Suite").Select
Cells.Find(What:="Working Orders:", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(-2, 0).Range("A1").Select
MaCelulle = ActiveCell.Address
ActiveSheet.Rows(ActiveCell.Row).EntireRow.Select
ActiveCell.Rows("1:30").EntireRow.Select
Selection.Cut
Sheets("Suite").Select
Sheets.Add
Sheets("Feuil2").Select
ActiveCell.Cells.Select
ActiveSheet.Paste
Sheets("Feuil2").Move After:=Sheets(3)
Sheets("Feuil2").Name = "Suite2"


' Px Pip
Sheets("Suite").Select
Range("P5:P20").FormulaR1C1 = "=IF(RC[-15]<>"""",ABS(RC[-2]/(RC[-10]-RC[-6])),"""")"
Range("Q5:Q20").FormulaR1C1 = _
"=IF(RC[-16]<>"""",IF(RC[-1]>100,RC[-1]/100000,RC[-1]),"""")"

 


End Sub


'WAF pour BidAsk
' pour le bouton Forcer faire une formule de chaque en commencant par name, puis ask et bid,
'pourquoi ne pas le faire des le départ ?
'MODIFIER LA PROCéDURE Sub BidAsk() PAR ForcerBidAsk() ET TENTER DE SUPPRIMER LE BOUTON FORCER
Sub formulejd()

Range("A5:D20").Select
Selection.Copy
Windows("Journal dynamique v0.1.xls").Activate
Range("C7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'Item
Windows("MonHistoriqueAT.xls").Activate
Sheets("Suite").Select
Range("E5:E20").Select
Selection.Copy
Windows("Journal dynamique v0.1.xls").Activate
Range("H7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'PxPIP en I
Windows("MonHistoriqueAT.xls").Activate
Sheets("Suite").Select
Range("Q5:Q20").Select
Selection.Copy
Windows("Journal dynamique v0.1.xls").Activate
Range("I7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'Px
Windows("MonHistoriqueAT.xls").Activate
Sheets("Suite").Select
Range("F5:F20").Select
Selection.Copy
Windows("Journal dynamique v0.1.xls").Activate
Range("K7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'SL
Windows("MonHistoriqueAT.xls").Activate
Sheets("Suite").Select
Range("G5:G20").Select
Selection.Copy
Windows("Journal dynamique v0.1.xls").Activate
Range("Q7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'TP
Windows("MonHistoriqueAT.xls").Activate
Sheets("Suite").Select
Range("H5:H20").Select
Selection.Copy
Windows("Journal dynamique v0.1.xls").Activate
Range("V7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'
' 'L et M représentent R MAX et proviennent de l'onglet MM
' 'N et O représentent le ration Bénéfice/Risque et provient de l'onglet MM
'

'
'
''MEP
' 'Interior.ColorIndex = gris clair
' Range("C8:AG8,C10:AG10,C12:AG12,C14:AG14,C16:AG16,C18:AG18,C20:AG20,C22:AG22"). _
' Select
' Selection.Interior.ColorIndex = 15
' 'Interior.ColorIndex = bleu clair
' Range("C7:AG7,C9:AG9,C11:AG11,C13:AG13,C15:AG15,C17:AG17,C19:AG19,C21:AG21"). _
' Select
' Selection.Interior.ColorIndex = 37
'
' 'style bordure int. blanche
' Range("C5:AG22").Select
' Selection.Borders(xlDiagonalDown).LineStyle = xlNone
' Selection.Borders(xlDiagonalUp).LineStyle = xlNone
' Selection.Borders(xlEdgeLeft).LineStyle = xlNone
' With Selection.Borders(xlEdgeTop)
' .LineStyle = xlContinuous
' .Weight = xlThin
' .ColorIndex = 2
' End With
' Selection.Borders(xlEdgeBottom).LineStyle = xlNone
' Selection.Borders(xlEdgeRight).LineStyle = xlNone
' With Selection.Borders(xlInsideVertical)
' .LineStyle = xlContinuous
' .Weight = xlThin
' .ColorIndex = 2
' End With
' With Selection.Borders(xlInsideHorizontal)
' .LineStyle = xlContinuous
' .Weight = xlThin
' .ColorIndex = 2
' End With
'
'
'
'
'
'
'Equité, Balance, marge, marge dispo
' Equité
Range("F24").Select
ActiveCell.FormulaR1C1 = "=+[MonHistoriqueAT.xls]Suite2!R10C9"



' 'Balance
' Range("AK24").Select
' ActiveCell.FormulaR1C1 = "=+[MonHistoriqueAT.xls]Suite2!R10C4"
' Equité
' Range("F24").Select
' ActiveCell.FormulaR1C1 = "=+[MonHistoriqueAT.xls]Suite2!R10C10"
' 'Marge
'Range("I24").Select
'ActiveCell.FormulaR1C1 = "=+[MonHistoriqueAT.xls]Suite2!R9C14"
'Marger Disp ? N24
'Marge Limite ? T24

'
'
' '????
' 'Range("M24:O24").Select
' 'ActiveCell.FormulaR1C1 = "=+[MonHistoriqueAT.xls]Suite2!R10C14"
'
'
'
'
'
' 'Clignotement : Créer un Format/Style/"Flashing
' 'If Range("R7:R22") = 0 Then
' 'StartFlash
'
'
' 'ActiveWorkbook.Save
''
'' Windows("MonHistoriqueAT.xls").Activate
'' ActiveWorkbook.Save
'' ActiveWorkbook.Close
'
End Sub


Sub BidAsk()

M85RepriseCalculs
'Ligne 7 F1
Dim a As String
Dim ag As String
a = [AK7]
ag = [AL7]
[AD7].FormulaLocal = a
[AE7].FormulaLocal = ag

'Ligne 8 F2
Dim c As String
Dim d As String
c = [AK8]
d = [AL8]
[AD8].FormulaLocal = c
[AE8].FormulaLocal = d

'Ligne 9 F3
Dim e As String
Dim f As String
e = [AK9]
f = [AL9]
[AD9].FormulaLocal = e
[AE9].FormulaLocal = f

'Ligne 10 F4
Dim g As String
Dim h As String
g = [AK10]
h = [AL10]
[AD10].FormulaLocal = g
[AE10].FormulaLocal = h

'Ligne 11 F5
Dim i As String
Dim j As String
i = [AK11]
j = [AL11]
[AD11].FormulaLocal = i
[AE11].FormulaLocal = j

'Ligne 12 F6
Dim k As String
Dim l As String
k = [AK12]
l = [AL12]
[AD12].FormulaLocal = k
[AE12].FormulaLocal = l

'Ligne 13 F7
Dim M As String
Dim n As String
M = [AK13]
n = [AL13]
[AD13].FormulaLocal = M
[AE13].FormulaLocal = n

'Ligne 14 F8
Dim o As String
Dim p As String
o = [AK14]
p = [AL14]
[AD14].FormulaLocal = o
[AE14].FormulaLocal = p

'Ligne 15 F9
Dim q As String
Dim R As String
q = [AK15]
R = [AL15]
[AD15].FormulaLocal = q
[AE15].FormulaLocal = R

'Ligne 16 F10
Dim ah As String
Dim t As String
ah = [AK16]
t = [AL16]
[AD16].FormulaLocal = ah
[AE16].FormulaLocal = t

'Ligne 17 F11
Dim u As String
Dim v As String
u = [AK17]
v = [AL17]
[AD17].FormulaLocal = u
[AE17].FormulaLocal = v

'Ligne 18 F12
Dim w As String
Dim X As String
w = [AK18]
X = [AL18]
[AD18].FormulaLocal = w
[AE18].FormulaLocal = X

'Ligne 19 F13
Dim Y As String
Dim z As String
Y = [AK19]
z = [AL19]
[AD19].FormulaLocal = Y
[AE19].FormulaLocal = z

'Ligne 20 F14
Dim aa As String
Dim ab As String
aa = [AK20]
ab = [AL20]
[AD20].FormulaLocal = aa
[AE20].FormulaLocal = ab

'Ligne 21 F15
Dim ac As String
Dim ad As String
ac = [AK21]
ad = [AL21]
[AD21].FormulaLocal = ac
[AE21].FormulaLocal = ad

'Ligne 22 F16
Dim ae As String
Dim af As String
ae = [AK22]
af = [AL22]
[AD22].FormulaLocal = ae
[AE22].FormulaLocal = af



' M84StopCalculs

End Sub

'Sub ForcerBidAsk()
'
''Range("AD7").Select
' 'ActiveCell.FormulaR1C1 = Range("AD5").Value & Range("H7").Value
'
'Range("AD27").Select
'ActiveCell.FormulaR1C1 = "=MT4|NAME!Gold"
''ActiveCell.FormulaR1C1 = "=MT4|ASK!GOLD"
''ActiveCell.FormulaR1C1 = "=MT4|BID!Gold"
''
''
''
''
''
''
''
''
''ActiveCell.FormulaR1C1 = "=MT4|NAME!" & [H7].Value
''ActiveCell.FormulaR1C1 = "=MT4|BID!" & [H7].Value
''ActiveCell.FormulaR1C1 = "=MT4|NAME!Ger30dec12"
''ActiveCell.FormulaR1C1 = "=MT4|ASK!ger30dec12"
''ActiveCell.FormulaR1C1 = "=MT4|BID!ger30dec12"
''Selection.ClearContents
'
'End Sub
'
''Sub StartFlash()
''Dim NextTime As Date
'NextTime = Now + TimeValue("00:00:03")
'With ActiveWorkbook.Styles("Flashing").Font
'If .ColorIndex = xlAutomatic Then .ColorIndex = 3
'.ColorIndex = 5 - .ColorIndex
'End With
'Application.OnTime NextTime, "StartFlash"
'End Sub
'
'Sub StopFlash()
''On Error Resume Next
'Application.OnTime NextTime, "StartFlash", Schedule:=False
'ActiveWorkbook.Styles("Flashing").Font.C… = xlAutomatic
'End Sub
'
'

Commentaires (6)

1. bagi (site web) 09/02/2014

Excel 2007 pour demarrer ROBALGO depuis Excel 2007 : 1 à l'ouverture accepter tous les contenus et options 2 / a) Cliquer sur la bulle Office (en haut à gauche) b) Cliquer sur Option Excel (en bas à droite de la liste déroulante) c) Dans la partie Centre de gestion de la confidentialité, cliquer sur le bouton Paramètres du Centre de gestion de la confidentialité... d) Dans Paramètre des macros, cocher l'option que vous souhaitez selon les cas. Dans le mien, c'est Activer toutes les macros.

2. bagi (site web) 08/02/2014

hello, le mdp est 1234, je refonds le prog et t'envois une copie, mais ça va me prendre un peu de temps. Je me rends compte qu'en fusionnant les deux systèmes d'extractions Yahoo et MT4, ils sont devenus dépendant l'un de l'autre. Je vais executer le code pas à pas pour tenter de les rendre indépendant.

3. bagi (site web) 07/02/2014

Merci de votre patience je regarde cela ce WE

4. Pierre 01/02/2014

Bonjour,
Travail bien fait excellent, mais il y a un bug que je n'arrive pas à corriger. J'ai Excel 2007 et lorsque j'ouvre le fichier dynamique v0.1 il me donne un message d'erreur dans le module automate sub message1() du type:
("erreur de configuration: projet ou bibliothèque introuvable") "chr" est sélectionné.
Alors je recherche dans le menu outils et références à nouveau une fenêtre avec pou message ("VBAProjet et me demande un mot de passe.
Je ne peu donc pas l'utiliser, comment faire.
Cordialement,
Pierre.

5. bagi (site web) 26/11/2013

Hello Eriiic,

Merci pour les commentaires, je corrige tout ça cet hiver, A bientôt

6. Eriiic 28/09/2013

Bonjour,

D'abord bravo, apparemment tu t'es bien battu et le résultat est joli, mais je n'ai pas pu aller bien loin.
J'ai voulu jeter un oeil et voilà le résultat :
- à l'ouverture essaie 5 fois de lancer MT4.exe (que je n'ai pas) et autant de 'non' à cliquer, ça serait bien de le demander une fois au début.
- du coup plante ensuite à :
Private Sub Workbook_Open()
... ActiveWorkbook.UpdateLink Type:=xlOLELinks

Ensuite sur le site je veux télécharger at-journal-dynamique.xls : Erreur 404

Ne me laissant pas abattre j'essaie le bouton 'Importer Mes Trades MT4' et j'obtiens 'Sub non défini' sur :
Sub PA20MAJMesTrades()
... Call M84StopCalculs
puis sur : Call M85RepriseCalculs, mis en commentaire aussi pour continuer.
Et ça se lance, pas pour longtemps. 1ère ligne : Sheets("Mes Trades").Select : cette feuille n'existe pas...

J'ai arrété là... ;-)

eric

PS pour l'erreur
Private Sub CmdROBALGO_Click()
' ROBALGO.Show vbModeless
'erreur
ROBALGO.Show modal
met vbModal ou vbModeless en paramètre

http://forum.excel-pratique.com/post238073.html#p238073

http://forum.excel-pratique.com/post238219.html#p238219

Ajouter un commentaire

Vous utilisez un logiciel de type AdBlock, qui bloque le service de captchas publicitaires utilisé sur ce site. Pour pouvoir envoyer votre message, désactivez Adblock.

 

Creative Commons 2013-2015   |  Mentions légales   A propos  |  Dons  |  Disclaimer  |  PJ  |  Tous droits réservés

ccmini.jpg       ccmicro.jpg    

 

                                                                                                                                                                       

 

Sites partenaires  
 atcac.jpg       trado-1.jpg    ikiu.jpg    fsc.jpg   

 echo.jpg    

 le-monde-de-la-bourse-1.jpg

 

 

 

 

 

 

 

 

Créer un site gratuit avec e-monsite - Signaler un contenu illicite sur ce site