KimIV的有用功能 - 页 80

 
zennon писал(а)>>
MovingInWL()函数只是浏览所有未结头寸,而不考虑过滤器sy、op、mn。所附例子EA(第55页)也是如此。

安德烈,谢谢你!纠正了...

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 23.04.2009                                                     |
//|  Описание : Перенос уровня стопа в безубыток                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
  double po, pp;
  int    i, k=OrdersTotal();

  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) {
          po=MarketInfo(OrderSymbol(), MODE_POINT);
          if (OrderType()==OP_BUY) {
            if (OrderStopLoss()-OrderOpenPrice()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_BID);
              if ( pp-OrderOpenPrice()> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()+ LevelWLoss* po, -1);
              }
            }
          }
          if (OrderType()==OP_SELL) {
            if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_ASK);
              if (OrderOpenPrice()- pp> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()- LevelWLoss* po, -1);
              }
            }
          }
        }
      }
    }
  }
}
e-MovingInWL2.mq4 也被修复。
 

下午好,伊戈尔!

感谢你为论坛奉献了这么多时间。伊戈尔,你知道有什么机会可以获得关于传入的买入/卖出请求的信息吗--"市场深度"。

 
Alex30 писал(а)>>
伊戈尔,你知道有什么机会可以获得关于传入的买入/卖出请求的信息吗--"市场深度"。

 
向有经验的人提问:谁能告诉我为什么我的演示指标xMeterMTF.mq4显示的都是正常的,而在真实的欧元中是空的(是否因为在真实的eur/usd- 被列为eur/usddpro的事实),如果是这样可以纠正
附加的文件:
xmetermtf.mq4  8 kb
xmeter.rar  34 kb
 

isTradeTimeString()函数。

该函数返回允许按时间交易的标志。实际上,它实际上是检查交易服务器的当前时间是否位于某个时间段内。如果它在里面,isTradeTimeString()函数返回真,否则返回假。这个函数的特点是可以指定一天内和一天外的时间间隔。这将在使用实例中详细说明。isTradeTimeString()函数接受以下可选参数。

  • TimeBegin- 格式为 "HH:MM "的字符串,它设置交易开始的时间。默认值为 "00:00"。
  • TimeEnd- 格式为 "HH:MM "的字符串,指定交易结束时间。默认值为 "00:00"。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    TimeBegin - время начала торговли         (ЧЧ:ММ)                       |
//|    TimeEnd   - время окончания торговли      (ЧЧ:ММ)                       |
//+----------------------------------------------------------------------------+
bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") {
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeBegin);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeEnd);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour( dtEnd);
  if ( dtBegin>= dtEnd) {
    if ( hc>= he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>= dtBegin && TimeCurrent()<= dtEnd) return( True);
  else return( False);
}
 

isTradeTimeString()的使用实例。

  1. 一天内的时间段。在一个时期内交易服务器的 当前时间,让它成为 "07:50"。
    if (isTradeTimeString("06:00", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. 日内的时间框架。段外的贸易服务器的当前时间,并让它等于 "07:50"。
    if (isTradeTimeString("12:00", "16:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. 时间段包括一天的边界。段内交易服务器的当前时间,并让它等于 "07:50"。
    if (isTradeTimeString("21:15", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. 时间段包括一天的界限。段外的交易服务器的当前时间,并让其为 "07:50"。
    if (isTradeTimeString("22:00", "05:30")) Message("Торгуем...");
    else Message("Отдыхаем...");

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

附加的文件:
 
KimIV >> :

伊戈尔,i-Sessions指标偶尔会出现故障:尚未打开的会议区域出现和消失......

 
DR12CED >> :

伊戈尔,i-Sessions指标偶尔会出现故障:尚未打开的会议区域出现和消失......

哎呀...我收回那句话...他们在等待事件方面也会派上用场......请原谅我......请......。

 
KimIV >> :

isTradeTimeString()函数。

该函数返回允许按时间交易的标志。实际上,它实际上是检查交易服务器的当前时间是否位于某个时间段内。如果它在里面,isTradeTimeString()函数返回真,否则返回假。这个函数的特点是可以指定一天内和一天外的时间间隔。这将在使用实例中详细说明。isTradeTimeString()函数接受以下可选参数。

  • TimeBegin - 格式为 "HH:MM "的字符串,它设置交易开始的时间。默认值为 "00:00"。
  • TimeEnd - 格式为 "HH:MM "的字符串,指定交易结束时间。默认值 - "00:00"。

也可以将变量设置为不是 "字符串",而是 "int"。为了在测试器中搜索?

>> 预先感谢你。

 
vasilyt писал(а)>>
你能否让变量不是 "字符串 "而是 "int"。为了能够在测试器中进行搜索?

在第76页...