任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 560

 
Leo59:
我的专家顾问,在deinit()中,将98496行写入*.csv的日志文件。
为什么专家在测试器中完成的时候,它的卸载方式不同。
- 在测试日期结束时卸货的情况下,一切正常(98496行)。
- 在通过 "停止 "按钮卸货的情况下,只有大约10%的数据。
谁知道问题会是什么呢?


当用户自己卸载专家顾问时,强制终止专家顾问。

最好是在开始时直接记录数据。

 
Roman.:

伙计们,你们如何理解这个警告?

谢谢你。


函数必须被设置为一个变量

例如 bool closee=OrderClose...........

  • 应检查'OrderSelect'的返回值
  • 检查'OrderDelete'的返回值
  • 应检查'OrderSend'的返回值
  • 应检查'OrderClose'的返回值
  • 应检查'OrderModify'的返回值


为了避免这种警告,必须明确指定返回变量的方式
比如说像这样。
  • bool select1=OrderSelect..........
  • bool delete1=OrderDelete..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=OrderSend..........
 
下午好。你能告诉我是否可以在OBJ_TEXT 对象的图形上定义或计算宽度/高度?
 
alxm:
下午好。你能告诉我是否有可能在一个OBJ_TEXT对象的图形上定义或计算宽度/高度?

如何计算字符数,+字体大小 或类似的东西?
 
cipsi:

如果知道的话,如何找到第一个开仓订单的OrderOpenPrice。

1.符号

2.购买订单可以从一个到多个打开

3.魔术

4.订单之间的差异,可能是以票为单位 - 找到最小的票。


double PriceOpenFirstPos(string sy="", int op=-1, int mn=-1) {
  datetime t==0;
  double   r=0;
  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=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t>OrderOpenTime() || t==0) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
 
psdmaster:
阅读关于创建EA的文章 :https://book.mql4.com/ru/samples/expert

你能告诉我如何在一个柱状体上打开交易,并在下一个柱状体出现时关闭它吗?


1.打开交易时,请记住酒吧的时间

像这样。

在起点之外。

 int timeopen;

在开始的时候,你有一个交易开放。

 timeopen=Time[0];

像这样收尾。

if(timeopen!= Time[0]) OrderClose............
 
Zolotai:
请告诉我。我怎样才能找出一个特定符号的未平仓订单的数量,而不需要循环...


没有循环,就没有办法做到。

 

亲爱的,我需要你的帮助。

我正在通过指标优化我的专家顾问,指标的代码如下。

优化的速度很慢,我在EA中做了一个代码,在一个新的条形图 上重新计算指标,这不是很合适。

请看一下指标的代码,可以做什么来使重新计算更快。

#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
extern int       p3          =5;
extern int       p4          =3;
extern int Limit=70;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2,limit3,limit4;
   double impuls;
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
 
   limit1=Bars-counted_bars-1;
   if (limit1>Limit && Limit>0) limit1=Limit;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=500-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }
   for(i=limit1;i>=0;i--) {ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];}
   for(i=limit2;i>=0;i--) {ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1, 0, p2, 0, MODE_EMA,i);}
   for(i=limit3;i>=0;i--) {ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer2, 0, p3, 0, MODE_EMA,i);}
   for(i=limit4;i>=0;i--) {ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p4, 0, MODE_EMA,i);}

   return(0);
  }
 

我在哪里可以读到关于mt4的课程?

我读了帮助,但它没有解释以下几行的意思

CArray::CArray(void) : m_step_resize(16),
                       m_data_total(0),
                       m_data_max(0),
                       m_sort_mode(-1)
  {
  }

在哪里可以读到关于变量初始化 的信息...

 
Vladon:


功能必须设置变量

例如,bool closee=OrderClose...........

  • 应检查'OrderSelect'的返回值
  • 检查'OrderDelete'的返回值
  • 应检查'OrderSend'的返回值
  • 应检查'OrderClose'的返回值
  • 应检查'OrderModify'的返回值


为了避免这种警告,必须明确指定返回变量的方式
像这样。
  • bool select1=OrderSelect..........
  • bool delete1=OrderDelete..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=OrderSend..........


谢谢你。它在没有任何警告的情况下工作。


以手册中的一个例子为指导:-)


删除订单

删除先前的待定订单。

bool OrderDelete(
int ticket, //订单号
color arrow_color // color
);

参数

门票

[订单的唯一序列号。

箭头_颜色

[in] 图表上箭头的颜色。如果该参数缺失或其值为CLR_NONE,图表中就不会显示箭头。

返回的值

如果函数成功完成则返回true,如果有错误则返回false。要获得错误信息,请调用GetLastError()。

例子。

如果(Ask>var1)
{
OrderDelete(order_ticket)。
return(0);
}

原因: