[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 19

 
大家好。我需要一个机器人,它能跟踪交易,并在收盘时按takeprofit创建一个挂单,以取代已关闭的订单,其参数与已关闭的订单相同。这样的机器人可以实现吗?我以前从未使用过。如果你在什么地方有一个,请给我一个链接。预先感谢你。
 
以前,利润结算是以存款的货币 为单位,计算方法是
double Lot = 0.1;
int KoffProfit = 10;
ProfitValue = Lot * KoffProfit * MarketInfo(Symbol(), MODE_TICKVALUE); 
如何将这个公式转换成点数?
 

我想知道如何优化代码,以加快测试仪中的猫头鹰的速度。你能告诉我如何更快地执行循环吗,像这样。

for (int i = OrdersTotal() - 1; i >= 0; i--) {
   if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))  continue; 
   if (OrderSymbol() != Symbol())                    continue;    
   if (OrderMagicNumber() != Magic)                  continue;
   
   // работаем с ордерами      
}

或像这样。

for (int i = OrdersTotal() - 1; i >= 0; i--) {
   if (OrderSelect(i, SELECT_BY_POS)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
      // работаем с ордерами
      }
   }
}

以及任何其他加快EA速度的技巧?

 
T-G: 以前,收盘时的利润是以存款货币计算的,像这样计算
,如何将这个公式转换为点数?
这个公式的改变没有意义,找到必要的订单(OrderSelect())并计算(OrderOpenPrice()-Bid)/Point(或OrderOpenPrice()-Ask),得到该订单已经有多少个点
T-G:还有没有其他加快EA速度的技巧?

在mql4中,有一个全面的条件检查,即所有在括号if()中的表达式都会被检查到最后,所以有时将复杂的条件分解成几个条件是合理的。

if(a>b && c>d)可以替换为if(a>b){ if (c>d).....}

因此,你建议的第一个代码变体将工作得更快一些,尽管从实践来看--订单的枚举并没有加载很多处理器,数学运算加载了很多处理器,寻找提高代码性能是有意义的--不是所有的计算都要在每个tick 上执行。

 
IgorM:

在mql4中,有一个完整的条件检查,即所有在括号if()中的表达式都会被检查到最后,所以有时将复杂的条件分成几个条件是合理的。

if(a>b && c>d)可以替换为if(a>b){ if (c>d).....}

因此,你建议的第一个代码变体将工作得更快一些,尽管从实践来看--顺序搜索并不加载处理器很多,数学运算加载处理器很多,寻找增加代码性能是有意义的--不是所有的计算都需要在每个tick进行

我明白了,谢谢你。

Rez = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), iSlippage, Blue);
if (Rez) Comment("Закрыт ордер # ", OrderTicket(), "  прибыль ", OrderProfit());

或条件中的相同归一化。

if (NormalizeDouble(dOrderOpenPriceBuyStop - StepTral * Point, Digits) > NormalizeDouble(Ask + Step * Point, Digits))

使得EA的执行速度大大降低?

 
T-G: 或条件相同的正常化。

减慢了EA的执行速度?

试着用GetTickCount()自己检查一下,创建一个脚本,运行一次正常化10 000次,运行两次10 000次,然后你可以评估一下,寻找经常运行正常化的代码部分对你有多大的帮助。关于Print(),我甚至觉得很难回答--你会在每个tick上输出Pronta吗? 通常,输出操作会大大降低Expert Advisor的速度,有Comment()的脚本比没有输出的脚本运行时间长10倍,但话说回来,这个问题是关于权宜之计--如果你需要它,你就必须这样。
 
T-G:

我明白了。谢谢你。但请告诉我,例如在关闭一个订单后,打印。

或条件中的相同归一化。

显著减慢了EA的执行速度?

Print()操作是对一个文件(本例中是一个日志文件)的操作。而这些操作是非常慢的(与处理来自内存的数据相比)。结论:创建一个变量,在init()中初始化。

bool gb_VirtualTrade;
init()
{
    gb_VirtualTrade = (IsOptimization() || (IsTesting() && !IsVisualMode));
}

并按这个变量的条件打印(这是一个选项)。

如果我们从既定的目标(代码优化)出发,你给出的规范化例子是没有意义的。根据经纪公司服务器的技术要求,规范化是必须的,以执行一个 只针对价格和停止的交易订单

 
你好,当专家顾问开仓时,我应该在它的代码中写一个指标(条件),根据它的信号开仓,还是应该在专家顾问中写一个安装有指标的金融工具窗口的路径?
 

亲爱的投机者,救命啊!想找一个在开仓时 自动设置SL和TP的EA。

我事先非常感谢。

 
下午好。如果有人知道在哪里可以下载一个ZIGZAG指示器,用来标记新的光束出现的点(如不同颜色)。如果有的话...