KimIV的有用功能 - 页 117

 
tim-time:

...在你的e-SignalOfTrade EA中添加PUSH通知

完成了...从我的网站下载...
 
KimIV:

我把ErrorRU() 函数放在一起,它通过代码返回一个错误的简短或详细的俄语 描述。交易服务器返回的错误和执行MQL程序的错误都被检测到。然而,并非所有的错误都有详细的描述和 "怎么办 "的建议,但事实就是如此。

我正在发布脚本中的函数,以测试它。

如果有人需要MQH-文件形式的变体,你可以从我的网站上 得到它。


问候伊戈尔。谢谢你提供这个功能,它非常有用
 

你好,KimIV

你的网站 上有一个很棒的功能i-Profit.mq4。

你能告诉我如何从中提取余额数据吗?

// 0 - 当前余额

// 1--一天开始时的余额。

// 2--在本周初取得平衡。

// 3 - 月初的资产负债表

// 4 - 季度初的余额

// 5 - 年初的余额

// 6 - 截止到用户日期的资产负债表

 

ProfitByPrice()函数。

这个函数是我的一小套预测函数中的一个。预测性是指它们显示了未来,也就是说,它们回答了一个问题:"如果某个事件发生,会发生什么?例如,如果当前头寸以作为参数传递的价格被平仓,该函数将返回存款货币的利润。

  • op- 贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何交易操作。
  • mn- 位置标识符,MagicNumber。默认值-1 表示任何标识符。
  • cp- 预期收盘价。默认值为0 意味着当前的买入价

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}

ZZY.附在后面的是测试函数的传统脚本。

ZZZY.参数之间不存在传统的sy,因为其他参数中传递的价格应该与交易工具相关。我决定不用太费心,把它与当前的符号联系起来。

附加的文件:
 
亲爱的伊戈尔,感谢你的功能,使我们在编程方面的第一步变得更容易!你是谁?你能帮助我吗,我需要一个函数来关闭一个位置,但不参考其他函数,但要有选择,3次尝试和错误处理而在开始的时候,我会开出有检查功能的条件,没有选择,以免拖累进程。到目前为止,我在开始时使用一个带有各种检查的Selekt循环,在没有Selekt的情况下调用 关闭函数,这几乎使速度下降了一倍!你能给我什么建议?谢谢!
 

KimIV:

我们需要在一个结算价格上设置一个挂单,前提是在该价格的Distanc距离内没有其他订单或头寸。你似乎没有这样的功能:在与给定价格有一定距离的情况下存在订单或头寸?

 
我猜KimIV 不看这里!:(
 
khorosh:

KimIV:

我们需要在一个结算价格上设置一个挂单,前提是在该价格的Distanc距离内没有其他订单或头寸。你似乎没有这样的功能:在与给定价格有一定距离的情况下存在订单或头寸?


你可以画一些与 类似的东西...

更新...

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}

附上一个测试ExistOPNearPrice()函数的脚本

附加的文件:
 
borilunad:
亲爱的伊戈尔,感谢你的功能,使我们在编程方面的第一步变得更容易!你是谁?你能帮助我吗,我需要一个函数来关闭一个位置,但不参考其他函数,但要有选择,3次尝试和错误处理而在开始的时候,我会开出有检查功能的条件,没有选择,以免拖慢进程。到目前为止,我一直在开始时使用一个带有各种检查的Selekt循环,在没有Selekt的情况下调用关闭函数,这几乎使速度降低了一倍!你能给我什么建议?谢谢!
ClosePosBySelect()不是吗?
 
artmedia70:
ClosePosBySelect()不是什么吗?
是这样,但不是那样,很多不必要的对其他函数的调用,导致了错误的发生!