//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 29.04.2013 |//| Описание : Возвращает профит в валюте депозита, если текущие позиции |//| будут закрыты по цене, переданной в качестве параметра. |//+----------------------------------------------------------------------------+//| Параметры: |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| cp - цена предполагаемого закрытия (Bid) ( 0 - текущая цена) |//+----------------------------------------------------------------------------+double ProfitByPrice(int op=-1, int mn=-1, double cp=0) {
double pr=0;
double po=MarketInfo(Symbol(), MODE_POINT);
double sp=MarketInfo(Symbol(), MODE_SPREAD);
double tv=MarketInfo(Symbol(), MODE_TICKVALUE);
int i, k=OrdersTotal();
RefreshRates();
if (cp<=0) cp=Bid;
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
pr+=(cp-OrderOpenPrice())/po*OrderLots()*tv;
pr+=OrderCommission()+OrderSwap();
}
if (OrderType()==OP_SELL) {
pr+=(OrderOpenPrice()-cp-Ask+Bid)/po*OrderLots()*tv;
pr+=OrderCommission()+OrderSwap();
}
}
}
}
}
return(pr);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 24.06.2013 |//| Описание : Возвращает флаг существования ордера или позиции |//| около заданной цены. |//+----------------------------------------------------------------------------+//| Параметры: |//| zp - заданная цена |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - торговая операция ( -1 - любая операция) |//| mn - MagicNumber ( -1 - любой магик) |//| ds - расстояние в пунктах от цены ( 1000000 - по умолчанию) |//+----------------------------------------------------------------------------+bool ExistOPNearPrice(double zp, string sy="", int op=-1, int mn=-1, int ds=1000000) {
int i, k=OrdersTotal(), ot;
if (sy=="" || sy=="0") sy=Symbol();
double p=MarketInfo(sy, MODE_POINT);
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (MathAbs(OrderOpenPrice()-zp)<ds*p) return(True);
}
}
}
}
return(False);
}
...在你的e-SignalOfTrade EA中添加PUSH通知?
我把ErrorRU() 函数放在一起,它通过代码返回一个错误的简短或详细的俄语 描述。交易服务器返回的错误和执行MQL程序的错误都被检测到。然而,并非所有的错误都有详细的描述和 "怎么办 "的建议,但事实就是如此。
我正在发布脚本中的函数,以测试它。
如果有人需要MQH-文件形式的变体,你可以从我的网站上 得到它。
问候伊戈尔。谢谢你提供这个功能,它非常有用
你好,KimIV。
你的网站 上有一个很棒的功能i-Profit.mq4。
你能告诉我如何从中提取余额数据吗?
// 0 - 当前余额
// 1--一天开始时的余额。
// 2--在本周初取得平衡。
// 3 - 月初的资产负债表
// 4 - 季度初的余额
// 5 - 年初的余额
// 6 - 截止到用户日期的资产负债表
ProfitByPrice()函数。
这个函数是我的一小套预测函数中的一个。预测性是指它们显示了未来,也就是说,它们回答了一个问题:"如果某个事件发生,会发生什么?例如,如果当前头寸以作为参数传递的价格被平仓,该函数将返回存款货币的利润。
ZZY.附在后面的是测试函数的传统脚本。
ZZZY.参数之间不存在传统的sy,因为其他参数中传递的价格应该与交易工具相关。我决定不用太费心,把它与当前的符号联系起来。
KimIV:
我们需要在一个结算价格上设置一个挂单,前提是在该价格的Distanc距离内没有其他订单或头寸。你似乎没有这样的功能:在与给定价格有一定距离的情况下存在订单或头寸?
KimIV:
我们需要在一个结算价格上设置一个挂单,前提是在该价格的Distanc距离内没有其他订单或头寸。你似乎没有这样的功能:在与给定价格有一定距离的情况下存在订单或头寸?
你可以画一些与此 类似的东西...
更新...
附上一个测试ExistOPNearPrice()函数的脚本
亲爱的伊戈尔,感谢你的功能,使我们在编程方面的第一步变得更容易!你是谁?你能帮助我吗,我需要一个函数来关闭一个位置,但不参考其他函数,但要有选择,3次尝试和错误处理而在开始的时候,我会开出有检查功能的条件,没有选择,以免拖慢进程。到目前为止,我一直在开始时使用一个带有各种检查的Selekt循环,在没有Selekt的情况下调用关闭函数,这几乎使速度降低了一倍!你能给我什么建议?谢谢!
ClosePosBySelect()不是什么吗?