【发布时间】:2025-11-26 11:50:02
【问题描述】:
如果在图表上手动绘制蓝色或红色矩形,我将使用下面的代码编写消息。我尝试使用OBJPROP_PRICE1 获取其中一个矩形值,但没有成功。如何获取手动绘制的矩形的上限值和下限值?此外,我设置 2 个布尔值(每个矩形打印条件一个)的方式使得只能识别每种颜色的一个矩形。无论蓝色或红色矩形的数量如何,对我来说,让打印条件正常工作的合适方法是什么?
bool hasFoundDemandRect = false;
bool hasFoundSupplyRect = false;
void OnTick() {
for (int i=ObjectsTotal(); i>=0; i--) {
string name = ObjectName(i);
if (ObjectType(name) == OBJ_RECTANGLE) {
color rectColor = color(ObjectGetInteger(0,name,OBJPROP_COLOR));
double price1 = ObjectGetDouble(0,name,OBJPROP_PRICE1);
if (hasFoundDemandRect == false) {
if (rectColor == clrBlue) {
Print("a BUY rect has to be created");
hasFoundDemandRect = true;
}
}
if (hasFoundSupplyRect == false) {
if (rectColor == clrRed) {
Print("a SELL rect has to be created");
hasFoundSupplyRect = true;
}
}
}
}
【问题讨论】:
-
看来你做的一切都是正确的。如果您使用 mql4,
ObjectGetDouble(0,name,OBJPROP_PRICE1)是正确的调用,它不会在 mql5 中编译。所以请提供MCVE和一套,或者自己调试 -
@DanielKniaz 我在测试时忘记了市场已经关闭。我已经更新了代码。我仍在试图弄清楚如何让蓝色和红色矩形的内部条件打印多个矩形。我知道我必须更改我的布尔条件,因为它们仅限于识别每个条件之一,但不知道如何。
标签: mql4 algorithmic-trading metatrader4 mt4