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)
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 expertinputstring Expert_Title ="gen_macd"; // Document nameulong Expert_MagicNumber =1035; //bool Expert_EveryTick =false; ////--- inputs for main signalinputint Signal_ThresholdOpen =10; // Signal threshold value to open [0...100]inputint Signal_ThresholdClose =10; // Signal threshold value to close [0...100]inputdouble Signal_PriceLevel =0.0; // Price level to execute a dealinputdouble Signal_StopLevel =50.0; // Stop Loss level (in points)inputdouble Signal_TakeLevel =50.0; // Take Profit level (in points)inputint Signal_Expiration =4; // Expiration of pending orders (in bars)inputint Signal_MACD_PeriodFast =12; // MACD(12,24,9,PRICE_CLOSE) Period of fast EMAinputint Signal_MACD_PeriodSlow =24; // MACD(12,24,9,PRICE_CLOSE) Period of slow EMAinputint Signal_MACD_PeriodSignal =9; // MACD(12,24,9,PRICE_CLOSE) Period of averaging of differenceinputENUM_APPLIED_PRICE Signal_MACD_Applied =PRICE_CLOSE; // MACD(12,24,9,PRICE_CLOSE) Prices seriesinputdouble Signal_MACD_Weight =1.0; // MACD(12,24,9,PRICE_CLOSE) Weight [0...1.0]//--- inputs for trailinginputdouble Trailing_ParabolicSAR_Step =0.02; // Speed incrementinputdouble Trailing_ParabolicSAR_Maximum=0.2; // Maximum rate//--- inputs for moneyinputdouble Money_FixLot_Percent =10.0; // Percentinputdouble Money_FixLot_Lots =0.1; // Fixed volume//+------------------------------------------------------------------+//| Global expert object |//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+//| Initialization function of the expert |//+------------------------------------------------------------------+intOnInit()
{
//--- Initializing expertif(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
{
//--- failedprintf(__FUNCTION__+": error initializing expert");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Creating signal
CExpertSignal *signal=new CExpertSignal;
if(signal==NULL)
{
//--- failedprintf(__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)
{
//--- failedprintf(__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)
{
//--- failedprintf(__FUNCTION__+": error creating trailing");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Add trailing to expert (will be deleted automatically))if(!ExtExpert.InitTrailing(trailing))
{
//--- failedprintf(__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)
{
//--- failedprintf(__FUNCTION__+": error creating money");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Add money to expert (will be deleted automatically))if(!ExtExpert.InitMoney(money))
{
//--- failedprintf(__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 parametersif(!ExtExpert.ValidationSettings())
{
//--- failed
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Tuning of all necessary indicatorsif(!ExtExpert.InitIndicators())
{
//--- failedprintf(__FUNCTION__+": error initializing indicators");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- okreturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Deinitialization function of the expert |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
ExtExpert.Deinit();
}
//+------------------------------------------------------------------+//| "Tick" event handler function |//+------------------------------------------------------------------+voidOnTick()
{
ExtExpert.OnTick();
}
//+------------------------------------------------------------------+//| "Trade" event handler function |//+------------------------------------------------------------------+voidOnTrade()
{
ExtExpert.OnTrade();
}
//+------------------------------------------------------------------+//| "Timer" event handler function |//+------------------------------------------------------------------+voidOnTimer()
{
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 ?
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.
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...
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.
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?
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 knowThanks 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
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)
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.
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 ?
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
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.
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.
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?
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.