感谢您提供这篇有趣的文章。
使用文件缓冲数据是必须的吗?
难道不能使用统计数组在内存中缓冲历史数据吗?
致
下午好!
我想看秒图 - 一根蜡烛几秒钟(5 秒、6 秒、10 秒、12 秒、15 秒)。查看价格随时间的变化。
Silent:
是的,这是一个错字。已更正。谢谢。
错字?
在 文章文本中。在示例中是正确的, AskBuffer
Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
- www.mql5.com
Получение рыночной информации / SymbolIsSynchronized - Документация по MQL5
robinz:
这些图表超出了本文的范围,所以我建议您自己制作 - 不会比文中描述的更复杂。 下午好!
我想看秒图 - 一根蜡烛几秒钟(5 秒、6 秒、10 秒、12 秒、15 秒)。查看价格随时间的变化。
指标创建的报价文件当然可以用于其他目的。我建议您禁用不必要的功能(例如绘制图表)和数据处理(例如同步不同工具的数据)。顺便说一句,在我看来,借助 "智能交易系统"(Expert Advisor)更容易将报价写入文件(附件中也有说明):
int h; void OnInit() { string s; StringConcatenate(s,Symbol(),".txt"); h=FileOpen(s,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_SHARE_READ); FileSeek(h,0,SEEK_END); } void OnTick() { string s; StringConcatenate(s,TimeCurrent()," ",DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits)," ",DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits)); FileWrite(h,s); FileFlush(h); } void OnDeinit(const int reason) { FileClose(h); }
附加的文件:
ticklog.mq5
1 kb
正如我的同事Dima_S 所建议的那样,在初始化指标时,值得向缓冲区填充一些东西。
因为我们有TickIndicator.mq5 代码:
//+------------------------------------------------------------------+ //| OnInit() 函数| //+------------------------------------------------------------------+ void OnInit() { // 数组 BidBuffer[] 是指标缓冲区 SetIndexBuffer(0,BidBuffer,INDICATOR_DATA); // AskBuffer[] 数组是指示器缓冲区 SetIndexBuffer(1,AskBuffer,INDICATOR_DATA); // 不绘制出价线的零值 PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); // 不绘制询问线的零值 PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0); }
有必要插入以下几行:
ArrayInitialize(BidBuffer,0); ArrayInitialize(AskBuffer,0);
新文章 MQL5 中创建订单号指标已发布:
我们拟于本文中创建两个指标:标绘订单号价格图表的订单号指标,以及标绘带有指定订单号的烛形图的订单号烛形图指标。每个指标都会将新价格写入某文件,并在该指标重启后采用此保存数据(其它程序亦可使用这些数据)
作者:Denis Zyatkevich