[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 215

 
Qra:

大家好!

我正在写我的第一个机器人,同时我也在熟悉MQL。我在测试过程中遇到了以下问题。

订单OP_BUYSTOP在下单后立即被执行,尽管从图表上看,价格没有达到目标值(见下图)。

时间类型秩序卷宗价格S / LT / P盈利平衡
12011.09.19 02:10买停10.0176.93576.73577.135
22011.09.19 02:10购买10.0176.93576.73577.135

USDJPY,M5(视觉)

日期 2011.09.19

时间 02:15

开放 76.903

76.909

76.890

关闭 76.890

66

我正在测试所有的虱子。

也许我没有正确理解OP_BUYSTOP命令?如果价格超过一定的值,就要买,对吗?

下面是一段下单的源代码

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP)。

提前非常感谢大家!

在蜡烛图上,所有价格都是买入价,任何买入订单 都以卖出价执行。
 
PapaYozh:
在蜡烛图上,所有价格都是买入价,任何买入订单都以卖出价执行。

谢谢你!

 
大家好!

我想删除悬而未决的水平线,如果它们的水平被当前的价格所打破。另一种说法是:如果在创建OBJ_HLINE 之后,已经超过或 "重新协商 "了级别。

感谢Roll的帮助。能否请您告诉我如何正确跟踪保持水平在一个已知时期的条件?
//----------------------------------------------------------------------+ 
//  Удаление  OBJ_HLINE при пробитии его уровня   /Red-Up/Blue-Down|    |
//----------------------------------------------------------------------+   
void DelHLine( string nm="")  
   {
    int obj_total=ObjectsTotal();

       for(int i=1;i<obj_total;i++) 
      { 
        nm=ObjectName(i);
         if(nm==ObjectName(i)&&ObjectType(nm)==OBJ_HLINE)
         {
          color    cl     = ObjectGet(nm,OBJPROP_COLOR);
          double   pl     = ObjectGet(nm,OBJPROP_PRICE1);
          datetime timeSet= ObjectGet(nm,OBJPROP_TIME1);
          int      shift  = iBarShift(NULL,0,timeSet);
   
          if((cl==Red  && pl<High[iHighest(NULL,0,MODE_HIGH,shift,1)])||
             (cl==Blue && pl>Low [iLowest (NULL,0,MODE_LOW, shift,1)]) ) ObjectDelete(nm); 
         } 
      }
    return(0);  
  }
//+------------------------------------------------------------------+
 

你好!请帮助我。

我不明白为什么这个脚本不能以列的形式显示excel中的数据。

在EXCEL中运行时,只有一个表头,没有数据。

请帮助我理解为什么分界线不被EXCEL所感知。

附加的文件:
writefile.mq4  3 kb
 

我开始接触编程,所以出现了很多问题,提前感谢您的关注!

我写了一个名为NewScript的脚本,它执行一个简单的功能--在图表上按条显示OHLC价格...

我的问题是--如果BARS正好是当前图表上的条数,那么为什么在我的EA日志中显示的是屏幕上的条数(大约200条),而在我的日志中却超过了2000条?

谢谢你!

附加的文件:
 
Vinin:


小幅更正


double Hi (int pos=0) //создали Hi, зависящую от pos
{ 
  int i=pos; //присваиваем "i" значение от "pos", то есть i равно pos
  double H=0;
  while (i<=pos+10) //как она может быть меньше, если она равна?
  {
    if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i))  //это мне вообще не понятно... то есть если значение "Н" будет меньше, то присваиваем...  
      H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i); //то есть он определит мне наинизший, но не наивысший бар


    i++; //ну тут мы добавляем к "i" плюс 1
  }
  return(H); //возвращаем Hi в самое начало
}

对不起,我不明白这个功能...

 
CLAIN:



最简单的选择

double Hi (int pos=0) 
{ 
  double H[10]; // Объявили массив
  
  for (i=pos+1;i<=pos+10;i++) // формируем массив
  {
    H[i]=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  }
  int MaxId=ArrayMaximem(H); ищем индекс максимального элемента
  return(H[MaxId]); // возвращаем максимальный элемент
}
 

你好!

你能帮我写代码让EA停止 一段时间吗?

我的代码是这样写的。

int init() {
string OrderStop="OrderStop "+ Symbol();
OrderSig =GlobalVariableGet(OrderStop);
// Print (OrderSig);

return (0);
}

int deinit() {
return (0);
}

int start() {
string OrderStop="OrderStop" + Symbol();
OrderSig = GlobalVariableGet(OrderStop);

如果(OrderSig==1)返回(0)。

否则 {

EA主体(代码)

}

return(0);

}

在预告片中,这段代码可以工作,但当我编译或重新运行终端时。

EA开始工作(开仓),不再交易。

会是什么呢?

或者告诉我另一个选择。

 
alega:

或建议另一种选择。

用一个F。

  Sleep (3000);
 
谢谢你,我会试一试的。
原因: