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
价格。
请我需要解决这个问题。如何在高度波动的市场中获得最新价格(Ask
或 Bid
)?
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