//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит открытых позиций в пунктах |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int GetProfitOpenPosInPoint(string sy="", int op=-1, int mn=-1) {
double p;
int i, k=OrdersTotal(), pr=0;
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 (mn<0 || OrderMagicNumber()==mn) {
p=MarketInfo(OrderSymbol(), MODE_POINT);
if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01;
if (OrderType()==OP_BUY) {
pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
}
if (OrderType()==OP_SELL) {
pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
}
}
}
}
}
return(pr);
}
这就是我的想法的全部内容。
下午好!我想创建一个指标,在MASD、AO和类似指标上显示一个通道。该指标叠加在基本指标(MASD、AO和类似指标)的窗口上,并被画成高于和低于0的平行线。这些线被定义为指定时期的最大峰值(高于0)和最小谷底(低于0)的平均值。
我试图用AO指标作为例子,但它不工作。
算法:
,我们将指标读数写入一个数组,
,我们通过这个数组寻找峰值/谷值,
,我们将它们写入某些数组,
,我们找到峰值的平均值,然后是谷值,
,我们将得到的值分配给指标缓冲区。
在这一步,代码中定义的不是指标上的通道(坚持到0),而是最大峰值的平均值和最小谷值的平均值。
波峰和波谷的定义可以从代码中删除,作为一个函数来执行,但现在我让它保持这种方式--它并没有改变事情。
问题:
1.终端挂起(相当多)
2.行数不显示为平均数;显示为一段时期的最大/最小值。
花了很长时间才弄明白,但我无法弄清问题的原因。请你帮助我纠正我的代码,或者给我一个类似问题的源代码链接,我将尝试进一步纠正。提前感谢。
ExistInHistoryToDay()。
下午好!
问题:
1.终端挂起(显著)。
在一个循环中增加数组的大小 是很残酷的,这就是为什么它挂起。一次性加大尺寸。或者一次使用时间序列
P.S. 见个人留言
如何循环浏览一个字符串类型 的变量?
例子
我如何用一个循环来代替这个结构?下午好,请告诉我如何写一个条件,即如果一个未平仓订单的利润为一磅,则关闭该订单?
使用函数。
https://www.mql5.com/ru/forum/131859/page3#434225
如何循环浏览一个字符串类型的变量?
例子
我如何用一个循环来代替这个结构?谢谢你