如何解决机器人故障?

时间:2021-03-04 18:58:34

标签: mql4

double task = MarketInfo(Symbol(),MODE_ASK);
double ilastBuy = FindLastBuyPrice();
if(FindLastBuyPrice() != 0 && pipsDistFromPriceBuy(FindLastBuyPrice()) <= -10 && CountTradesBuy() >= 1 && FindLastBuyPrice() - task >= 10*Point() ){
        OpenBuy();
Print("Down buy"," add ",add," lbuy ",ilastBuy," p_l_buy ",pipsDistFromPriceBuy(FindLastBuyPrice())," task ",task," countbuy ",CountTradesBuy());
}

我正在使用上述条件在第一笔交易后进入鞅交易。当没有高影响力的新闻会导致高波动时,这种情况工作正常。但是,当有高影响力的消息时,即使不再满足此条件,同一代码也会因同时打开许多交易而开始出现故障。条件是,当市场与上次买入价相差 10 个点时,应开启另一笔交易。 pipsDistFromPriceBuy(double price) 是我用来了解市场何时与上次买入交易相差 10 个点的函数。功能如下。我试图打印,我看到 marketinfo() 实际上并没有捕捉到最新的卖价。在我开始使用 marketinfo() 之前,我只是使用 Ask 问题仍然发生。

int pipsDistFromPriceBuy(double price){
   //Calculate pips from open price of first position
            int vdigits = (int)MarketInfo(Symbol(),MODE_DIGITS);
            double task=MarketInfo(Symbol(),MODE_ASK);
            if(vdigits==5){
               pipsFromOpenPriceBuy = int((task-price)*10000);
            }else if(vdigits==3){
               pipsFromOpenPriceBuy = int((task-price)*100);
            }
  return  pipsFromOpenPriceBuy;
}  

看看下面打印的内容,我认为问题在于获取最新的 Ask 价格。从打印的声明来看,当 Ask 价格为 1.18971 时,机器人不可能在 1.19096 开始买入。所以问题是获取最新的 Ask 价格。 请我需要解决这个问题。如何在高度波动的市场中获得最新价格(AskBid)?

2 21:34:50.752 SARAPH1013103 EURUSD,H1: open #575111690 在 1.19097 买入 0.12 EURUSD 确定

2 21:34:51.358 SARAPH1013103 EURUSD,H1:修改 #575111690 在 1.19097 sl 买入 0.12 EURUSD:0.00000 tp:1.19197 ok

0 21:34:51.358 SARAPH1013103 EURUSD,H1:订单 #575111690 已修改

0 21:34:51.358 SARAPH1013103 EURUSD,H1: Down Buy add 0.001010000000000066 lbuy 1.19096 p_l_buy -12 task 1.18971 countbuy 2

0 个答案:

没有答案
相关问题