富拓MQL4窗口数据处理函数详解与实战(一)

2026-07-06 11:02
富拓
阅读
行业动态

HideTestIndicators() – 隐藏测试指标

Period() – 获取图表时段

RefreshRates() – 刷新数据

Symbol() – 获取图表货币对名称

WindowBarsPerChart() – 获取图表中柱体总数

WindowExpertName() – 获取图表上程序名称

WindowFind() – 搜索图表上指标

WindowFirstVisibleBar() – 获取图表上第一个显示的柱体

WindowHandle() – 获取图表句柄

WindowIsVisible() – 图表是否可见

WindowOnDropped() – 获取窗口索引

WindowPriceMax() – 获取窗口纵坐标刻度最大值

WindowPriceMin() – 获取窗口纵坐标刻度最小值

WindowPriceOnDropped() – 获取下滑价格

WindowRedraw() – 重绘当前图表

WindowScreenShot() – 窗口图表快照

WindowTimeOnDropped() – 价格下滑时间

WindowsTotal() – 获取指标窗口数

WindowXOnDropped() – x轴下滑像素值

WindowYOnDropped() – y轴下滑像素值

HideTestIndicators() – 隐藏测试指标

void HideTestIndicators(bool hide) 该函数用于设置一个标志,供智能交易系统隐藏测试指标。在使用富拓平台进行智能交易测试时,如果希望测试图表中不显示已调用过的指标,可通过此函数实现。每个被调用的指标都会根据当前隐藏标记进行绘制。需要注意的是,只有直接从智能交易中调用的指标才能在测试图表中显示。

参数:

hide - 如果希望隐藏指标,设为TRUE,否则设为FALSE。示例:

HideTestIndicators(true); MaCurrent=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,0); MaPrevious=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,1); HideTestIndicators(false);Period() – 获取图表时段

int Period() 返回当前窗口所使用的图表周期所对应的分钟总数。例如,在富拓的图表中,如果当前时段为H1,该函数将返回60。

示例:

Print("时间周期 ", Period());RefreshRates() – 刷新数据

bool RefreshRates() 刷新预定义变量和序列数组中的数据。当智能交易计算过程较长时,此函数可以自动更新最新的行情数据。若数据成功更新,返回TRUE,否则返回FALSE。数据未更新的唯一原因是当前数据已经是客户端的最新数据。智能交易和脚本在处理历史数据时,会先复制一份副本。在富拓平台上启动智能交易或脚本时,当前货币对的数据会被复制,后续运行时可能收到新的步进数据,此时使用RefreshRates()可确保数据实时有效。

示例:

int ticket; while(true) { ticket=OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"expert comment",255,0,CLR_NONE); if(ticket<=0) { int error=GetLastError(); //---- 资金不足 if(error==134) break; //---- 等待 10 秒钟 Sleep(10000); //---- 刷新价格数据 RefreshRates(); break; } else { OrderSelect(ticket,SELECT_BY_TICKET); OrderPrint(); break; } }Symbol() – 获取图表货币对名称

string Symbol() 返回当前窗口图表所使用的货币对名称。在富拓平台中,该函数可用于获取当前图表对应的交易品种。

示例:

int total=OrdersTotal(); for(int pos=0;posSymbol()!=Symbol()) continue; // 执行过程... }WindowBarsPerChart() – 获取图表中柱体总数

int WindowBarsPerChart() 返回当前窗口图表中可见的柱体(K线)总数。

示例:

// 对于可见柱工作。int bars_count=WindowBarsPerChart();int bar=WindowFirstVisibleBar();for(int i=0; iWindowExpertName() – 获取图表上程序名称

string WindowExpertName() 返回智能交易、脚本、自定义指标或库的名称,具体取决于MQL4程序的调用方式。

示例:

string name=WindowExpertName();GlobalVariablesDeleteAll(name);WindowFind() – 搜索图表上指标

int WindowFind(string name) 如果找到指定名称的指标,该函数返回包含该指标的窗口索引,否则返回-1。

参数:

name - 指标名称。示例:

int win_idx=WindowFind("MACD(12,26,9)");WindowFirstVisibleBar() – 获取图表上第一个显示的柱体

int WindowFirstVisibleBar() 该函数返回当前图表窗口中第一个显示的柱体(K线)索引。需要注意的是,价格柱体采用逆序编号,最新的柱体索引为0,最老的柱体索引为 Bars-1。如果第一个显示的柱体编号为2或更高,且少于图表中可显示的总柱体数,说明图表窗口未完全填满,左侧留有空白区域。

示例:

// 可见柱的工作 int bars_count=WindowBarsPerChart(); int bar=WindowFirstVisibleBar(); for(int i=0; iWindowHandle() – 获取图表句柄

int WindowHandle(string symbol, int timeframe) 返回包含特定图表的系统窗口句柄。如果图表在函数调用时尚未打开,则返回0。

参数:

symbol - 货币对名称。timeframe - 时段。可以是任意时段枚举值,0表示使用当前图表时段。示例:

int win_handle=WindowHandle("USDX",PERIOD_H1); if(win_handle!=0) Print("发现带有USDX,H1 的窗口。数组将会被立即复制。");WindowIsVisible() – 图表是否可见

bool WindowIsVisible(int index) 如果图表子窗口可见,返回TRUE,否则返回FALSE。由于指标的可视属性,图表子窗口可以被隐藏。

参数:

index - 图表子窗口索引。示例:

int win_handle=WindowHandle("USDX",PERIOD_H1); if(win_handle!=0) Print("发现带有USDX,H1 的窗口。数组将会被立即复制。");

点击咨询交易开户相关问题

免责声明:本文内容仅供参考,不构成投资建议。投资有风险,入市需谨慎。