初学者的问题 MQL4 MT4 MetaTrader 4 - 页 246 1...239240241242243244245246247248249250251252253...261 新评论 Maksim Burov 2021.08.23 16:35 #2451 Valeriy Yastremskiy: 谢谢你。我会试一试的。我不知道这是否会起作用)。 Valeriy Yastremskiy 2021.08.24 12:50 #2452 makssub 我有开放和关闭的订单。 1.当打开一个订单时,我需要把它的票据写到一个数组中,如果数组未被占用(可能=0),这样我就可以在以后的超限时间内从它那里得到报告。 2.在订单关闭后(可以不关闭),应开始报告关闭订单的利润。当达到一定的利润时,即:利润+止盈>=一个未平仓订单(让我们称之为123号订单)的利润,比其他订单早开或以最大的损失(我还没有决定)。 3.如果条件得到满足。"利润之和+塔卡利润>=未平仓订单的利润(让我们称为订单123)",订单123被关闭,阵列被清零(可能变成=0)。 1.当你放置一个EA时,你是否已经有了你想要考虑的开仓和平仓的订单,EA总是在没有开仓的情况下启动,不考虑已经平仓的开仓订单? 2.这一点都不清楚。你有几个订单,当一个订单被关闭时,总的利润被计算出来,并且有被关闭订单的利润数据。还有就是关于没有关闭的订单的利润数据;你可以计算它们。什么是与什么相比。例如,我们有3个订单。1是关闭的,2是正在关闭的,3是打开的。我们有Pr1、Pr2和估计的Pr3配置文件。我们将我们所拥有的与什么相比较。我们理解,当订单没有关闭时,我们没有考虑到佣金和掉期。 3.实际上,如果你用票子将数组归零,接下来会发生什么?市场订单将保留在市场中。你将如何关闭它们? Valeriy Yastremskiy 2021.08.25 19:41 #2453 Oksana_Timakova: 问题:我如何保持高位柱a 和低位柱b 的值,以便用指标线连接它们?我是否需要为此额外创建两个数组? 是的。 缓冲阵列。 Oksana_Timakova 2021.08.25 20:31 #2454 Valeriy Yastremskiy: 是的。 缓冲阵列。 因此,这与ZigZag中的情况相同。而你必须应用一些特殊的功能才能不画两个? Valeriy Yastremskiy 2021.08.25 21:26 #2455 Oksana_Timakova: 所以,结果就像在ZigZag中一样。而你必须应用一些特殊的功能才能不画两个? 线路类型是一样的。我不明白什么是不会画的。你声明了2个缓冲区数组。你设置属性。这是线条的类型,厚度颜色。而你从时间序列中按条分配第一个价格高点和第二个低点。 Maksim Burov 2021.08.26 14:17 #2456 Valeriy Yastremskiy:1.当你放置一个EA时,你是否已经有了你想考虑的开仓和平仓的订单,而每次EA启动时都没有开仓订单,也不考虑之前的平仓订单?2.这一点都不清楚。你有几个订单,当一个订单被关闭时,总的利润被计算出来,并且有被关闭订单的利润数据。还有就是关于没有关闭的订单的利润数据;你可以计算它们。什么是与什么相比。例如,我们有3个订单。1是关闭的,2是正在关闭的,3是打开的。我们有概况Pr1、Pr2和估计的Pr3。我们将什么与什么进行比较。我们理解,当订单没有关闭时,我们没有考虑到佣金和掉期。3.实际上,如果你用票子将数组归零,接下来会发生什么?市场订单将保留在市场中。你如何关闭它们? 再一次)))) 我们有未结订单,我们假设有5个订单都是负数。第一个(123)的0.5手已经落入负数。我们开了一个0.1手的新订单(456),这个订单的票据在开仓时被写入数组。然后,我们继续进行另一系列相同手数的订单;我们获得一些利润,也失去一些。但123号订单仍然是消极的、开放的。一旦456号订单(它也被关闭)之后的所有关闭订单的利润高于123号订单的利润,我们就找到123号订单,因为它是第一个仍然开放的订单,关闭它并将数组清零。 如果我们有几个未平仓的订单,在一定条件下我们再开一个。假设如果 ordertotal>=5 订单结束(第456号票) ,如果订单被成功打开 如果阵列未被占用 票456被写入数组中 456号订单在盈利时关闭(不管盈利或亏损),之后其他订单被打开和关闭,但数组存储了456号票。 CalCloseProfi () - 该函数检查已关闭订单的利润。 从票据456(从数组中取出)的订单开始,按魔法、买入、卖出的方式查看已关闭的订单,并计算其利润。 FirstOrder() - 该函数搜索第一个未平仓订单(它应该找到123)。 如果CalCloseProfi 配置文件>FirstOrder,那么就关闭订单123,并将数组归零,这样当条件满足时,它就能再次写入那里。 我不知道还能怎么解释) 在什么条件下执行这个函数,我可以写,但我没有面对数组。 我需要一个例子,如何获得数组中的信息,即OrederTicket打开时的信息,以及之后如何获得它。 最好使用一个双数组,并将魔术师写在其中的一个部分,这样当在一个账户上工作时,不同的设置就不会混合(也许不是,我对数组不擅长)。 预先感谢 Valeriy Yastremskiy 2021.08.26 21:56 #2457 makssub:再一次))))我们有未结订单,我们假设有5个,都是负数。最早的一个(123),0.5手,是负面的。我们开了一个0.1手的新订单(456),这个订单的票据在开仓时被写入数组。然后,我们继续进行另一系列相同手数的订单;我们获得一些利润,也失去一些。但123号订单仍然是消极的、开放的。一旦456号订单(它也被关闭)之后的所有关闭订单的利润高于123号订单的利润,我们就找到123号订单,因为它是第一个仍然开放的订单,关闭它并将数组清零。如果我们有几个未平仓的订单,在一定条件下我们再开一个。假设如果 ordertotal>=5 订单结束(第456号票) ,如果订单被成功打开 如果阵列未被占用 票456被写入数组中 456号订单在盈利时关闭(不管盈利或亏损),之后其他订单被打开和关闭,但数组存储了456号票。CalCloseProfi () - 该函数检查已关闭订单的利润。 从票据456(从数组中取出)的订单开始,按魔法、买入、卖出的方式查看已关闭的订单,并计算其利润。FirstOrder() - 该函数搜索第一个未平仓订单(它应该找到123)。如果CalCloseProfi 配置文件>FirstOrder,那么就关闭订单123,并将数组归零,这样当条件满足时,它就能再次写入那里。我不知道还能怎么解释)在什么条件下执行这个函数,我可以写,但我没有面对数组。 我需要一个例子,如何获得数组中的信息,即OrederTicket打开时的信息,以及之后如何获得它。 最好使用一个双数组,并将魔术师写在其中的一个部分,这样当在一个账户上工作时,不同的设置就不会混合(也许不是,我不擅长数组)。预先感谢 写出这些函数的条件。 Maksim Burov 2021.08.29 22:04 #2458 下午好。你能告诉我为什么会出现错误:'.......'中的数组超出了范围(152,41) ticket = OrderSend (Symbol(, OP_SELL, lastlot, Bid, Slippage, 0, tpl, Magic, 0, Red); if (ticket <1){ Print("Sell open error");} if (ticket >1 &&SaveTick[1] <= 0&& SaveTick[0] == Magic){ FindTicket(); Print(" Ticket order:", FindTicket(), " Order Array: ", SaveTick[1], " Array Magic: ", SaveTick[0]); } int FindTicket(){ int oldticket; int tick=0; ticket=0; ArrayResize( SaveTick, 2 ) ; for(int cnt = OrdersTotal ()-1; cnt>=0; cnt--){ if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ){ if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic){ oldticket = OrderTicket(); if (oldticket >ticket){ ticket = oldticket; tick = OrderTicket(); SaveTick[1] = tick; SaveTick[0] = Magic;}}}} return(tick);} Questions from Beginners MQL4 10点3.mq4 如何编码? Valeriy Yastremskiy 2021.08.30 14:14 #2459 makssub #:下午好。你能告诉我为什么会出现错误:'.......'中的数组超出了范围(152,41) ticket = OrderSend (Symbol(), OP_SELL, lastlot, Bid, Slippage, 0, tpl, Magic, 0, Red); if (ticket <1) { Print("Ошибка открытия на продажу"); } if (ticket >1 && SaveTick[1] <= 0 && SaveTick[0] == Magic) { FindTicket(); Print(" Тикет ордера: ", FindTicket(), " Массив ордера: ", SaveTick[1], " Магик массива: ", SaveTick[0]); } int FindTicket() { int oldticket; int tick=0; ticket=0; ArrayResize( SaveTick, 2 ); for(int cnt = OrdersTotal ()-1; cnt>=0; cnt--) { if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { oldticket = OrderTicket(); if (oldticket > ticket) { ticket = oldticket; tick = OrderTicket(); SaveTick[1] = tick; SaveTick[0] = Magic; } } } } return(tick); } 正确插入代码,alt S或通过图标,提示代码。 为什么需要SaveTick 数组? 你只用了数组中的2个元素。如果你在函数中声明它们,就用全局变量或静态变量代替它们。 用一个数组来表示2个变量是不理智的。 而且你似乎在调用FindTick() 函数之前调用了数组,在那里SaveTick 数组的大小被设置。而且有一个超限的阵列。 Andrey2503 Averin 2021.08.31 18:40 #2460 它是否已经停止工作🤖? 1...239240241242243244245246247248249250251252253...261 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你。我会试一试的。我不知道这是否会起作用)。
1.当打开一个订单时,我需要把它的票据写到一个数组中,如果数组未被占用(可能=0),这样我就可以在以后的超限时间内从它那里得到报告。
2.在订单关闭后(可以不关闭),应开始报告关闭订单的利润。当达到一定的利润时,即:利润+止盈>=一个未平仓订单(让我们称之为123号订单)的利润,比其他订单早开或以最大的损失(我还没有决定)。
3.如果条件得到满足。"利润之和+塔卡利润>=未平仓订单的利润(让我们称为订单123)",订单123被关闭,阵列被清零(可能变成=0)。
1.当你放置一个EA时,你是否已经有了你想要考虑的开仓和平仓的订单,EA总是在没有开仓的情况下启动,不考虑已经平仓的开仓订单?
2.这一点都不清楚。你有几个订单,当一个订单被关闭时,总的利润被计算出来,并且有被关闭订单的利润数据。还有就是关于没有关闭的订单的利润数据;你可以计算它们。什么是与什么相比。例如,我们有3个订单。1是关闭的,2是正在关闭的,3是打开的。我们有Pr1、Pr2和估计的Pr3配置文件。我们将我们所拥有的与什么相比较。我们理解,当订单没有关闭时,我们没有考虑到佣金和掉期。
3.实际上,如果你用票子将数组归零,接下来会发生什么?市场订单将保留在市场中。你将如何关闭它们?
问题:我如何保持高位柱a 和低位柱b 的值,以便用指标线连接它们?
我是否需要为此额外创建两个数组?
是的。 缓冲阵列。
所以,结果就像在ZigZag中一样。而你必须应用一些特殊的功能才能不画两个?
1.当你放置一个EA时,你是否已经有了你想考虑的开仓和平仓的订单,而每次EA启动时都没有开仓订单,也不考虑之前的平仓订单?
2.这一点都不清楚。你有几个订单,当一个订单被关闭时,总的利润被计算出来,并且有被关闭订单的利润数据。还有就是关于没有关闭的订单的利润数据;你可以计算它们。什么是与什么相比。例如,我们有3个订单。1是关闭的,2是正在关闭的,3是打开的。我们有概况Pr1、Pr2和估计的Pr3。我们将什么与什么进行比较。我们理解,当订单没有关闭时,我们没有考虑到佣金和掉期。
3.实际上,如果你用票子将数组归零,接下来会发生什么?市场订单将保留在市场中。你如何关闭它们?
再一次))))
我们有未结订单,我们假设有5个订单都是负数。第一个(123)的0.5手已经落入负数。我们开了一个0.1手的新订单(456),这个订单的票据在开仓时被写入数组。然后,我们继续进行另一系列相同手数的订单;我们获得一些利润,也失去一些。但123号订单仍然是消极的、开放的。一旦456号订单(它也被关闭)之后的所有关闭订单的利润高于123号订单的利润,我们就找到123号订单,因为它是第一个仍然开放的订单,关闭它并将数组清零。
如果我们有几个未平仓的订单,在一定条件下我们再开一个。假设如果 ordertotal>=5
订单结束(第456号票)
,如果订单被成功打开
如果阵列未被占用
票456被写入数组中
456号订单在盈利时关闭(不管盈利或亏损),之后其他订单被打开和关闭,但数组存储了456号票。
CalCloseProfi () - 该函数检查已关闭订单的利润。
从票据456(从数组中取出)的订单开始,按魔法、买入、卖出的方式查看已关闭的订单,并计算其利润。
FirstOrder() - 该函数搜索第一个未平仓订单(它应该找到123)。
如果CalCloseProfi 配置文件>FirstOrder,那么就关闭订单123,并将数组归零,这样当条件满足时,它就能再次写入那里。
我不知道还能怎么解释)
在什么条件下执行这个函数,我可以写,但我没有面对数组。
我需要一个例子,如何获得数组中的信息,即OrederTicket打开时的信息,以及之后如何获得它。
最好使用一个双数组,并将魔术师写在其中的一个部分,这样当在一个账户上工作时,不同的设置就不会混合(也许不是,我对数组不擅长)。
预先感谢
再一次))))
我们有未结订单,我们假设有5个,都是负数。最早的一个(123),0.5手,是负面的。我们开了一个0.1手的新订单(456),这个订单的票据在开仓时被写入数组。然后,我们继续进行另一系列相同手数的订单;我们获得一些利润,也失去一些。但123号订单仍然是消极的、开放的。一旦456号订单(它也被关闭)之后的所有关闭订单的利润高于123号订单的利润,我们就找到123号订单,因为它是第一个仍然开放的订单,关闭它并将数组清零。
如果我们有几个未平仓的订单,在一定条件下我们再开一个。假设如果 ordertotal>=5
订单结束(第456号票)
,如果订单被成功打开
如果阵列未被占用
票456被写入数组中
456号订单在盈利时关闭(不管盈利或亏损),之后其他订单被打开和关闭,但数组存储了456号票。
CalCloseProfi () - 该函数检查已关闭订单的利润。
从票据456(从数组中取出)的订单开始,按魔法、买入、卖出的方式查看已关闭的订单,并计算其利润。
FirstOrder() - 该函数搜索第一个未平仓订单(它应该找到123)。
如果CalCloseProfi 配置文件>FirstOrder,那么就关闭订单123,并将数组归零,这样当条件满足时,它就能再次写入那里。
我不知道还能怎么解释)
在什么条件下执行这个函数,我可以写,但我没有面对数组。
我需要一个例子,如何获得数组中的信息,即OrederTicket打开时的信息,以及之后如何获得它。
最好使用一个双数组,并将魔术师写在其中的一个部分,这样当在一个账户上工作时,不同的设置就不会混合(也许不是,我不擅长数组)。
预先感谢
下午好。你能告诉我为什么会出现错误:'.......'中的数组超出了范围(152,41)
ticket = OrderSend (Symbol(, OP_SELL, lastlot, Bid, Slippage, 0, tpl, Magic, 0, Red);
if (ticket <1)
{
Print("Sell open error");
}
if (ticket >1 &&SaveTick[1] <= 0&& SaveTick[0] == Magic)
{
FindTicket();
Print(" Ticket order:", FindTicket(), " Order Array: ", SaveTick[1], " Array Magic: ", SaveTick[0]);
}
int FindTicket()
{
int oldticket;
int tick=0;
ticket=0;
ArrayResize( SaveTick, 2 ) ;
for(int cnt = OrdersTotal ()-1; cnt>=0; cnt--)
{
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) )
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
oldticket = OrderTicket();
if (oldticket >ticket)
{
ticket = oldticket;
tick = OrderTicket();
SaveTick[1] = tick;
SaveTick[0] = Magic;
}
}
}
}
return(tick);
}
下午好。你能告诉我为什么会出现错误:'.......'中的数组超出了范围(152,41)
正确插入代码,alt S或通过图标,提示代码。
为什么需要SaveTick 数组?
你只用了数组中的2个元素。如果你在函数中声明它们,就用全局变量或静态变量代替它们。
用一个数组来表示2个变量是不理智的。
而且你似乎在调用FindTick() 函数之前调用了数组,在那里SaveTick 数组的大小被设置。而且有一个超限的阵列。