初学者的问题 MQL5 MT5 MetaTrader 5 - 页 465

 
kashi_ann:

我做错了什么?

这个指标没有任何输入参数吗?(我是指iCustom(...)函数)

(我希望你这里只缺一个结尾的括号)

既然你只复制了2个项目,你是否将它们复制到静态分配的缓冲区

 
亲爱的。

我打开了NT7的指标代码
它包含如果( v>=a && v<b)
我需要增加一个条件:不等于25

是否正确?
if ( v>=a && v<b && v<25 && v>25)
 

Artyom Trishkin
:

1.可以iMaOnArray()
2.也许你看错了 "动量"?指标 --> 振荡器 --> 动量
3.你在子窗口的MAs很奇怪。你从哪里得到这一切?指标 --> 趋势 --> 移动平均线

Artyom,谢谢你的回答,原来是在菜单里......我得到了错误的指标 :) 我在 "导航 "窗口中点击了Indicators\Momentum,但每次都被添加到一个新的子窗口中,看起来很混乱。
请您建议,如果经常重复这个过程,什么会对处理器造成较小的压力。
1) 将我的(复杂)指标放在一个子窗口中,并从这里取值

2)通过OnTime()读取指标值,使用(MQL4)iCustom
如果我理解正确的话,在情况2)中,指标不在窗口中绘制,而是根据要求计算。然而,我不明白指标的可执行代码是加载一次还是每次调用时都加载 ...
P.S. 第二个指标仍然是通过菜单添加到新的子窗口...如何在一个子窗口中把它添加到一个已经存在的指标上?

 

Александр:
Уважаемые,

открыл код индикатора к NT7
вижу в нём if ( v>=a && v<b)
а мне надо добавить ещё условие: неравно числу 25

правильно ли будет следующее?
if ( v>=a && v<b && v<25 && v>25)

永远不会成功,因为。"v<25 && v>25 "总是假的

它应该是这样的。

v!=25

 
Yury Kirillov:

永远不会成功,因为。"v<25 && v>25 "总是假的

它应该是这样的。

v!=25

谢谢!是的。

if ( v>=a && v<b && (v<25|| v>25)) orif ( v>=a && v<b && v! =25)

 
Александр:
谢谢!另一个论坛建议:如果 ( ( v>=a && v<b && ( v<25|| v>25))

在我看来,我会这样写。

{if((v>=a)&&(v<b)&&(v!=25)) 
{
        //разные действия 
}}//if((v>=a)&&(v<b)&&(v!=25)) 

 
 
Oksana Berenko:

这个指标没有任何输入参数吗?(我是指iCustom(...)函数)

(我希望你错过了这里的结尾括号)

既然你只复制了2个项目,你是否将它们复制到静态分配的缓冲区 中?

该指标有很多的输入参数。

我不明白括号在哪里丢失了。

我恐怕不明白静态缓冲区是什么意思。如果你不介意的话,请解释一下。

 
Mike:

Artem,谢谢你的回答,原来它在菜单里......我把指标放在了错误的地方:) 我在导航窗口中点击了Indicators\Momentum,但每次都被添加到一个新的子窗口中,看起来很乱。
请您建议,如果经常重复这个过程,什么会对处理器造成较小的压力。
1) 将我的(复杂)指标放在一个子窗口中,并从这里取值

2)通过OnTime()读取指标值,使用(MQL4)iCustom
如果我理解正确的话,在情况2)中,指标不在窗口中绘制,而是根据要求计算。然而,我不明白指标的可执行代码是加载一次还是每次调用时都加载 ...
P.S. 第二个指标仍然是通过菜单添加到新的子窗口...如何在一个子窗口中把它添加到一个已经存在的指标上?

当你通过iCustom()调用一个指标时,它的缓冲区不会显示在窗口中,但据我所知(在旧版本的MT中肯定是这样),指标显示的所有图形对象都显示在图表窗口中。

要把一个指标放在另一个指标的窗口中,用鼠标把它从导航仪窗口拖到需要的指标窗口。

关于更少的处理器时间消耗 - 没有检查,不知道。

 

帮助我制定条件,完成想法,根据条件在图上打上标记是多么容易?

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
     
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
  //+------------------------------------------------------------------+
void OnTick()
{
        // скорость тиков
        int nTicksSpeed = TicksSpeed();
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int TicksSpeed()
{
        MqlTick oTicks[5];
        ZeroMemory(oTicks);
        
        int nTicksCopied = CopyTicks(_Symbol, oTicks, COPY_TICKS_TRADE, 0, 5);
        
        int nSpeed = 0;

        if(nTicksCopied > 0)
        {
                // скорость роста
                if(oTicks[0].bid > oTicks[1].bid)
                {
                        if(oTicks[4].bid > 0 && oTicks[0].bid > oTicks[1].bid && oTicks[1].bid > oTicks[2].bid && oTicks[2].bid > oTicks[3].bid && oTicks[3].bid > oTicks[4].bid)
                                nSpeed = 4;
                        else if(oTicks[3].bid > 0 && oTicks[0].bid > oTicks[1].bid && oTicks[1].bid > oTicks[2].bid && oTicks[2].bid > oTicks[3].bid)
                                nSpeed = 3;
                        else if(oTicks[2].bid > 0 && oTicks[0].bid > oTicks[1].bid && oTicks[1].bid > oTicks[2].bid)
                                nSpeed = 2;
                                
                        else if(oTicks[1].bid > 0 && oTicks[0].bid > oTicks[1].bid)
                                nSpeed = 1 ;
                        
                }
        
                // скорость снижения
                if(oTicks[0].bid < oTicks[1].bid)
                {
                        if(oTicks[4].bid > 0 && oTicks[0].bid < oTicks[1].bid && oTicks[1].bid < oTicks[2].bid && oTicks[2].bid < oTicks[3].bid && oTicks[3].bid < oTicks[4].bid)
                                nSpeed = -4;
                        else if(oTicks[3].bid > 0 && oTicks[0].bid < oTicks[1].bid && oTicks[1].bid < oTicks[2].bid && oTicks[2].bid < oTicks[3].bid)
                                nSpeed = -3;
                        else if(oTicks[2].bid > 0 && oTicks[0].bid < oTicks[1].bid && oTicks[1].bid < oTicks[2].bid)
                                nSpeed = -2; 
                        else if(oTicks[1].bid > 0 && oTicks[0].bid < oTicks[1].bid)
                                nSpeed = -1 ; 
                }
        }
        
        return(nSpeed);
}

//+------------------------------------------------------------------+

if( nTickSpeed==-1)  отмечаем это место на графике g_Label.Text("-1 ")

if( nTickSpeed==-2)  отмечаем это место на графике g_Label.Text("-2 ")

if (nTickSpeed==-3)  отмечаем это место на графике g_Label.Text("-3 ")

if( nTickSpeed==-4)  отмечаем это место на графике g_Label.Text("-4 ")




if( nTickSpeed==1)  отмечаем это место на графике g_Label.Text("1 ")

if( nTickSpeed==2)  отмечаем это место на графике g_Label.Text("2 ")

if( nTickSpeed==3)  отмечаем это место на графике g_Label.Text("3 ")

if( nTickSpeed==4)  отмечаем это место на графике g_Label.Text("4 ")
 

你可以把结尾处的 "如果 "换成 "如果"。

   switch(nTickSpeed)
     {
      case -4:
         g_Label.Text("-4");
         break;
      case -3:
         g_Label.Text("-3");
         break;
      case -2:
         g_Label.Text("-2");
         break;
      case -1:
         g_Label.Text("-1");
         break;
      case 1:
         g_Label.Text("1");
         break;
      case 2:
         g_Label.Text("2");
         break;
      case 3:
         g_Label.Text("3");
         break;
      case 4:
         g_Label.Text("4");
         break;
     }