如何在 MQL5 中绘制类似矩形的填充物?
How to draw a Filling like a Rectangle, in MQL5?
谁能推荐一种实现这种绘图的方法,因为官方mql5 documentation没有指出这一点
提供的示例我已经做了here
但是它只输出了这个结果,
这不是我想要的
有人有什么建议吗?
更简单的部分: ...最好忘记自定义指标(所有共享单线程/块)
为了更快更安全的 GUI,完全控制绘制这些正交形状,New-MQL4/MQL5
语言可以使用这样的东西:
// --------------------------------------------------------------------
#define GUI_aFontSIZE 10
#define GUI_aFontNAME "Courier New"
#define GUI_aTradeCOLOR C'80,0,80'
#define GUI_aTPed_COLOR clrDarkGreen
#define GUI_aSLed_COLOR clrDarkRed
#define GUI_isSELECTABLE True
long GUI_aMainWINDOW = CharID();
int GUI_anObjNUMBER = 0;
string anInterimObjNAME = StringFormat( "GUI.DEMO_RectangularOBJECT_[%d]", GUI_anObjNUMBER );
if ( ObjectFind( anInterimObjNAME ) == GUI_aMainWINDOW )
ObjectDelete( anInterimObjNAME ); //--- prevent collisions
ObjectCreate( GUI_aMainWINDOW, anInterimObjNAME, OBJ_RECTANGLE, 0, aTimeOfENTRY, anEntryPRICE,
aTimeOfEXIT, DBL_MIN
);
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_COLOR, GUI_aSLed_COLOR ); //--- set color
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_BACK, True ); //--- display in the foreground (false) or background (true) ~ FILL-IT ~
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_SELECTABLE, GUI_isSELECTABLE ); //---------------------------------------- MAY AVOID GUI interactions
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_SELECTED, False ); //--- set GUI-object as (non)-pre-SELECT-ed
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_HIDDEN, False ); //--- hide (true) or display (false) graphical object name in the object list
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_ZORDER, 1 ); //--- set the "layered" priority for receiving a mouse-click-event in the chart
// --------------------------------------------------------------------
如有疑问,请使用 GUI 对象对话面板进行手动实验,并得出语言文档中缺失的语法解释。
可能会使用更复杂且风险更大的方法:
如果故事要以自定义指标为基础,玩具会变得有点复杂。
有一个硬编码引擎,以所谓的 IndicatorBuffer
.
处理数据
如果某个特定数据元素恰好等于 EMPTY_VALUE
,则会为这些特定柱提供特殊处理。
这样的 EMPTY_VALUE
常量信号会向处理引擎发送 未显示在图表中 的指标值,这让您大吃一惊。
例如,对于周期为 20 的内置指标标准偏差,使用此功能技巧,历史中前 19 根柱的线根本不会显示在图表中。可以在任何地方进一步使用相同的方法,一直到当前柱 [0]
,甚至是动态的,以便模拟 "vibrations" :o) ( 不要在生产中冒险.. . ).
这也可以在 aPriceDOMAIN
显示的自定义指标中创建 "dropped" 部分绘制区域。
对于绘画区域 "between" 两条通用自定义指标线(在 "oscilating" 曲线之间),必须使用更多技巧,使用:
//--- plot dual-line-filled----------------------------------------------
#property indicator_label "DEMO-Custom-2-Line-Filled-Indicator"
#property indicator_type DRAW_FILLING // THE MAGIC FILL-STYLING
#property indicator_color clrAqua,clrSalmon // THE MAGIC FILL-STYLING
#property indicator_width 2
//--- Custom Indicator buffers -----------------------------------------
double aCustomIndicatorLineDATA_buffer1[];
double aCustomIndicatorLineDATA_buffer2[];
//--- Next, fill DATA as usually and the GUI shows the magic FILL-STYLING
无论如何:
享受MQL4/MQL5
的狂野世界
有兴趣吗? May also like reading other MQL4 and low-latency trading posts
谁能推荐一种实现这种绘图的方法,因为官方mql5 documentation没有指出这一点
提供的示例我已经做了here
但是它只输出了这个结果,
这不是我想要的
更简单的部分: ...最好忘记自定义指标(所有共享单线程/块)
为了更快更安全的 GUI,完全控制绘制这些正交形状,New-MQL4/MQL5
语言可以使用这样的东西:
// --------------------------------------------------------------------
#define GUI_aFontSIZE 10
#define GUI_aFontNAME "Courier New"
#define GUI_aTradeCOLOR C'80,0,80'
#define GUI_aTPed_COLOR clrDarkGreen
#define GUI_aSLed_COLOR clrDarkRed
#define GUI_isSELECTABLE True
long GUI_aMainWINDOW = CharID();
int GUI_anObjNUMBER = 0;
string anInterimObjNAME = StringFormat( "GUI.DEMO_RectangularOBJECT_[%d]", GUI_anObjNUMBER );
if ( ObjectFind( anInterimObjNAME ) == GUI_aMainWINDOW )
ObjectDelete( anInterimObjNAME ); //--- prevent collisions
ObjectCreate( GUI_aMainWINDOW, anInterimObjNAME, OBJ_RECTANGLE, 0, aTimeOfENTRY, anEntryPRICE,
aTimeOfEXIT, DBL_MIN
);
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_COLOR, GUI_aSLed_COLOR ); //--- set color
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_BACK, True ); //--- display in the foreground (false) or background (true) ~ FILL-IT ~
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_SELECTABLE, GUI_isSELECTABLE ); //---------------------------------------- MAY AVOID GUI interactions
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_SELECTED, False ); //--- set GUI-object as (non)-pre-SELECT-ed
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_HIDDEN, False ); //--- hide (true) or display (false) graphical object name in the object list
ObjectSetInteger( GUI_aMainWINDOW, anInterimObjNAME, OBJPROP_ZORDER, 1 ); //--- set the "layered" priority for receiving a mouse-click-event in the chart
// --------------------------------------------------------------------
如有疑问,请使用 GUI 对象对话面板进行手动实验,并得出语言文档中缺失的语法解释。
可能会使用更复杂且风险更大的方法:
如果故事要以自定义指标为基础,玩具会变得有点复杂。
有一个硬编码引擎,以所谓的 IndicatorBuffer
.
如果某个特定数据元素恰好等于 EMPTY_VALUE
,则会为这些特定柱提供特殊处理。
这样的 EMPTY_VALUE
常量信号会向处理引擎发送 未显示在图表中 的指标值,这让您大吃一惊。
例如,对于周期为 20 的内置指标标准偏差,使用此功能技巧,历史中前 19 根柱的线根本不会显示在图表中。可以在任何地方进一步使用相同的方法,一直到当前柱 [0]
,甚至是动态的,以便模拟 "vibrations" :o) ( 不要在生产中冒险.. . ).
这也可以在 aPriceDOMAIN
显示的自定义指标中创建 "dropped" 部分绘制区域。
对于绘画区域 "between" 两条通用自定义指标线(在 "oscilating" 曲线之间),必须使用更多技巧,使用:
//--- plot dual-line-filled----------------------------------------------
#property indicator_label "DEMO-Custom-2-Line-Filled-Indicator"
#property indicator_type DRAW_FILLING // THE MAGIC FILL-STYLING
#property indicator_color clrAqua,clrSalmon // THE MAGIC FILL-STYLING
#property indicator_width 2
//--- Custom Indicator buffers -----------------------------------------
double aCustomIndicatorLineDATA_buffer1[];
double aCustomIndicatorLineDATA_buffer2[];
//--- Next, fill DATA as usually and the GUI shows the magic FILL-STYLING
无论如何:
享受
的狂野世界MQL4/MQL5
有兴趣吗? May also like reading other MQL4 and low-latency trading posts