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

 
      // AO
      if(ao) {
         CopyTime(symbol_name[st],ao_time_frame,1,1,time_buf);
         if(symbol_ao_timebar[st]!=time_buf[0]) {
            symbol_ao_timebar[st]=time_buf[0];
            double ao_buf[];
            CopyBuffer(symbol_ao_handle[st],0,enter_bar,2,ao_buf);
            if(ao_buf[1]>ao_buf[0]&&ao_buf[0]<0) symbol_ao_signal[st]=0;
            if(ao_buf[1]<ao_buf[0]&&ao_buf[0]>0) symbol_ao_signal[st]=1;
            }
         }else symbol_ao_signal[st]=2;
      
      // AC
      if(ac) {
         CopyTime(symbol_name[st],ac_time_frame,1,1,time_buf);
         if(symbol_ac_timebar[st]!=time_buf[0]) {
            symbol_ac_timebar[st]=time_buf[0];
            double ac_buf[];
            CopyBuffer(symbol_ac_handle[st],0,enter_bar,2,ac_buf);
            if(ac_buf[1]>ac_buf[0]&&ac_buf[0]<0) symbol_ac_signal[st]=0;
            if(ac_buf[1]<ac_buf[0]&&ac_buf[0]>0) symbol_ac_signal[st]=1;
            }      
         }else symbol_ac_signal[st]=2;
大家好。这里有一个问题。有一段代码它说。我的意思是,它应该说买入或卖出,但只有当AO和AC在同一平面上时才可以。在零下买入,在零上卖出。
是这样吗?大师们,请帮忙。
这个问题基本上是这样的。这是一个正常的代码还是什么狗屁?
 
MASTERXAYS:
大家好。这里有一个问题。有一段代码它说。我的意思是,它应该说买入或卖出,但只有当AO和AC在同一平面上时才可以。在零下买入,在零上卖出。
是这样吗?请帮助大师们。
问题如下。这是个正常的代码,还是胡说八道?

我把整个方法称为"狗屁"

你见过价格跟随指标吗?另外,请注意,这些是B.威廉姆斯的指标,他没有在外汇市场上交易过,而且这个想法本身就已经过时了。

[删除]  
-Aleks-:
那么,对不起,你是如何进行这种归零的?
与简单类型的归零方式完全相同。一旦 给所需的字段赋值为0,你就会使用反向操作StructToTime()。
 
MASTERXAYS:
大家好。这里有一个问题。有一段代码它说。我的意思是,它应该说买入或卖出,但只有当AO和AC在同一平面上时才可以。在零下买入,在零上卖出。
是这样吗?请帮助大师们。
这个问题基本上是这样的。这是一个正常的代码还是绿油油的一些废话?

请阅读我的文章,其中介绍了信号建设规范。但我个人是以这种方式来写信号函数的。

ENUM_ORDER_TYPE GetSignal(int i,ENUM_TIMEFRAMES tf)
  {
   double bbup[1];
   double bbdw[1];
   double rsi[1];
   double macd[2];
   double stoh[2];
   double Close[2];

   if(IND01[i]==INVALID_HANDLE || IND01[i]==0){IND01[i]=iBands(m_symbol,tf,BB_period,0,2,PRICE_CLOSE);return(WRONG_VALUE);}
   if(IND02[i]==INVALID_HANDLE || IND02[i]==0){IND02[i]=iRSI(m_symbol,tf,RSI_period,PRICE_CLOSE);return(WRONG_VALUE);}
   if(IND03[i]==INVALID_HANDLE || IND03[i]==0){IND03[i]=iMACD(m_symbol,tf,MACD_fast_ema_period,MACD_slow_ema_period,9,PRICE_CLOSE);return(WRONG_VALUE);}
   if(IND04[i]==INVALID_HANDLE || IND04[i]==0){IND04[i]=iStochastic(m_symbol,tf,ST_Kperiod,ST_Dperiod,ST_slowing,MODE_SMA,STO_LOWHIGH);return(WRONG_VALUE);}

   if(CopyBuffer(IND01[i],1,0,1,bbup)<1) return(WRONG_VALUE);
   if(CopyBuffer(IND01[i],2,0,1,bbdw)<1) return(WRONG_VALUE);
   if(CopyBuffer(IND02[i],0,0,1,rsi)<1) return(WRONG_VALUE);
   if(CopyBuffer(IND03[i],0,0,2,macd)<2) return(WRONG_VALUE);
   if(CopyBuffer(IND04[i],0,0,2,stoh)<2) return(WRONG_VALUE);
   if(CopyClose(m_symbol,tf,0,2,Close)<2) return(WRONG_VALUE);

   if(Close[0]<bbdw[0]&& Close[1]>bbdw[0]&&  stoh[1]>stoh[0]&&  stoh[0]<20  &&  rsi[0]<30  &&  macd[1]<macd[0]) return(ORDER_TYPE_BUY);
   if(Close[0]>bbup[0]&& Close[1]<bbup[0]&&  stoh[1]<stoh[0]&&  stoh[0]>80  &&  rsi[0]>70  &&  macd[1]>macd[0]) return(ORDER_TYPE_SELL);

   return(WRONG_VALUE);
  }
 
Aleksey Lebedev:

它将是1,两个时间都是先四舍五入到一整天,然后再减去。

是什么让你认为表达式中的所有数字都是四舍五入的?这不是圆的。我同意,一个变量将被四舍五入。

如果它们被四舍五入,我展示了一个例子--今天的当前栏和昨天的计算栏--1小时TF--它们的差异在所有四舍五入中都将等于零......也许如果我们总是向上取整...

阿列克谢-科齐岑
与简单类型的归零完全一致。一旦你把 0分配 给所需的字段,你就使用反向操作StructToTime()。

谢谢--我再试试--帮助中的例子并不好......

 
-Aleks-:

是什么让你认为表达式中的所有数字都是四舍五入的?没有四舍五入。但变量是圆的--我同意。

如果四舍五入,我举了一个例子--今天的当前栏和昨天的计算--1小时的TF--它们的差异在任何四舍五入中都将等于零......也许如果我们总是向上取整...

当整数(int,long,datetime等)相除时,结果是一个整数,即余数被丢弃。今天00:00和昨天23:59:59,差异将是1天。

 

请你告诉我,MQL4...
我不明白,指标在M5上工作,如何在代码中引用H1上一个柱子的高点或低点?
像iHigh(NULL,PERIOD_H1, i) ...重点是确定(在M5图表上放一个向上/向下的箭头)当前的M5蜡烛是否已经突破了前一小时的高价。


 
在MQL4指标代码中,替换掉以下一行
for(i=pos; i<rates_total; i++) 

for(i=pos; i<rates_total-1; i++) 
导致指标在当前(未完成)的酒吧不被考虑 - 在这个酒吧下根本没有指标线
在MQL5中,当前栏有一些奇怪的指标值,有时只有0.0000。
我可以做些什么呢?
 
MikeZv:

请给我一个提示,MQL4...
我不明白,该指标在M5上工作,如何在H1上参考前一栏的高点或低点?
像iHigh(NULL,PERIOD_H1, i) ...重点是确定(在M5图表上放一个向上/向下的箭头)当前的M5蜡烛是否已经突破了前一小时的高价。


MikeZv:
在MQL4指标代码中,替换掉以下一行

导致指标没有在当前(未完成)的柱子上计算 - 这个柱子下根本没有指标线
在MQL5中,当前栏有一些奇怪的指标值,有时只有0.0000。
我可以做些什么呢?

你在那里如何旋转指标缓冲区并不重要--在这里只有朱纳可以帮助。

已添加。

在调试的时候,检查一下--时间[i]数组中的值--这样你就能明白从哪一端开始计算条数,在哪里有 "零 "条。

 
Karputov Vladimir

你在那里扭曲了指标缓冲区--在这里只有朱纳可以帮助。
...你从哪一端开始计数,你在哪里有 "零 "条。

弗拉基米尔,谢谢你回答了第一个问题,我错过了这些功能...

我把同样的指标放在MT4和MT5中(当然,代码是适应每个平台的)。
到零条为止,它们的数值是相同的,所以显然从一端......:)
而在MT4中,当禁用当前条形图的计算时,在当前条形图下没有任何东西被画出来,在MT5中,则是错误的数值。

附加的文件:
mvt_Vlt.mq4  5 kb
mvt_Vlt.mq5  5 kb