[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 97

 

这里: https://docs.mql4.com/ru/dateandtime/DayOfWeek

我已经看到了这个,它返回的是星期 几,但我需要知道下周的最后一天是哪一天。因为有的时候,最后一个工作日不是星期五

 
请告诉我是否可以改变测试后打开的图表的模板?为了使交易标记可见,但当我应用自己的模板时,所有的标记都在那里......
 
alexhammer:


你的代码不起作用....:( 我只需要在停止.....,同时开立一个订单。没有指标...仅仅通过关闭lot....没想到这是一项如此艰巨的任务!

帮助我!!!。这很紧急!:(

 
ScioMe:
能否请您修改测试后打开的图表模式?我正在使用我自己的模板,所有的标记都在那里......

在选中 "可视化 "的情况下启动测试器。

当测试仪加载历史记录并开始工作时,按下暂停按钮并在图上设置你的模式。

按下暂停按钮,继续进行测试。如果你愿意,你可以跳过可视化的内容(跳到按钮)。

当测试器完成后,你会看到图表上所有的箭头都有你的图案。

 
PariaH:


你的代码不适合....:( 我只需要在停止.....,同时开立一个订单。没有指标...仅仅通过关闭lot....没想到这是一项如此艰巨的任务!

这很紧急!!!。:(

我认为这可以通过记录悬挂的手数来解决。内置的MovingAverage Expert Advisor中的CalculateOrders()函数。

你已经下了一个订单->计算有效订单的数量->把 它记在一个变量中->。

在Start函数中检查每个迭代->如果订单数量减少->如果减少,作出必要的反应。

 
PariaH:


你的代码不适合....:( 只需要在停止.....,同时开立一个订单。没有指标...仅仅通过关闭lot....没想到这是个很难的任务!

帮助我!!!。这很紧急!:(

该函数返回在停止时关闭最后位置的标志。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по стопу.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, osl;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    osl=NormalizeDouble(OrderStopLoss(), dg);
    if (ocp==osl) return(True);
  }
  return(False);
}

...就可以了。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}

在这里 自己看一下。然后你可以写你自己的...

 

你好。

我正在研究一个专家顾问,我不知道下面这一行应该如何执行。

如果(profitbuy<=0)mtpb=tpb。

条件很清楚,不清楚的是在什么结果下,变量mtpb取得变量tpb的值。

 
paibolit:

你好。

我正在研究一个专家顾问,我不明白下面这一行应该如何执行。

如果(profitbuy<=0)mtpb=tpb。

条件很清楚,不清楚的是在什么结果下,变量mtpb取得变量tpb的值。

如果海湾头寸的利润不超过零,那么mtpb=tpb。
 
ZZZEROXXX:

这里: https://docs.mql4.com/ru/dateandtime/DayOfWeek

我已经看到了这个,它返回的是星期几,但我需要知道下周的最后一天是哪一天。因为有的时候,一周的最后一天不是星期五。

目的并不能证明手段是正确的。

为了澄清,这里有一个问题:你自己,当你想确定 "下周 的哪一天是最后一天 "时,你是怎么做的?对了,你查一下当年的日历,看看你的国家具体有哪些假期,看看周末是否从一天转到另一天(比如从周日转到周四,为此每年的议会,即国家杜马,都会通过一份单独的文件),等等。你认为有谁会为这个目的不辞辛劳地在MQL中创建一个程序吗?就个人而言,对我来说,看日历更容易...

 

晚上好!对不起,我想了解一下原理,什么,这样的结构是不可能的?

int u; u=0-10; for( u;u<30; u++) {Alert("u",u); } 写入错误';' - 赋值期望C:\Òãîðóì MF Trader 4\documents\experts\cycle.mq4 (33, 31)
它在u;u之间显示了一个分号,我在帮助下检查了一次,请解释一下!