Strategy tester (with/without) visual mode get different precise result (Build 2504) - page 2

 
Lorentzos Roussos:

Try running this on the same platform , i though spread was variable but it seems stable to me .Check yours.

Im running the Metaquotes MT5 and with open prices the spread is not varying across tests . Let me know 

Thanks  Lorentzos Roussos Use test code is more good to make sure ,where is the problem happen.

It's helpful And good ideal for check spreads. After PC C test display /non display.  I will do it later.



By the way ,I check for detail deal timing  that 2 PC make deal in very different timing ex


PC A make with display

deal3 :: 2012.6.04 01.23.26 in buy vol 0.04 price 1.24090 

deal5 :: 2012.6.04 18:51:43 in buy vol 0.08 price 1.24826

PC B make without display 

deal3 :: 2012.6.04 01.23.36 in buy vol 0.04 price 1.24080 

deal5 :: 2012.6.04 18:55:04 in buy vol 0.12 price 1.24958

note vol will relative to SAR different  timing will be different  vol size 

 
SungSungE:

Thanks  Lorentzos Roussos Use test code is more good to make sure ,where is the problem happen.

It's helpful And good ideal for check spreads. After PC C test display /non display.  I will do it later.



By the way ,I check for detail deal timing  that 2 PC make deal in very different timing ex


PC A make with display

deal3 :: 2012.6.04 01.23.26 in buy vol 0.04 price 1.24090 

deal5 :: 2012.6.04 18:51:43 in buy vol 0.08 price 1.24826

PC B make without display 

deal3 :: 2012.6.04 01.23.36 in buy vol 0.04 price 1.24080 

deal5 :: 2012.6.04 18:55:04 in buy vol 0.12 price 1.24958

note vol will relative to SAR different  timing will be different  vol size 

For now focus on one pc ,one platform ,different test types .
Its normal for different platforms to have different results . (different data feed)
Its even normal for same platforms on different pc's to have different results . (not the same data loaded perhaps - even though i think thats an MT4 issue only)

 
Lorentzos Roussos:

For now focus on one pc ,one platform ,different test types .
Its normal for different platforms to have different results . (different data feed)
Its even normal for same platforms on different pc's to have different results . (not the same data loaded perhaps - even though i think thats an MT4 issue only)

Ya, I think one platform is better choose .

But I need to know which one can get solid result no matter setting (But the the test result is the lowest cpu power get few deviation result  between with/without display case ~~ the result is not as original guess  =,=)


And I think before I use VPS (is different PC with my PC)  or I use cloud computer as agents to find out optimization. All relative to different hardware , If hardware is a parameter to EA. I need to make sure it or something else in my code or some bug in MQL?     


Now ,I just buy one new graph card upgrade my PC. Maybe update result few days.

 
The new test on the test code use MetaQuotes code generate it.

//+------------------------------------------------------------------+
//|                                                     gen_macd.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalMACD.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingParabolicSAR.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title                 ="gen_macd";  // Document name
ulong                    Expert_MagicNumber           =1035;        //
bool                     Expert_EveryTick             =false;       //
//--- inputs for main signal
input int                Signal_ThresholdOpen         =10;          // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose        =10;          // Signal threshold value to close [0...100]
input double             Signal_PriceLevel            =0.0;         // Price level to execute a deal
input double             Signal_StopLevel             =50.0;        // Stop Loss level (in points)
input double             Signal_TakeLevel             =50.0;        // Take Profit level (in points)
input int                Signal_Expiration            =4;           // Expiration of pending orders (in bars)
input int                Signal_MACD_PeriodFast       =12;          // MACD(12,24,9,PRICE_CLOSE) Period of fast EMA
input int                Signal_MACD_PeriodSlow       =24;          // MACD(12,24,9,PRICE_CLOSE) Period of slow EMA
input int                Signal_MACD_PeriodSignal     =9;           // MACD(12,24,9,PRICE_CLOSE) Period of averaging of difference
input ENUM_APPLIED_PRICE Signal_MACD_Applied          =PRICE_CLOSE; // MACD(12,24,9,PRICE_CLOSE) Prices series
input double             Signal_MACD_Weight           =1.0;         // MACD(12,24,9,PRICE_CLOSE) Weight [0...1.0]
//--- inputs for trailing
input double             Trailing_ParabolicSAR_Step   =0.02;        // Speed increment
input double             Trailing_ParabolicSAR_Maximum=0.2;         // Maximum rate
//--- inputs for money
input double             Money_FixLot_Percent         =10.0;        // Percent
input double             Money_FixLot_Lots            =0.1;         // Fixed volume
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalMACD
   CSignalMACD *filter0=new CSignalMACD;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodFast(Signal_MACD_PeriodFast);
   filter0.PeriodSlow(Signal_MACD_PeriodSlow);
   filter0.PeriodSignal(Signal_MACD_PeriodSignal);
   filter0.Applied(Signal_MACD_Applied);
   filter0.Weight(Signal_MACD_Weight);
//--- Creation of trailing object
   CTrailingPSAR *trailing=new CTrailingPSAR;
   if(trailing==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add trailing to expert (will be deleted automatically))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set trailing parameters
   trailing.Step(Trailing_ParabolicSAR_Step);
   trailing.Maximum(Trailing_ParabolicSAR_Maximum);
//--- Creation of money object
   CMoneyFixedLot *money=new CMoneyFixedLot;
   if(money==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add money to expert (will be deleted automatically))
   if(!ExtExpert.InitMoney(money))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set money parameters
   money.Percent(Money_FixLot_Percent);
   money.Lots(Money_FixLot_Lots);
//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+

Test Result PC A

up without display,down with display 

Test result on PC B is similar.



I think I want to check my indicator that work with muti Time Frame that use CopyBuffer , if use signal time frame without those maybe batter ?
And I use old Expert framework maybe will due to bad performance , if MQL5 newer than 2440 get grate improve ?  

Files:
 
SungSungE:
The new test on the test code use MetaQuotes code generate it.

Test Result PC A

up without display,down with display 

Test result on PC B is similar.



I think I want to check my indicator that work with muti Time Frame that use CopyBuffer , if use signal time frame without those maybe batter ?
And I use old Expert framework maybe will due to bad performance , if MQL5 newer than 2440 get grate improve ?  

Hmm different data feed from the indicator is possible indeed . So @Alain Verleyen was right

 
SungSungE:
The new test on the test code use MetaQuotes code generate it.

Test Result PC A

up without display,down with display 

Test result on PC B is similar.



I think I want to check my indicator that work with muti Time Frame that use CopyBuffer , if use signal time frame without those maybe batter ?
And I use old Expert framework maybe will due to bad performance , if MQL5 newer than 2440 get grate improve ?  

Hi, I got the same issue.

I found the issue a different way. I have made my own Order log, that is writing all order and profit of each order to a CSV file.

The sum off all order profit in CSV file was different from the strategy tester. I then tried to use the visual mode to spot "my" bug. But was surprised when the visual mode got the same profit as my CSV log.

So in not visual mode, my order log still got the same profit as the same test in visual mode.

I then think that there is some fault in the not visual mode profit sumary. 

SungSungE
SungSungE
  • www.mql5.com
Added topic Failed to reuse optimal result Any body get similar issue on it ? As I want to verify the old test result again,the setting get failed like this. ( I guess maybe because I have new args so loading old setting get failed) .. I get failed to use old optimal result ><. The arg Added topic How to muti account login? I have several...
 
eivindtj:

Hi, I got the same issue.

I found the issue a different way. I have made my own Order log, that is writing all order and profit of each order to a CSV file.

The sum off all order profit in CSV file was different from the strategy tester. I then tried to use the visual mode to spot "my" bug. But was surprised when the visual mode got the same profit as my CSV log.

So in not visual mode, my order log still got the same profit as the same test in visual mode.

I then think that there is some fault in the not visual mode profit sumary. 

Show some proof. I don't understand how you managed to tame the last order, which exists at the end of testing.
 
Anonymous3 Geek:
Show some proof. I don't understand how you managed to tame the last order, which exists at the end of testing.

Yes it is an issue to control order at end of testing. I use two solutions.

1. stop new order 5 days before end of test. (number of days need to be set according to expected order open days)

2. if there is anny open order, i close them 1 day before end of test.

This was not easy, because i did not find any way for agent to know the last day of test. So I send this in a parameter.

 

Hi, if its of any comfort, is the cache cleared before every run?  Sometimes, recompiling a slight change and running without clearing cache caused problems.


However, even when i cleared my cache, i have also come across discrepancies within results from MT5 on the same run.

--> https://www.mql5.com/en/forum/356699


If you are testing, can help see if u encounter the same issue i have?

Need help to understand difference between "Backtest" tab results and "Strategy Tester Visualization" results
Need help to understand difference between "Backtest" tab results and "Strategy Tester Visualization" results
  • 2020.11.28
  • www.mql5.com
On a single run in Strategy Tester, I get the following...
 

Forum on trading, automated trading systems and testing trading strategies

Need help to understand difference between "Backtest" tab results and "Strategy Tester Visualization" results

Keith Long, 2020.11.28 04:06

Close the thread.


Found the issue.

In the other tab "Deals", the discrepancies is due to Swap which is not displayed in the "Orders & Deals" tab.



Reason: