由于CopyTicks 错误,描述中的智能交易系统无法在测试可视化器中运行 - 它会进入无限循环。
Maxim Kuznetsov:
如果将典型价差向下移动 1/2(最好在(买价+卖价)/2 处绘制主蜡烛图),信息会更丰富/更清晰。
为了更清晰,应该移动什么?指标不接触蜡烛图 - 终端绘制蜡烛图。
如果将典型价差向下移动 1/2(最好在(买价+卖价)/2 处绘制主蜡烛图),信息会更丰富/更清晰。
我试着在 OBJ_CHART 对象上创建这个勾选对象。
#property strict
#include <fxsaber\ChartObjects\ChartObject_Chart.mqh>
#include <fxsaber\ChartObjects\ChartObjectTicks.mqh>
CHARTOBJECT* Chart;
CHARTOBJECT* ChartTicks;
void OnInit()
{
Chart = new CHARTOBJECT_CHART(0, 0, true);
ChartTicks = new CHARTOBJECTTICKS(Chart.GetChartID());
}
void OnDeinit( const int Reason )
{
POINTER::DeleteObject(ChartTicks);
POINTER::DeleteObject(Chart);
}
void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
EVENTBASE::MyEvent(id, lparam, dparam, sparam);
}
void OnTick( void )
{
if (::ChartGetInteger(Chart.GetChartID(), ::CHART_FIRST_VISIBLE_BAR) <= ::ChartGetInteger(Chart.GetChartID(), ::CHART_VISIBLE_BARS))
ChartTicks.Visual();
}
#include <fxsaber\ChartObjects\ChartObject_Chart.mqh>
#include <fxsaber\ChartObjects\ChartObjectTicks.mqh>
CHARTOBJECT* Chart;
CHARTOBJECT* ChartTicks;
void OnInit()
{
Chart = new CHARTOBJECT_CHART(0, 0, true);
ChartTicks = new CHARTOBJECTTICKS(Chart.GetChartID());
}
void OnDeinit( const int Reason )
{
POINTER::DeleteObject(ChartTicks);
POINTER::DeleteObject(Chart);
}
void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
EVENTBASE::MyEvent(id, lparam, dparam, sparam);
}
void OnTick( void )
{
if (::ChartGetInteger(Chart.GetChartID(), ::CHART_FIRST_VISIBLE_BAR) <= ::ChartGetInteger(Chart.GetChartID(), ::CHART_VISIBLE_BARS))
ChartTicks.Visual();
}
它成功了!
fxsaber:
我正在编写自己的 tick 指标。结果发现,想出一个方便的(不是花哨的)指标比编写一个指标更难。
具体来说,我想通过这个发布的指标收集批评意见和建议,以便在自己的指标中加以考虑。
当然,这不是利他主义,而是为自己写作。把它放到 kodobase 中只是一个副作用。
可惜的是,得分低的人却不加评论。
是我写的。没有许下任何愿望,但结果却超出了我的预期。MT5 的力量!
Тиковый индикатор ZoomPrice
- 2016.11.01
- //www.mql5.com/ru/users/fxsaber">
- www.mql5.com
Показывает график цены любого уровня масштабирования.





Ticks 指标:
它显示了所有可见柱的订单时刻价格历史 (买家报价/卖家报价)。
作者: fxsaber