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

 
законопослушный гражданин:

根据我的理解,该代码的作者建议如下。

如果猫头鹰开了一笔带止损的买入交易,那么他的这段代码就会在同一时间、同一地点(考虑到价差)开一笔带止损的卖出交易,而不是买入交易

因此,寻找EA进入点的逻辑并没有改变,只是考虑到点差的方向改变。

这正是我所需要的

如果你想扭转所有的交易,只需交换

vOrderOpenSell和 vOrderOpenBuy


//+-----------------------------------------------------------------------------------------------+
void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0, iPeriodMA, 0, MODE_SMA, PRICE_CLOSE, 0);

// Если нет открытых ордеров, то входим в условие
   if(bCheckOrders() == true)
     {
      // Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenSell();

      // Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenBuy();
     }
  }
 
SGarnov:

第一个结果:货币对之间有冲突,EA在 单方面也有冲突。 例如,我对欧元兑美元下了一个挂单,EA按照算法(在1.18901买入,打开交易,在1.18751设置止损,在1.19051获利,在1.18751卖出)按计划一切正常。

但现在是时候在GBPUSD开启交易了,那里的价格是不同的,EA做的一切都很好,除了设置一个挂单。在1.39393的卖出订单已经触发,EA试图打开它,在1.39633设置止损,并采取1.39153,但在1.39633的买入订单在欧元兑美元完全重复,在1.18751的卖出订单)

我刚刚发现了另一个问题:在欧元兑美元的开仓交易中,在1.18751处有一个止损,在1.18901处有一个卖出挂单,在1.18595处有一个拿货。专家顾问没有添加被触发的止损,这是在历史上。

这些是问题所在。

我已经发现了订单上的一个错误,我正在努力补充。

 
MakarFX:

如果你需要扭转所有的交易,只需在这里交换就可以了

vOrderOpenSell和 vOrderOpenBuy


不,我不需要反转,而是将亏损的交易 "镜像 "到另一个终端,同时考虑到点差。

但测试者没有提供这样的可能性,我需要测试者中的猫头鹰来 "镜像 "交易,就像它们在另一个终端上打开,但根据这个猫头鹰的逻辑,例如,通过复制器。

我需要它来测试TS

 
Alexey Viktorov:

Makar正确地指出了OrderMagicNumber(),但却误解了这个错误。请阅读该函数的语法文件......它应该是订单列表中的一个索引或一个特定订单的票据,但不是一个魔术。而OrderTicket()在这里没有帮助。不要试图把它放在那里。

这是有道理的。我已将其编译并替换为OrdersHistoryTotal,并在终端设置 中做了过去三天的历史记录。我将测试它。

 
законопослушный гражданин:

我不需要逆转,但需要将亏损的交易 "镜像 "到另一个终端,考虑到价差,就像代码作者的主题一样。

但测试器不提供这样的可能性,为此我需要测试器中的猫头鹰来 "镜像 "交易与点差,就像它们在另一个终端打开,但根据这个猫头鹰的逻辑,例如,通过一个带有倒退的复制器。

我需要它来检查TS。

如果有入市订单的问题,可以尝试更换这个

///////////////
if (cmd==OP_SELL) // Переворачиваем ордера OP_SELL
{
Ret=OrderSend (symbol,OP_BUY,volume,Ask,slippage,takeprofit-sprd,stoploss-sprd,comment,magic,expiration,arrow_color);
}
if (cmd==OP_BUY) // Переворачиваем ордера OP_BUY
{
Ret=OrderSend (symbol,OP_SELL,volume,Bid,slippage,takeprofit+sprd,stoploss+sprd,comment,magic,expiration,arrow_color);
}

如果是所有的订单都有问题,那么请检查STOPLEVEL

 
MakarFX:

.........................,并与加法一起工作

我得出的结论是,这很难实现,你的代码更简单,更清晰,更有逻辑性,但.....,不知道为什么,也没有添加。最主要的是不要放弃。

 
SGarnov:

我得出的结论是,这很难实现,你的代码更简单,更清晰,更有逻辑性,但.....,不知为何也没有加起来。最主要的是不要放弃。

我为苏维埃服务!
 
SGarnov:

我得出的结论是,这很难实现,你的代码更简单,更清晰,更有逻辑性,但.....,不知为何也没有加起来。最主要的是不要放弃。

MakarFX:
我为苏联服务!

也许你还应该考虑到被触发的止损的数量。例如,EA 会在历史上找到一个止损点,如果有两个,它应该同时添加三个和四个,这一切都取决于外部设置 "止损点数量"。

 
SGarnov:

也许你还应该考虑到被触发的停止次数。例如,EA 会在历史上找到一个止损点,如果有两个,它应该把它们都加到三和四,这一切都取决于外部设置 "止损点的数量"。

有一个被触发的止损数量的核算,如果 "亏损订单的数量 "高于设置中指定的数量,那么挂单就不再被放置(已经被选中)。
 

大家好,请帮助我

我有一个这样的问题。我从mql5 买了一个vpc,一切工作正常,自己安装了一个专家,设置了8个图表,并设置了一个专家。我把整个事情转移到vpc。

我不得不从我的电脑上卸载metatrade,因为它不是我的。

而现在当我从电脑里进去的时候。

一切都在运作,专家。它可以工作,但我看不到它,无法对设置进行任何修改。我怎样才能归还EA和时间表,以便我可以从我的电脑上管理它们?

谢谢你!