Nous sommes le 22 Jan 2019, 11:41

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 60 messages ]  Aller à la page Précédente  1, 2, 3  Suivante
Auteur Message
MessagePosté: 15 Nov 2018, 20:25 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
Voilà , j'ai MT5, tout est pret


Haut
 Profil  
 
MessagePosté: 16 Nov 2018, 10:37 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Je vais essayer de coder aujourd'hui vendredi 16 novembre jusqu'à 11H30.
Si vous souhaitez coder avec moi, ou me regarder coder en partage d'écran sous Skype ou Hangouts,
je suis dispo.
Mon pseudo Skype Pierre8r
Préciser que c'est pour MQL5.

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 16 Nov 2018, 14:23 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Je vais essayer de coder aujourd'hui vendredi 16 novembre jusqu'à 16H30.
Si vous souhaitez coder avec moi, ou me regarder coder en partage d'écran sous Skype ou Hangouts,
je suis dispo.
Mon pseudo Skype Pierre8r
Préciser que c'est pour MQL5.

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 16 Nov 2018, 16:29 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
ça progresse, mais il y a encore du boulot.


Code:
//+------------------------------------------------------------------+
//|                                         eaPermanentPortfolio.mq5 |
//|                                   Copyright 2018, Pierre Rougier |
//|                                    http://www.apprendre-mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Pierre Rougier"
#property link      "http://www.apprendre-mql5.com"
#property version   "1.00"

#include <Trade\Trade.mqh>

CTrade myTradingControlPanel;

input  int  capital_dedicated_to_strategy=10000;

input string stocks= "VTI";
input string bonds ="TLTUS";
input string cash = "SHY";
input string gold = "GLD";

input int      magicNumber=12345;

int year_saved=0;
bool is_trades_already_open=false;

double total_current_value=0;
double target_value=0;
double current_value_stocks= 0;
double current_value_bonds = 0;
double current_value_cash = 0;
double current_value_gold = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   MqlDateTime mql_datetime;
   TimeToStruct(iTime(_Symbol,_Period,0),mql_datetime);
   year_saved=mql_datetime.year;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(isNewYear())
     {
      if(!is_trades_already_open)
        {StartStrategy();}
      else
        {RebalanceAllAssetsClass();}
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool isNewYear()
  {

   MqlDateTime mql_datetime;
   TimeToStruct(iTime(_Symbol,_Period,0),mql_datetime);

   if(mql_datetime.year!=year_saved)
     {
      year_saved=mql_datetime.year;
      return true;
     }
   else
     {return false;}
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void StartStrategy()
  {
 
   target_value=capital_dedicated_to_strategy/4;

   Print("/*§§*/ total_current_value :"+DoubleToString(total_current_value));
   Print("/*§§*/ target_value :"+DoubleToString(target_value));

   Rebalance(stocks,0);
   Rebalance(bonds,0);
   Rebalance(cash,0);
   Rebalance(gold,0);

   is_trades_already_open=true;

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void RebalanceAllAssetsClass()
  {
   ComputeValuePositionsByAssetsClass();
   total_current_value=current_value_stocks+current_value_bonds+current_value_cash+current_value_gold;
   target_value=total_current_value/4;

   Print("/*§§*/ total_current_value :"+DoubleToString(total_current_value));
   Print("/*§§*/ target_value :"+DoubleToString(target_value));

   Rebalance(stocks,current_value_stocks);
   Rebalance(bonds,current_value_bonds);
   Rebalance(cash,current_value_cash);
   Rebalance(gold,current_value_gold);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Rebalance(string asset_class_type,double current_value_asset)
  {

   double amount=0;
   int  quantity=0;
   double  ask=SymbolInfoDouble(asset_class_type,SYMBOL_ASK);

   if(current_value_asset>target_value)
     {
      amount=current_value_asset-target_value;
      quantity=(int)NormalizeDouble((amount/ask),0);
      if(quantity>0)
        {
         SellSurplusAssetClass(asset_class_type,quantity);
        }
     }
   else
     {
      amount=target_value-current_value_asset;
      quantity=(int)NormalizeDouble((amount/ask),0);
      if(quantity>0)
        {
         BuyMissingPartAssetClass(asset_class_type,quantity);
        }
     }

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BuyMissingPartAssetClass(string asset_class_type,int quantity)
  {

// Open a Buy (i.e. long) position
   myTradingControlPanel.PositionOpen(asset_class_type,ORDER_TYPE_BUY,quantity,
                                      0,
                                      //                                      SymbolInfoDouble(asset_class_type,SYMBOL_ASK),
                                      0,0,"Buy Trade. Magic Number #"
                                      +(string) myTradingControlPanel.RequestMagic());
// Request is completed or order placed
   if(myTradingControlPanel.ResultRetcode()==TRADE_RETCODE_PLACED || myTradingControlPanel.ResultRetcode()==TRADE_RETCODE_DONE)
     {
      Print("Entry rules: A ",asset_class_type," Buy order has been successfully placed with Ticket#: ",myTradingControlPanel.ResultOrder());
     }
   else
     {
      Print("Entry rules: A ",asset_class_type," Buy order request could not be completed. Error: ",GetLastError());
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SellSurplusAssetClass(string asset_class_type,int quantity)
  {
// Close position
   myTradingControlPanel.PositionOpen(asset_class_type,ORDER_TYPE_SELL,quantity,
                                      0,
                                      //                                      SymbolInfoDouble(asset_class_type,SYMBOL_ASK),
                                      0,0,"Sell Trade. Magic Number #"
                                      +(string) myTradingControlPanel.RequestMagic());
// Request is completed or order placed
   if(myTradingControlPanel.ResultRetcode()==TRADE_RETCODE_PLACED || myTradingControlPanel.ResultRetcode()==TRADE_RETCODE_DONE)
     {
      Print("Entry rules: A ",asset_class_type," Sell order has been successfully placed with Ticket#: ",myTradingControlPanel.ResultOrder());
     }
   else
     {
      Print("Entry rules: A ",asset_class_type," Sell order request could not be completed. Error: ",GetLastError());
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ComputeValuePositionsByAssetsClass()
  {
// Loop through all open positions
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      ulong ticketNumber=0;
      // This selects open position by the order they appear in our list of positions
      ticketNumber=PositionGetTicket(i);
      if(ticketNumber==0)
        {
         Print("Exit rules: Position exists but not selected. Error: ",GetLastError());
         ResetLastError();
         continue;
        }

      if(PositionGetInteger(POSITION_MAGIC)==magicNumber)
        {
         string symbol=PositionGetString(POSITION_SYMBOL);

         if(symbol==stocks)
           {
            current_value_stocks=current_value_stocks+PositionGetDouble(POSITION_PRICE_CURRENT);
           }
         else if(symbol==bonds)
           {
            current_value_bonds=current_value_bonds+PositionGetDouble(POSITION_PRICE_CURRENT);
           }
         else if(symbol==cash)
           {
            current_value_cash=current_value_cash+PositionGetDouble(POSITION_PRICE_CURRENT);
           }
         else if(symbol==gold)
           {
            current_value_gold=current_value_gold+PositionGetDouble(POSITION_PRICE_CURRENT);
           }
        }
     }

  };
//+------------------------------------------------------------------+

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 24 Nov 2018, 14:48 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Bonjour,

C'est la première version qui semble tourner.

Image


Code:
//+------------------------------------------------------------------+
//|                                         eaPermanentPortfolio.mq5 |
//|                                   Copyright 2018, Pierre Rougier |
//|                                    http://www.apprendre-mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Pierre Rougier"
#property link      "http://www.apprendre-mql5.com"
#property version   "1.00"

#include <Trade\Trade.mqh>

CTrade trade_control;

input  int  capital_dedicated_to_strategy=10000;

input string stocks= "VTI";
input string bonds ="TLTUS";
input string cash = "SHY";
input string gold = "GLD";

input int      magicNumber=12345;

int year_saved=0;
bool is_trades_already_open=false;

double total_current_value=0;
double target_value=0;
double current_value_stocks= 0;
double current_value_bonds = 0;
double current_value_cash = 0;
double current_value_gold = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

   trade_control.SetExpertMagicNumber(magicNumber); // Set Magic Number

   MqlDateTime mql_datetime;
   TimeToStruct(iTime(_Symbol,_Period,0),mql_datetime);
   year_saved=mql_datetime.year;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(isNewYear())
     {
      if(!is_trades_already_open)
        {StartStrategy();}
      else
        {RebalanceAllAssetsClass();}
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool isNewYear()
  {

   MqlDateTime mql_datetime;
   TimeToStruct(iTime(_Symbol,_Period,0),mql_datetime);

   if(mql_datetime.year!=year_saved)
     {
      year_saved=mql_datetime.year;
      return true;
     }
   else
     {return false;}
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void StartStrategy()
  {

   target_value=capital_dedicated_to_strategy/4;

   Print("/*§§*/ total_current_value :"+DoubleToString(total_current_value));
   Print("/*§§*/ target_value :"+DoubleToString(target_value));

   Rebalance(stocks,0);
   Rebalance(bonds,0);
   Rebalance(cash,0);
   Rebalance(gold,0);

   is_trades_already_open=true;

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void RebalanceAllAssetsClass()
  {
   ComputeValuePositionsByAssetsClass();
   total_current_value=current_value_stocks+current_value_bonds+current_value_cash+current_value_gold;
   target_value=total_current_value/4;

   Print("/*§§*/ total_current_value :"+DoubleToString(total_current_value));
   Print("/*§§*/ target_value :"+DoubleToString(target_value));

   Rebalance(stocks,current_value_stocks);
   Rebalance(bonds,current_value_bonds);
   Rebalance(cash,current_value_cash);
   Rebalance(gold,current_value_gold);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Rebalance(string asset_class_type,double current_value_asset)
  {

   double amount=0;
   int  quantity=0;
   double  ask=SymbolInfoDouble(asset_class_type,SYMBOL_ASK);

   if(current_value_asset>target_value)
     {
      amount=current_value_asset-target_value;
      quantity=(int)NormalizeDouble((amount/ask),0);
      if(quantity>0)
        {
         SellSurplusAssetClass(asset_class_type,quantity);
        }
     }
   else
     {
      amount=target_value-current_value_asset;
      quantity=(int)NormalizeDouble((amount/ask),0);
      if(quantity>0)
        {
         BuyMissingPartAssetClass(asset_class_type,quantity);
        }
     }

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BuyMissingPartAssetClass(string asset_class_type,int quantity)
  {

// Open a Buy (i.e. long) position
   trade_control.PositionOpen(asset_class_type,ORDER_TYPE_BUY,quantity,
                              0,
                              //                                      SymbolInfoDouble(asset_class_type,SYMBOL_ASK),
                              0,0,"Buy Trade. Magic Number #"
                              +(string) trade_control.RequestMagic());
// Request is completed or order placed
   if(trade_control.ResultRetcode()==TRADE_RETCODE_PLACED || trade_control.ResultRetcode()==TRADE_RETCODE_DONE)
     {
      Print("Entry rules: A ",asset_class_type," Buy order has been successfully placed with Ticket#: ",trade_control.ResultOrder());
     }
   else
     {
      Print("Entry rules: A ",asset_class_type," Buy order request could not be completed. Error: ",GetLastError());
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SellSurplusAssetClass(string asset_class_type,int quantity)
  {
// Close position
   trade_control.PositionClosePartial(asset_class_type,quantity);
// Request is completed or order placed
   if(trade_control.ResultRetcode()==TRADE_RETCODE_PLACED || trade_control.ResultRetcode()==TRADE_RETCODE_DONE)
     {
      Print("Entry rules: A ",asset_class_type," Sell order has been successfully placed with Ticket#: ",trade_control.ResultOrder());
     }
   else
     {
      Print("Entry rules: A ",asset_class_type," Sell order request could not be completed. Error: ",GetLastError());
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ComputeValuePositionsByAssetsClass()
  {
// Loop through all open positions
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      ulong ticketNumber=0;
      // This selects open position by the order they appear in our list of positions
      ticketNumber=PositionGetTicket(i);
      if(ticketNumber==0)
        {
         Print("Exit rules: Position exists but not selected. Error: ",GetLastError());
         ResetLastError();
         continue;
        }

      if(PositionGetInteger(POSITION_MAGIC)==magicNumber)
        {
         string symbol=PositionGetString(POSITION_SYMBOL);

         if(symbol==stocks)
           {
            current_value_stocks=current_value_stocks+PositionGetDouble(POSITION_PROFIT);
           }
         else if(symbol==bonds)
           {
            current_value_bonds=current_value_bonds+PositionGetDouble(POSITION_PROFIT);
           }
         else if(symbol==cash)
           {
            current_value_cash=current_value_cash+PositionGetDouble(POSITION_PROFIT);
           }
         else if(symbol==gold)
           {
            current_value_gold=current_value_gold+PositionGetDouble(POSITION_PROFIT);
           }
        }
     }

  };
//+------------------------------------------------------------------+


Fichiers joints:
PPDaily.jpg
PPDaily.jpg [ 141.07 Kio | Vu 706 fois ]

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.
Haut
 Profil  
 
MessagePosté: 24 Nov 2018, 16:13 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
C'est super Pierre !!!
Je vais essayer de mon coté.

Pas de problèmes particuliers pour backtester en multipaires ?

Au fait, en sortant juste un peu du sujet, quel retour d’expérience avec angevoyageur de mql ?
Je sais qu'il est top pour résoudre les pb sur le forum , et en temps que développeur ?


Haut
 Profil  
 
MessagePosté: 24 Nov 2018, 16:30 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Trader55 a écrit:
C'est super Pierre !!!

Merci.

Trader55 a écrit:
Pas de problèmes particuliers pour backtester en multipaires ?

Il faut faire un back test en daily, sinon le back test démarre plus tard.
Ce n’est pas multipaires, c'est multi ETF ;-)
Je n'ai pas encore trouvé la combine pour que le back test ouvre plusieurs graphes, sinon oui il trade muti ETF.

Trader55 a écrit:
Au fait, en sortant juste un peu du sujet, quel retour d’expérience avec angevoyageur de mql ?
Je sais qu'il est top pour résoudre les pb sur le forum , et en temps que développeur ?

Il a travaillé 2 fois pour moi.
A chaque fois je lui ai mis 5 étoiles.

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 24 Nov 2018, 17:09 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
Pour le BT, je vais regarder, ce soir ou demain.

Bonne soirée à toi


Haut
 Profil  
 
MessagePosté: 24 Nov 2018, 19:20 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
Moi çà donne çà :

Fichier(s) joint(s):
Rougier.JPG
Rougier.JPG [ 99.01 Kio | Vu 673 fois ]


Bizarre on a pas les mêmes resultats +20% de 2005 à 2018 pour moi. Je te joins la config du StratTester en PJ.

Mais je pensais que le BT multipaire fonctionnait ainsi :
On désigne un EA et on désigne différentes devises/ETF etc... et L'EA s’exécute sur ces devises.

Or là tu as codé les 4 ETF dans le programme de l'EA.

Tu comprends ce que je veux dire ?

Fichier(s) joint(s):
ReportTester-40511162.zip [5.66 Kio]
Téléchargé 17 fois


Haut
 Profil  
 
MessagePosté: 24 Nov 2018, 20:52 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Moi ça donne ça avec capital de 10 000 $ et en H1.
En principe H1 ne devrait rien changer.
Dans ton fichier zip il n'y a pas les images.


Image

Fichier(s) joint(s):
ReportTester-40507754.zip [47.37 Kio]
Téléchargé 17 fois


Fichiers joints:
PPReportH1.jpg
PPReportH1.jpg [ 91.79 Kio | Vu 663 fois ]

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.
Haut
 Profil  
 
MessagePosté: 24 Nov 2018, 21:17 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
Ce qui est important ce n'est pas le graphique mais le rport.

Regardes le tien, tu as pris le gold comme chart source et ton history quality est de 2% vs le mien de 94%...

Il faut au moins un history qualtity de 90%, le mieux c'est 99%


Haut
 Profil  
 
MessagePosté: 25 Nov 2018, 20:27 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Trader55 a écrit:
Ce qui est important ce n'est pas le graphique mais le rport.
Regardes le tien, tu as pris le gold comme chart source et ton history quality est de 2% vs le mien de 94%...
Il faut au moins un history qualtity de 90%, le mieux c'est 99%


L'history quality pour une stratégie qui ouvre des ordres une fois par an est à mon avis sans importance.

J'ai refait le backtest SHY en daily, départ du BT le 01 06 2004
Si on regarde ton report on constate 2 choses :
Pas d'ordre GLD ouvert en janvier 2005, c'est un problème.
Les ordres peuvent s'ouvrirent vers 10h, nous n'avons donc pas les mêmes prix.


Fichiers joints:
2004-06-01-SHY.zip [45.44 Kio]
Téléchargé 14 fois
ReportTester-40511162.jpg
ReportTester-40511162.jpg [ 120.82 Kio | Vu 606 fois ]
2004-06-01-SHY.jpg
2004-06-01-SHY.jpg [ 67.89 Kio | Vu 606 fois ]

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.
Haut
 Profil  
 
MessagePosté: 26 Nov 2018, 10:23 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
Pour mettre au point, et si tu le veux bien, on va partir sur les mêmes setup à commencer par les dates de départ et fin :)
Mon compte AM est en euros mais pour le strategy tester j'ai pris 10000$ de 06/2004 à aujourd'hui.
J'obtiens ce résultat : GrossProfit 2678 ( en gros 26% sur 14 ans).
On devrait trouver exactement la même chose, mais en effet il y a un problème sur l'EA, certaines années il n'achète que 3 ETF, (mais c'est peut être normal) , j'ai pas encore regardé le code. :(

Le mieux pour comparer est d’échanger cette première page puis analyser trade par trade pour comprendre . Mais çà va aller, 4 trades par an !! :)
Fichier(s) joint(s):
Capture.JPG
Capture.JPG [ 93.85 Kio | Vu 581 fois ]

Fichier(s) joint(s):
Capture1.JPG
Capture1.JPG [ 77.8 Kio | Vu 581 fois ]


Haut
 Profil  
 
MessagePosté: 26 Nov 2018, 20:42 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Trader55 pourais-tu faire un test avec exactement mes options ?

Symbol SHY
Période du 01 06 2004 à aujourd'hui

Currency USD
Capital 10 000


Fichiers joints:
PP-VB.jpg
PP-VB.jpg [ 32.5 Kio | Vu 553 fois ]

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.
Haut
 Profil  
 
MessagePosté: 26 Nov 2018, 21:54 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
Et voici...
Les resultats c'est n'importe quoi avec un quality history de 0% !!!

Fichier(s) joint(s):
ReportTester-40511162.zip [5.33 Kio]
Téléchargé 16 fois


Haut
 Profil  
 
MessagePosté: 26 Nov 2018, 22:27 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
Bon, pas trop le temps en ce moment de creuser mais si je lis ci dessous, la mauvaise qualité de l'histo----------> broker.
Faudrait tester avec un autre.

A lire

https://www.mql5.com/en/forum/7028

Qu'en penses tu ?


Haut
 Profil  
 
MessagePosté: 27 Nov 2018, 11:41 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
https://www.portfoliovisualizer.com/
ça a l'air intéressant.
A voir à l'usage.

Fichier(s) joint(s):
Portfolio_20181127104932.pdf [173.84 Kio]
Téléchargé 16 fois


https://www.portfoliovisualizer.com/backtest-portfolio?s=y&timePeriod=4&startYear=1985&firstMonth=1&endYear=2018&lastMonth=12&calendarBased=true&endDate=11%2F26%2F2018&initialAmount=10000&annualOperation=0&annualAdjustment=0&inflationAdjusted=true&annualPercentage=0.0&frequency=4&rebalanceType=1&absoluteDeviation=5.0&relativeDeviation=25.0&showYield=false&reinvestDividends=true&sameFees=true&symbol1=VTI&allocation1_1=25&symbol2=TLT&allocation2_1=25&symbol3=SHY&allocation3_1=25&symbol4=GLD&allocation4_1=25

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 27 Nov 2018, 12:34 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
Oui c'est bien pour ton cas spécifique de ce portefeuille.

Pour tester un EA, il va bien falloir passer par le strategy tester de mql...

Maintenant , on voit que ce portefeuille d'Harry Browne tient en effet la route sur le long terme.
J'envisage d'ouvrir une petite assurance vie supplémentaire et y repartir ce modèle en UC. Je vais regarder chez Lynxea si ils ont les UC adéquates et si il y a une petite promo en ce moment ;)


Haut
 Profil  
 
MessagePosté: 27 Nov 2018, 14:15 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Trader55 a écrit:
J'envisage d'ouvrir une petite assurance vie supplémentaire et y repartir ce modèle en UC.


Attention !!! , ma file n'est pas une incitation d'investir dans un portefeuille permanent, ou un autre genre de placement.
Je n'ai pas le droit de conseiller des particuliers pour leurs investissements.
Je ne pense pas en avoir les compétences.
Je n'en n'ai pas le souhait.

A titre personnel, oui la démarche du HBPP m'intéresse, mais à ce jour je ne suis nullement déterminé à placer une partie de mon patrimoine financier dans un HBPP.
Je rappelle mes motivations indiquées dans le premier post de la file.

Mes motivations :
    Backtester moi-même le Portefeuille Permanent de Harry Browne.
    Tester la fonctionnalité backtest multi-produits de MetaTrader 5.

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 29 Nov 2018, 14:47 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Je pense créer un backtest du permanent portfolio de Harry Browne sous Google Sheets.
L'idée c'est de pouvoir comparer les résultats du backtest sous Google Sheets et ceux sous MT5.

J'ai "commencé" à le coder, c'est juste un début, pour le moment il n'y a presque rien.
https://docs.google.com/spreadsheets/d/19qaxTd3mB1WnGfQ5vR2xJT1jWlRNbweUjranpiotM2g/edit?usp=sharing

Si quelqu'un souhaite m'aider il est le bienvenu.
:D :D :D :D :D :D

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 29 Nov 2018, 18:12 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Pour cette première version du backtest Google Sheets,
https://docs.google.com/spreadsheets/d/19qaxTd3mB1WnGfQ5vR2xJT1jWlRNbweUjranpiotM2g/edit?usp=sharing

je n'obtiens pas les memes résultats que ceux de http://www.portfoliovisualizer.com
19130,98 $ et $24,915

https://www.portfoliovisualizer.com/backtest-portfolio?s=y&timePeriod=4&startYear=2005&firstMonth=1&endYear=2017&lastMonth=12&calendarAligned=true&endDate=11%2F28%2F2018&initialAmount=10000&annualOperation=0&annualAdjustment=0&inflationAdjusted=true&annualPercentage=0.0&frequency=4&rebalanceType=1&absoluteDeviation=5.0&relativeDeviation=25.0&showYield=false&reinvestDividends=true&sameFees=true&symbol1=VTI&allocation1_1=25&symbol2=TLT&allocation2_1=25&symbol3=SHY&allocation3_1=25&symbol4=GLD&allocation4_1=25

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 29 Nov 2018, 21:18 
Hors ligne
VideoBourse family
Avatar de l’utilisateur

Inscription: 21 Sep 2014, 20:30
Messages: 1195
La demarche n'est pas mauvaise.

Heureusement il y a si peu de valeurs (4*13) qu'un bon fichier excel t'aidera à trouver le résultat exact...
Je peux faire çà ce weekend si tu me passes ici les valeurs des 4 ETF
au 1er janvier de 2005 à 2018 (enfin à la première date de cotation du début de l'année).

Have a nice evening


Haut
 Profil  
 
MessagePosté: 30 Nov 2018, 17:01 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Trader55 a écrit:
La demarche n'est pas mauvaise.

Heureusement il y a si peu de valeurs (4*13) qu'un bon fichier excel t'aidera à trouver le résultat exact...
Je peux faire çà ce weekend si tu me passes ici les valeurs des 4 ETF
au 1er janvier de 2005 à 2018 (enfin à la première date de cotation du début de l'année).

Have a nice evening


Je me rends compte que je me suis trompé.
J'ai calculé le HBPP sur des valeurs mensuelles, normal que je n'ai pas les mêmes résultats.
Il faut que je modifie mon Google Sheets.
Je ne vois pas ce que tu as à faire c'est déjà fait.
Le seul problème c'est que j'ai utilisé des données mensuelles et pas annuelles.
En principe je fais la modif samedi.

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 03 Déc 2018, 10:46 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Je laisse tomber :
Coder en MQL5 le Portefeuille Permanent de Harry Browne

Mon nouveau but est de
Coder en Python le Portefeuille Permanent de Harry Browne

Je pense utiliser la plateforme backtrader
https://www.backtrader.com
Mon premier objectif est d'apprendre le langage Python.
J'ai trouvé beaucoup de ressources sur internet pour apprendre Python.

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
MessagePosté: 05 Déc 2018, 15:17 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 236
Nouveau revirement. :D
Je laisse tomber :
Coder en Python le Portefeuille Permanent de Harry Browne
Explications ici :
viewtopic.php?f=17&p=88415#p88415

Je reprends l'objectif de :
Coder en MQL5 le Portefeuille Permanent de Harry Browne
mais pas pour le moment, je mets ce projet en pause.

_________________
Mon blog : www.apprendre-mql5.com
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Je suis prêt à aider gratuitement une personne dont l'objectif est d'apprendre à coder en MQL5.


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 60 messages ]  Aller à la page Précédente  1, 2, 3  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 8 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com
phpBB SEO