MQL5 在测试时不截取屏幕截图



>我尝试将用 MQL4 编写的脚本修改为 MQL5。预期的输出是将文件放在Files文件夹中。但是没有什么可看的。未发现错误和警告。
善意地向我建议改进,以便我可以在测试时获取图形的屏幕截图。

这是脚本:

#define        WIDTH  800     // Image width to call ChartScreenShot() 
#define        HEIGHT 600     // Image height to call ChartScreenShot() 
//--- input parameters 
input int      pictures=5;    // The number of images in the series 
int            mode=1;       // -1 denotes a shift to the right edge of the chart, 1 - to the left 
int            bars_shift=300;// The number of bars when scrolling the chart using ChartNavigate() 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
void OnInit() 
{ 
//--- Disable chart autoscroll 
ChartSetInteger(0,CHART_AUTOSCROLL,false); 
//--- Set the shift of the right edge of the chart 
ChartSetInteger(0,CHART_SHIFT,true); 
//--- Show a candlestick chart 
ChartSetInteger(0,CHART_MODE,CHART_CANDLES); 
//--- 
Print("Preparation of the Expert Advisor is completed"); 
} 
//+------------------------------------------------------------------+ 
//| Expert tick function                                             | 
//+------------------------------------------------------------------+ 
void OnTick() 
{ 
//--- 
int id = 0;
Print(__FUNCTION__,TimeCurrent(),"   id=",id,"   mode=",mode); 
//--- Handle the CHARTEVENT_CLICK event ("A mouse click on the chart") 
if(id==CHARTEVENT_CLICK) 
{ 
//--- Initial shift from the chart edge 
int pos=0; 
//--- Operation with the left chart edge 
if(mode>0) 
{ 
//--- Scroll the chart to the left edge 
ChartNavigate(0,CHART_BEGIN,pos); 
for(int i=0;i<pictures;i++) 
{ 
//--- Prepare a text to show on the chart and a file name 
string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif"; 
//--- Show the name on the chart as a comment 
Comment(name); 
//--- Save the chart screenshot in a file in the terminal_directoryMQL5Files 
if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT)) 
Print("We've saved the screenshot ",name); 
//--- 
pos+=bars_shift; 
//--- Give the user time to look at the new part of the chart 
Sleep(3000); 
//--- Scroll the chart from the current position bars_shift bars to the right 
ChartNavigate(0,CHART_CURRENT_POS,bars_shift); 
} 
//--- Change the mode to the opposite 
mode*=-1; 
} 
else // Operation with the right chart edge 
{ 
//--- Scroll the chart to the right edge 
ChartNavigate(0,CHART_END,pos); 
for(int i=0;i<pictures;i++) 
{ 
//--- Prepare a text to show on the chart and a file name 
string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif"; 
//--- Show the name on the chart as a comment 
Comment(name); 
//--- Save the chart screenshot in a file in the terminal_directoryMQL5Files 
if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT)) 
Print("We've saved the screenshot ",name); 
//--- 
pos+=bars_shift; 
//--- Give the user time to look at the new part of the chart 
Sleep(3000); 
//--- Scroll the chart from the current position bars_shift bars to the right 
ChartNavigate(0,CHART_CURRENT_POS,-bars_shift); 
} 
//--- Change the mode to the opposite 
mode*=1; 
} 
} 
} 

对象事件必须在 OnChartEvent(( 而不是 OnTick(( 函数中处理。 在测试中,OnChartEvent 不起作用 - 它不受支持

最新更新