如何找到移动平均线交叉的条形图的时间?(里面的代码) - 页 3

 

是的,我需要它专门用于PERIOD_H1图表。因为我可能会改变时间框架,并希望对该TF进行硬编码。

(我担心我做错了--特别是你写给我的关于MA和if语句的两次WHRoeder......- 所以我准备好了一些耳光,但我认为这将告诉我MA's交叉的酒吧(如下)。所以这肯定会通过应用于iBarShift来实现。)

if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12)triggerBarTime = Time[1];
 
WHRoeder:

多条移动平均线不会 在同一时间交叉

你为什么要重复发帖?你的问题之前 已经回答 过了。

找出最早的那条,它们都是按正确顺序排列的。


int DIR = 0;
for(int iBar = 0; iBar < Bar; iBar++){
   double MA20 = ... iBar), 
           MA5 = ... iBar);
          :
   if(     MA20 > MA5 && MA5 > ...) DIR = -1;
   else if(MA20 < MA5 && MA5 < ...) DIR = +1; // All fanning up.
   else if (DIR != 0){ iBar--; break; }       // Last one was cross.
}
我可以问一下酒吧变量的目的是什么吗?另外,"--"是什么意思?那两个"--"和"!"标记?(如果你愿意的话?我翻阅了帮助部分,但没有发现它们的用途)。
 
DomGilberto:

我可以问一下Bar变量的目的是什么吗?另外,"--"是什么意思?那两个"--"和"!"标记?(如果你愿意的话?我翻阅了帮助部分,但没有发现它们的用途)。


还有,我可以问你,为什么基本从书还是未知的?

https://book.mql4.com/basics/expressions

 
你的问题就像你说的 "这个小金属薄片(钥匙)是什么,为什么一个按压的东西是长方形(气体),而其他的是方形的?"
学习 代码
 

但我知道煤气钥匙是什么......- 这比编码更简单...

你们是对的--我确实需要通读。

这是因为我最好从试验和错误中学习(当涉及到保留知识时,我是一个动手的人)。当我看到逻辑时,它能帮助我理解它。另外,MQL4网站不一定能清楚地解释这些东西是如何一起工作的。

所以,为了回答你的问题,deVries,这就是为什么我知道一些基础知识和一些更先进的东西,但它是不完整的,因为我喜欢玩,并以这种方式学习。

如果我变得很麻烦,请原谅

EDIT - 我还是不明白你写的WHRoeder代码中的 "Bar "部分 - 我不确定这是否正确?

 
DomGilberto: 但我知道汽油钥匙是什么...- 这比编码更简单...

但你会在不知道它是什么的情况下试图开车吗?那就太愚蠢了。

你是在不知道"--"和"!"是什么的情况下试图编码。有什么区别呢?

 

!=True,如果x不等于y -(DIR != 0) - 如果DIR(也就是0)不等于 "0",那么Break操作符将把控制权 返回给for操作符。并再次启动循环。

--从变量的值中减去1。所以 "iBar--;" = iBar = 0,所以减去1 = -1?

嘿--我在这里真的很努力。如果我没有像某些人那样学得那么快,我很抱歉(你不认为我宁愿这样吗!)。我更愿意自己学习,并得到它,而不需要寻求别人的帮助!)但我正在尽力。我可能不是世界上最聪明的火花...。所以请原谅我,至少...

 
DomGilberto:

!=True,如果x不等于y -(DIR != 0) - 如果DIR(也就是0)不等于 "0",那么Break操作符将把控制权返回给for操作符。并再次启动循环。

--从变量的值中减去1。所以 "iBar--;" = iBar = 0,所以减去1 = -1?

嘿--我在这里真的很努力。如果我没有像某些人那样学得那么快,我很抱歉(你不认为我宁愿这样吗!)。我更愿意自己学习,并得到它,而不需要寻求别人的帮助!)但我正在尽力。我可能不是世界上最聪明的火花...。所以请原谅我,至少...


在这个循环中

for(int iBar = 0; iBar < Bar; iBar++){//....do some stuff and come back}

iBar在这里有不同的值,只要它比Bar小,它就会变成值1高。

iBar--;

指....

iBar = iBar - 1;
 
int DIR = 0;
for(int iBar = 0; iBar < Bars; iBar++)
   {
   double i1  = iMA(NULL,60,3,0,1,0,1); 
   double i2  = iMA(NULL,60,5,0,1,0,1);
   double i3  = iMA(NULL,60,8,0,1,0,1);
   double i4  = iMA(NULL,60,10,0,1,0,1);  
   double i5  = iMA(NULL,60,12,0,1,0,1);
   double i6  = iMA(NULL,60,15,0,1,0,1);  
   double i7  = iMA(NULL,60,30,0,1,0,1);
   double i8  = iMA(NULL,60,35,0,1,0,1);
   double i9  = iMA(NULL,60,40,0,1,0,1);
   double i10 = iMA(NULL,60,45,0,1,0,1);
   double i11 = iMA(NULL,60,50,0,1,0,1);
   double i12 = iMA(NULL,60,60,0,1,0,1); 
   double ema21 = iMA(NULL,60,21,0,1,0,1);

   if(i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && i7<i8 && i8<i9 && i9<i10 && i10<i11 && i11<i12) DIR = -1;
      triggerBarTime = Time[1];
      if(Low[1]<ema21)
      OrderEntry(0);
  else if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12) DIR = +1; // All fanning up.
      triggerBarTime1 = Time[1];
      if(High[1]>ema21)
      OrderEntry(1);
   
   if (DIR != 0)
   { 
   iBar--; break; 
   }       // Last one was cross.

啊--我想我现在可以工作了--只是盯着酒吧看了一会儿,然后意识到:)- 我开始意识到,我试图编写的代码比我最初想象的要稍微复杂一些。我需要MA's转向并向上或向下扇动(取决于是否是买入或卖出)。如果它向上扇动(做多),它们并不总是需要以正确的顺序出现--这只是一个首先确定它们何时全部堆积起来并以正确的顺序扇动的案例--从这一点来说,我所希望的是价格检查 21ema,然后在高点之上下单。当然,我也会玩一玩。我并不期望有人给我写代码--只是大声地写下我的想法而已。

谢谢你!"。

 
修复你的缩进或缺失的大括号
发布的代码
   if(i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && 
      i7<i8 && i8<i9 && i9<i10 && i10<i11 && i11<i12) DIR = -1;
      triggerBarTime = Time[1];
      if(Low[1]<ema21)
      OrderEntry(0);
  else if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && 
          i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12) DIR = +1; // All fanning up.
      triggerBarTime1 = Time[1];
      if(High[1]>ema21)
      OrderEntry(1);
适当缩进
   if(i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && 
      i7<i8 && i8<i9 && i9<i10 && i10<i11 && i11<i12) DIR = -1;
   triggerBarTime = Time[1];
   if(Low[1]<ema21) OrderEntry(0);
   else if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && 
          i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12) DIR = +1; // All fanning up.
   triggerBarTime1 = Time[1];
   if(High[1]>ema21)  OrderEntry(1);
适当的大括号
   if(i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && i7<i8 && 
      i8<i9 && i9<i10 && i10<i11 && i11<i12){
      DIR = -1;
      triggerBarTime = Time[1];
      if(Low[1]<ema21) OrderEntry(0);
   }
   else if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && i7>i8 && 
           i8>i9 && i9>i10 && i10>i11 && i11>i12){
      DIR = +1; // All fanning up.
      triggerBarTime1 = Time[1];
      if(High[1]>ema21)  OrderEntry(1);
   }