初学者的问题 MQL5 MT5 MetaTrader 5 - 页 302

 
mavar:

干杯!今天我在MT5中推出了我的第一个EA!

市场上合适的情况来了,专家顾问开始买了又买!!。至少我设法及时做出了反应。你能告诉我代码里有什么问题吗?我认为它应该只买一手,并立即设置止损和止盈。只要他买了东西,变量Bye_opened 就应该变成真, 在止损被触发之前,应该不允许他做后续的交易。另外,我如何知道最后一笔交易的价格,以便在上面设置止损?


但看起来我做错了什么。请指出我的错误。

点击率可能比该职位在未平仓名单中的速度更快。所以,你的支票

if(PositionSelect(_Symbol)==true)

将有一段时间不能工作,在这段时间里,将有几个条目被删除。假设上述代码位于tick handler中。

 
pako:

把这个脚本放在scripts文件夹中,在unitor中打开这个脚本,编译它。

当交易所打开时,把这个脚本拖到图表上

谢谢你的帮助,我自己想通了,一切都成功了。
 
大家晚上好,分享一下拖网的代码。谢谢你。
 
PokrovMT5:
大家晚上好,请分享拖网的代码。谢谢。

请使用网站搜索--这并不难:https://www.mql5.com/ru/search#!keyword=%D1%82%D1%80%D0%B0%D0%BB

 
barabashkakvn:

请使用网站搜索--这并不困难:https://www.mql5.com/ru/search#!keyword=%D1%82%D1%80%D0%B0%D0%BB

谢谢你!
 
Dima_S:

点击率可能会比仓位在开仓列表中的速度快。所以,你的支票

将在一段时间内不工作,在这段时间内会有多个条目。假设上述代码位于tick handler中。

迪马,代码在tick处理块中。解决这个问题的正确方法是什么?我在QuickBooks中也遇到了同样的问题,机器人经常买的东西比它应该买的多。我把它归结为它的第二个延迟,并简单地添加了单独的变量,当条件满足时就会改变,但它在那里也有一些问题。有时订单被交易所拒绝,而变量已经有了 "交易 "的值,机器人没有交易。


如何在MQL5中正确解决这个问题,使机器人在给定的条件下买入指定的手数,在卖出所有买入的手数之前,不会买入超过指定的手数?

 

我们是否应该在购买后暂停一下,等待交易所的答复,以确定是否有问题?

Sleep(1000); //你暂停了吗?

 

止损不动

写道。

--修改订单 -- 价格open:1.3111 BID :1.3121 sl 1.3109
修改失败的订单#3在1.31110买入限价1.00 sl: 1.31080 tp: 0.00000 -> 1.31110, sl: 1.31090 tp: 0.00000 [无效的停止]

--修改订单 <- result:10016

为什么?

void MoveStopLoss()
{
   ulong  ticket     = OrderGetTicket(0);
   double price      = OrderGetDouble(ORDER_PRICE_OPEN);
   double slossPrev  = OrderGetDouble(ORDER_SL);
   double sloss      = SymbolInfoDouble(_SYMBOL, SYMBOL_ASK) - SymbolInfoDouble(_SYMBOL, SYMBOL_POINT)*15;

      if (slossPrev < sloss)
      {
         MqlTradeRequest request={0};
         MqlTradeResult  result={0};
         request.action       = TRADE_ACTION_MODIFY;        // Тип выполняемого действия
         request.order        = ticket;                     // Тикет ордера (для модификации ордеров)
         request.price        = price;                      // Цена 
         request.sl           = sloss;                      // Уровень Stop Loss ордера
         request.tp           = 0;                          // Уровень Stop Loss ордера
         request.type_time    = ORDER_TIME_DAY;             // Тип ордера по времени действия
   
         Print ("--Modify order -> ", " price open:", price, " BID :", SymbolInfoDouble(_SYMBOL, SYMBOL_BID), " sl ", request.sl);
         bool ret = OrderSend (request, result);
         Print ("--Modify order <- результат:", result.retcode);      
      }
}
 
mq35:

止损不动

写道。

--修改订单 -- 价格open:1.3111 BID :1.3121 sl 1.3109
修改失败的订单#3在1.31110买入限价1.00 sl: 1.31080 tp: 0.00000 -> 1.31110, sl: 1.31090 tp: 0.00000 [无效的停止]

--修改订单 <- result:10016

为什么?

尝试使SL正常化。
 

正常化没有帮助。同样的事情,sop-loss没有被拉起来

--创建订单-> ASK:1.3121 价格:1.3111 sl 1.3106

在1.3111 (1.3121)买入限额1.00欧元兑美元,目标:1.3106 (1.3118 / 1.3121 / 1.3118)
--创建订单 <- 结果:10009

--修改订单 -- 价格open:1.3111 BID :1.3119 sl 1.3107
修改后的订单 [#3 买入限额 1.00 EURUSD at 1.3111] 。

--修改订单 <- result:10009

--修改订单 -- 价格open:1.3111 BID :1.312 sl 1.3108
修改后的订单 [#3 买入限额 1.00 EURUSD at 1.3111] 。

--修改订单 <- result:10009

--修改订单 -- 价格open:1.3111 BID :1.3121 sl 1.3109
修改失败的订单#3在1.31110买入限价1.00 sl: 1.31080 tp: 0.00000 -> 1.31110, sl: 1.31090 tp: 0.00000 [无效的停止]
--修改订单 <- result:10016
原因: