//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.07.2013 |//| Описание : Возвращает цену открытия ближайшей к рынку позиции. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double PriceOpenNearPos(string sy="", int op=-1, int mn=-1) {
double mi, oop=0, p;
int i, k=OrdersTotal(), pp=-1;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) mi=MarketInfo(OrderSymbol(), MODE_ASK);
if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
p=MarketInfo(OrderSymbol(), MODE_POINT);
if (pp<0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
pp=MathAbs(OrderOpenPrice()-mi)/p;
oop=OrderOpenPrice();
}
}
}
}
}
}
return(oop);
}
同事们好,我还在学习代码,我不能完全弄清楚其中的奥妙,我有点为难了。
按照我的理解,我们需要在下订单之前调用这个函数来纠正参数。
有这样一条线来打开一个订单。
如果(buy == true && Open[0]>UpTr && Trade) {
buy=OrderSend(Symbol(),OP_BUYSTOP,LOT(),NormalizeDouble(op,Digits),slipage,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits), "T",Magic,0,MediumBlue)。
这是应该解决的地方吗?以及如何正确地做到这一点。或者这个命令不需要CorrectingPrice()?
预先感谢你。
在向服务器发送交易请求 之前,你应该已经计算好止损和止盈的价格。如我所见,它们被储存在变量中,分别是sl和 tp 。
因此,启动这个函数,并将你的变量名称插入其中。
如果有必要,它将为你纠正它们...
而在调用这个函数后,你可以调用开仓函数
下午好。
我使用KimIV的PriceOpenNearPos()函数。 我注意到 有时, 最近的位置会丢失 ,而使用 另一个位置。 所以 ,我做了 ,代码 ,用于测试,你可以看到 最接近的位置 在日志 中是 如何丢失的。 请检查 ,为什么会发生这种情况 。
根据条件,这些位置不应该相互重叠,但当我运行测试器时,我可以看到 这些位置是重叠的。 (USDJPY 5M)。
在向服务器发送交易请求之前,你应该已经计算好止损和止盈的价格。如我所见,它们被储存在变量中,分别是sl和 tp 。
因此,运行这个函数,把你的变量的名字插入其中。
如果有必要,它将为你调整它们...
而在这个函数被调用后,你可以调用开仓函数
谢谢,知道了。:)
下午好。
我使用KimIV的PriceOpenNearPos()函数。 我注意到 有时, 最近的位置会丢失 ,而使用 另一个位置。 所以 ,我做了 ,代码 ,用于测试,你可以看到 最接近的位置 在日志 中是 如何丢失的。 请检查 ,为什么会发生这种情况 。
根据条件,这些位置不应该相互重叠,但当我运行测试器时,我可以看到 这些位置是重叠的。 (USDJPY 5M)。
检查了...在测试器中...一切都很好。你自己给我看看,职位是如何丢失的。或者更详细地解释你所谓的亏损头寸到底是什么。
我在这里附上我准备好的测试专家顾问的所有额外功能。
见附录。根据条件,仓位不应相互重叠,但终端显示,3号和9号仓位在同一价格开仓(也有4号、6号、8号)。我们进一步查看日志文件,发现在某个时刻,98.179的位置丢失了,出现了98.301。因此,这些职位是重叠的。
见附录。根据条件,仓位不应相互重叠,但终端显示,3号和9号仓位在同一价格开仓(也有4号、6号、8号)。我们进一步查看日志文件,发现在某个时刻,98.179的位置丢失了,出现了98.301。因此,这些职位是重叠的。
感谢你的代码、所提供的材料和你的耐心!你是一个很好的例子。
我修复了这个功能。这里是新版本。
现在的情况是这样的......无重合
谢谢你的代码、提供的材料和耐心
修复了该功能。这里是新的版本。
现在的情况是这样的......无重合
谢谢,一切都很好 !:)
修复了该功能。这里是新的版本。
伊戈尔,是否有地方张贴了你的新库,与你的新功能或与你的一些功能修正?
换句话说--更新的图书馆,已经做了修正和补充......
伊戈尔,是否有地方发布了你的新库,与你的新功能或与你的一些功能的修正案?
换句话说--更新的图书馆,已经做了修正和补充......
还没有张贴的...我还没有时间...但无论如何...我一直在对它们进行调整。而我已经写了30个或更多的新作品。当我有时间和意愿时,我会悄悄地把它们贴在这里))))。
SZY.我可以把所有的库发到邮箱里,就像现在这样,但是如果你发布的话,你应该准备好说明,或者至少是功能的列表和目的,以指定...
还没有张贴的...我还没有时间...但无论如何...我一直在调整其中的东西。而我已经写了30个或更多的新作品。当我有时间和意愿时,我会悄悄地把它们贴在这里))))。
ZS.我可以把所有的图书馆原封不动地发到邮箱里,但如果你出版,你应该准备一份说明,或者至少说明功能的清单和目的...