初学者的问题 MQL4 MT4 MetaTrader 4 - 页 86

 
smart_man:

如何使所有全局变量的数据在正常和异常模式下关闭终端后仍能保存?

这个问题涉及到在代码开头声明的变量,像这样。

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double  VAR1 = 1;

double VAR2[1000];

我需要不丢失VAR1和VAR2的值(在Expert Advisor的操作过程中,数组中充满了数据)。到目前为止,唯一的想法是在每次打勾时将数据写入一个文件(global.txt),然后在终端启动 时,从文件(global.txt)中读取并重新创建变量,然后在每次打勾时再次写入这些变量。还有什么其他选择?

要么到终端的全局,要么到一个资源
 
Arseniy Barudkin:

谢谢你的帮助!我现在让它保持这样,现在我决定稍微改变一下调用该函数的条件。总的来说,你给了我很大的帮助))

你没有得到答案是对的。你必须设定问题,否则就无法解决。

让我们来看看最初的ToR。

"Arseniy Barudkin2017.05.23 19:56 RU

先生们,你们好!我不想把它当做洪水猛兽,但我不能没有这个功能。那么,谁能帮我提供一个函数,让我浏览所有的订单并同时删除两个订单,一个是最小的手数和负利润的订单,不存在于图表上,另一个是最大的手数和正利润的订单。"

我们在你给我们看的代码中看到了什么?

1.所有的订单都是由专家顾问开的,并且有一个独特的魔术。

2.我们正在寻找的订单的总利润是正数。

3.命令是相反的。

4.盈利为正的手数严格大于盈利为负的手数。

这在提出的职权范围中出现在哪里?

此外:我们可以从代码中看到,你不知道如何关闭相反的订单,至少要损失点差。

 
fxtz:

问题 我能否在Metatrader 4中编写一个程序,在设定了止损和利润的情况下,一键开启2至250个我选择的头寸?这样我就不必每次都手动打开一个了

如果你的经纪人的限制是如此陡峭,编程语言被设计为自动编写脚本。
 
Mislaid:

你没有得到答案是对的。你必须设定问题,否则就无法解决。

让我们来看看最初的ToR。

"Arseniy Barudkin2017.05.23 19:56 RU

先生们,你们好!我不想把它当做洪水猛兽,但我不能没有这个功能。那么,谁能帮我提供一个函数,让我浏览所有的订单并同时删除两个订单,一个是最小的手数和负利润的订单,不存在于图表上,另一个是最大的手数和正利润的订单。"

我们在你给我们看的代码中看到了什么?

1.所有的订单都是由专家顾问开的,并且有一个独特的魔术。

2.我们正在寻找的订单的总利润是正数。

3.命令是相反的。

4.盈利为正的手数严格大于盈利为负的手数。

这在提出的职权范围中出现在哪里?

此外:代码显示,你不知道如何关闭柜台订单,至少要损失点差。


我不是在争论很多缺陷!"。我刚刚开始接触这种类型的活动。我写这篇文章是想得到一些帮助,或者指出错误!我想说的是,我是一个很好的人。我想这就是它的作用。现在说说代码。1)也许,我不明白的是,专家顾问中的所有订单都有一个独特的魔法,这有什么问题?2) 这个条件和整个功能的设计是为了在重度保证金负荷的情况下至少关闭两个相反的订单,而不至于出现亏损,第3和第4点是指同一件事。而且我真的不知道如何正确地关闭反单。
 
Arseniy Barudkin:

我不是在争论很多缺陷!"。我刚刚进入这一行。而我在这个线程中写的是为了获得帮助或指出错误!在我看来,这就是它的作用。现在说说代码。1)也许,我不明白的是,专家顾问中的所有订单都有一个独特的魔法,这有什么问题?2) 这个条件和整个功能的设计是为了在重度保证金负荷的情况下至少关闭两个相反的订单,而不至于出现亏损,第3和第4点是指同一件事。我不知道如何正确关闭相反的订单。
如果你是我的学生,我会因为你提交代码而给你一个 "好"。而且,如果在交流的过程中,你能表现出你能够产生想法,那么 "优秀" 从你的回答中,我看到你的想法是正确的。
 

你好...用MQL4编写的EA,交易市场订单,买入,卖出和追踪。我决定添加待定的买入止损点、卖出止损点......。遇到了一个意想不到的问题=一旦任何挂单 出现在MT4窗口,追踪就停止工作(SL不设置,修改不存在)...我不明白问题出在哪里,尾随 函数是标准的,从库中回溯,两个选定的pp。,......还是与功能无关? 也许有人遇到过这样的事情?

int TralFunck(int Ticket)

 {   double TralPrice=0,Punkt=0;

   chk=OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);

for(Ticket=OrdersTotal()-1; Ticket>=0; Ticket--)  

  { if (OrderProfit()<=0)       continue;

    if (OrderType()==4)		 continue;

    if (OrderType()==5) 	 continue;

   if (OrderType()==0)  {   Punkt=(Bid-OrderOpenPrice())/Point;TralPrice=NormalizeDouble((Bid-Tral*D*Point),Digits);  }

   if (OrderType()==1)  {   Punkt=(OrderOpenPrice()-Ask)/Point;TralPrice=NormalizeDouble((Ask+Tral*D*Point),Digits);   }

   if (Punkt<MarketInfo(Symbol(),MODE_STOPLEVEL))       continue;

   if(Punkt<(Tral+TP)*D)        continue;

   if(OrderType()==0 && TralPrice<=NormalizeDouble(OrderStopLoss(),Digits))     continue;

   if(OrderType()==1 && TralPrice>=NormalizeDouble(OrderStopLoss(),Digits) && OrderStopLoss()!=0)       continue;

   ModifyOrder(OrderTicket(),OrderOpenPrice(),TralPrice,OrderTakeProfit());     continue;

   }   return(0);

 }


 
Yaroslav Nykula:

你好...用MQL4编写的EA,交易市场订单,买入,卖出和追踪。决定添加待定的BuyStop、SellStop ...遇到了一个意想不到的问题=一旦任何挂单 出现在MT4窗口,追踪就停止工作(SL不设置,修改不存在)...我不明白问题出在哪里,尾随 函数是标准的,从库中回溯,两个选定的pp。,......还是与功能无关? 也许有人遇到过这样的事情?



用continue;代替return(0);,以便不退出循环。在函数的末尾,让它保持原样。

使用编辑器中的SRC按钮来插入代码

 
Victor Nikolaev:


用continue;代替return(0);,以便不退出循环。在函数结束时,让它保持原样。

使用编辑器中的SRC按钮来插入该代码


谢谢...固定它...我会考虑到编辑器中的SRC按钮,对不起......但问题仍然是,拖曳 修改 不愿意与待定订单
 
我最近开始在mt4上交易。我决定测试我的策略,但在策略测试器中 我没有可视化功能或暂停按钮。
 
vsmutew7:
我最近开始在mt4上交易。我决定测试我的策略,但我的策略测试器 没有可视化功能或暂停按钮。

可能需要一个更宽的窗口,特别是有 "开始 "按钮的窗口。

原因: