新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1230

 
Igor Makanu:

你的例子中存在许多错误

应该有。

这里的价格没有规范化 OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,"My order",MagicNumber,0,clrGreen)。

这里我不明白的是,如果条件是假的,为什么需要从OnTick()退出的逻辑。

也许,我们应该继续循环,只计算订单的数量。

你的例子在逻辑上非常简单,很难为其他任务修改它...也许他想做一些跟踪。

它仍然是早期))))一下子会有很多。没有什么意义)))))因此,是的,当然经过计算,对于所有的发送顺序正常化是必要的))))

有条件的订单,如果当前工具上没有我们的魔力的订单,我们把订单。而后,该条件将不会达到订单,直到它关闭。

PS不喜欢这个条件 如果不喜欢。

 

问候,你能告诉我如何阅读表达方式吗?

string sym=(symbol==NULL ? Symbol() : symbol);
 
Galim_V:

问候,你能告诉我如何阅读表达方式吗?

如果符号 为空,返回当前符号的值到sym变量,如果不是空,返回值到sym变量

 
Vladimir Pastushak:

如果符号变量为空,则将当前图表符号的值返回给符号变量,如果不是空,则将其值传递给符号变量。

谢谢你!

 
Galim_V:

问候,你能告诉我如何正确阅读这个表达吗?

它的内容是:如果符号是NULL,则将Symbol()赋给变量,否则 符号赋给变量。

此条目的等价物

string sym;
if(symbol == NULL)
sym = Symbol();
else
sym = symbol;
唯一的区别是行数的不同。
 
Alexey Viktorov:

解读如下:如果符号是NULL,就给Symbol()分配一个变量,否则就给符号分配一个值

相当于此条目

唯一的区别是行数的不同。

谢谢你!

 
Valeriy Yastremskiy:

例如,你打开的窗口不是Eurobucks,而是Eurofunt,你将所选订单的符号与Eurobucks进行比较,如果为真,则Eurobucks上有一个订单,如果我们的magik,则从Onstart函数返回,如果不是,则在Eurobucks上设置一个订单,但Kloz、High、Asc、Bid你将在Eurofunt上设置。而Symbol()将返回当前窗口的符号,不会发生错误。

使用元编辑器中的模板,左上方有一个新按钮。OnStart函数仍然被使用,但这是不对的,OnStart是为脚本服务的。正确的模板。

正确的代码。你的订单注释缺失,魔术师也没有在你的代码中得到说明。

是的,它的工作原理是这样的。谢谢!!!。

不知道按模板创建是如此重要。确实是OnStart。我把基本结构搞错了。嗯,我现在就知道了。

 
Alexey Belyakov:

是的,它的工作原理是这样的。谢谢你!(笑)。

我不知道用模板创作是如此重要。OnStart,确实如此。我把基本结构搞错了。嗯,我现在就知道了。

好吧,而你放在与订单合作的功能中的一切都应该被规范化。如果小数点后有6位数字,则不会下单,并会产生一个错误。

用 "只有KimIV的有用功能 "来搜索这个主题,或者在KodoBase中查找。

伊戈尔-马卡 努在上面写了更多的错误。而Kim的功能真的很有用,可以先用。评论很清楚。

 

请帮助。为什么测试会出现错误 - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)" " ????


#财产链接 "2020年,灰色"。

#属性链接 "uirnP0215@mail.ru"

#财产版本 "1.00"

#属性严格


输入双批=0.01。

输入int Magic = 1546。



双重ibufUP[]。

双重ibufDN[]。


//+------------------------------------------------------------------+

//|专家初始化功能|

//+------------------------------------------------------------------+

int OnInit()

{


return(INIT_SUCCEEDED)。

}

//+------------------------------------------------------------------+

//|专家去初始化函数|

//+------------------------------------------------------------------+

空白的OnDeinit(const int reason)。

{

//---


}

//+------------------------------------------------------------------+

//|专家勾选功能|

//+------------------------------------------------------------------+

空白的OnTick()

{

CountFractals()。

如果(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed)

Print("Failed to open sell order");

}

如果(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen)

Print("Failed to opena Buy order");

}



}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

空白的CountFractals()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i)。

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i)。

}

}

//+------------------------------------------------------------------+



 
Madmas:

请帮助。为什么测试会出现错误 - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)" " ????


#财产链接 "2020年,灰色"。

#属性链接 "uirnP0215@mail.ru"

#财产版本 "1.00"

#属性严格


输入双批=0.01。

输入int Magic = 1546。



双重ibufUP[]。

双重ibufDN[]。


//+------------------------------------------------------------------+

//|专家初始化功能|

//+------------------------------------------------------------------+

int OnInit()

{


return(INIT_SUCCEEDED)。

}

//+------------------------------------------------------------------+

//|专家去初始化函数|

//+------------------------------------------------------------------+

空白的OnDeinit(const int reason)。

{

//---


}

//+------------------------------------------------------------------+

//|专家勾选功能|

//+------------------------------------------------------------------+

空白的OnTick()

{

CountFractals()。

如果(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed)

Print("Failed to open sell order");

}

如果(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen)

Print("Failed to opena Buy order");

}



}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

空白的CountFractals()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i)。

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i)。

}

}

//+------------------------------------------------------------------+



CountFractals 函数中添加一个递减计数器 作为开始。