[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 376

 
Reshetov:

OrdersTotal()给出了已经开仓的数量,也就是说,你可以用它来检查是否已经有一个开仓。

我在平仓时使用教程中的Terminal()函数,前提是Mas_Ord_New[0][0]!=0。但我们在这里还有一个任务:我们应该创建一个标志,如果有一个订单已经被它打开,就禁止用当前信号进行交易。我想用旗子,但我在某些方面犯了一个错误。

  
static bool buy_1=true;
   
if(Stoch_Sig==4 && buy_l==true)
       { 
         sl=Ask-Stop_Loss*Point;
         Ans=OrderSend(Symb,OP_BUY,Lots,Ask,40,sl,0,"LSMA+Stoch",Magic);
         if(Ans==false)
           Alert("Неудачная попытка открыть ордер BUY. Ошибка: ", GetLastError());
         if(Ans==true)
            buy_l=false; // снимем флаг, запрещаем торговать по данному сигналу
       }


   
if(Stoch_Sig!=4 && buy_l==false) // поднимем флаг, сигнал сменился - торговать по нему можно опять
       buy_l=true;
 

帕尼需要帮助 什么事?

2012.09.10 18:40:20 '6257743': 订单买入 5.00 EURUSD 开盘价 1.27816 sl: 1.27791 tp: 1.27876 失败 [无效 S/L 或 T/P]

另外,为什么价格和止损是一样的。

价格1.25618 止损1.25618 盈利 1.25698


获利60点

止损20

 

你好。我有一个关于自定义指标的问题。iCustom的描述说。

doubleiCustom( 字符串, int timeframe, 字符串名称, ..., int mode, int shift)
对指定的自定义指标进行计算。自定义指标必须被编译(文件扩展名为EX4),并放在terminal_directory/experts/indicators 中。
标志 - 符号名称,该指标将根据其数据进行计算。NULL表示当前符号。
时限 - 期间。可以是图表 中的一个时期。0表示当前图表的周期。
名称 - 自定义指标的名称。
... - 参数清单(如有必要)。传递的参数应与自定义指标的外部(extern)变量的声明顺序和类型一致。
模式 - 指示线的索引。可以从0到7,应该对应于索引,由SetIndexBuffer 函数之一使用。
移位 - 从指标缓冲区获得的数值的索引(相对于当前条形图,向后移动指定的周期数)。

问题:如何获得 "shift "的值(当调用带shift的指标时,它使用的值与不带shift的一样,即。iCustom(NULL, 0, "name",pam1,0,1)= iCustom(NULL, 0, "name",pam1,0,100),但如果我在100个柱子前调用该指标,它的值将与iCustom(NULL, 0, "name",pam1,0,100)不同。该指标很简单,使用之前的5个收盘值,取其平均值。

我将感谢您的帮助。

 
paladin80:
你已经把与主线的偏差设置为0(零)。它应该大于零。
雷舍托夫
你会把偏差也设为负值吗?


谢谢你,同志们!正是如此!我当时忙于工作,没有任何头绪。我希望我可以直接点击谢谢你的按钮,这样就不会多此一举。)

顺便说一下,建议通过具有雄辩名称的变量向指标传递参数,这对初学者很有用。到目前为止,我已经这样做了,这次我错过了一些东西。

 

大家晚上好!

我也想问同样的问题,并从这里获取功能https://www.mql5.com/ru/forum/131859

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), clDelete);
          }
        }
      }
    }
  }
}

我得到错误--->

函数中的所有变量都是在它里面定义的......怎么了?

复制了它,粘贴了它。--->

   if((High[2]==High[1])||(Close[2]==High[1])||(High[2]==Open[1]))
   {
   DeleteOrders()
   }
   
   
 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), clDelete);
          }
        }
      }
    }
  }
}
 
DanLett:

那里没有错误。

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), CLR_NONE);
          }
        }
      }
    }
  }
}
但是,你只需要指定一种颜色,例如 -CLR_NONE
 

而且看起来你有这个'挂在空中'。

  if((High[2]==High[1])||(Close[2]==High[1])||(High[2]==Open[1]))
   {
   DeleteOrders()
   }
实际上,这样的条件 (High[2]==High[1 ])或这样的(Close[2]==High[1])或这样的(High[2]==Open[1] 是罕见的。看看这个图,你会发现有多少个这样的巧合?

就删除订单的逻辑而言,......。- 也受到影响,总之。

 

从这里复制代码并创建了一个新的项目(EA),粘贴了代码-> 编译了

奇怪的是,它仍然给出同样的错误......

 
DanLett:

从这里复制代码并创建了一个新的项目(EA),粘贴了代码 -> 编译了

奇怪的是,它仍然给出同样的错误......

试着把除了这个函数以外的所有东西都删除,然后编译。会不会有什么错误?只要在删除之前保存它就可以了。
 

我一直在手动交易,金牛座5分钟,如果你有时间,请查看....

我想在这个策略的基础上建立一个EA,我只需要用条件_2来关闭交易:),我想不出来,我甚至有一个关闭函数,但我一直得到错误.....。