[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 9

 
在mql4中,如果一切出错,有什么好办法可以限制损失(停止EA)?我只发明了在ini文件中不时地重置AccountEquity()的最大值,如果AccountEquity()的当前值比保存的值少了某个定义的百分比,就停止交易。请告知。
 
igrok2008 писал(а)>>
上述例子描述了CCI、RSI和WPR的买入和卖出代码。究竟为什么要使用这些指标?在我看来,他们是最容易学习如何建立一个专家顾问的。买入和卖出原则对他们来说是一样的。小于-100(对于CCI),-70(对于RSI)和20(对于WPR),分别卖出将是:+100,-30和80。在我看来(不止一次穿越),错误是在交易条件中,但我不明白的地方.....。这是关于正确书写交易条件的原则(我认为是)..............。这就是我想问你的问题........
double CCI = NormalizeDouble(iCCI(NULL, 0,Period,PRICE_CLOSE,1), Digits);

if(CCI[1] > -100)
等一下,这个SSI[1] 是怎么来的?
结果是代码不能编译,所以没有编译是错误的?
 
MuruFigi писал(а)>>
在mql4中,如果一切出错,有什么好办法可以限制损失(停止EA)?我只发明了在ini文件中不时地重置AccountEquity()的 最大值,如果AccountEquity()的当前值比保存的值少某个定义的百分比,那么就停止交易。请告知。

寻找Surgeon的公平和平衡指标。它在CodeBase中。

 
Korey >> :
等一下,它在哪里CCI[1]
结果是代码没有通过编译,也就是说,没有编译是错误的?

CCI[1]是第一个条形图的CCI。

什么是编纂?编译EA(指标、脚本)是你在元编辑器中按F5(编译)所做的事 ??????????

我认为,因为第一条杠还没有形成,所以应该在第一条杠上进行计算。因此,CCI[1]。我错在哪里??????

 
igrok2008 >> :

>> 我错在哪里??????

在一切。辅导员已经分散了,意识到你仍然需要阅读教科书,以便掌握基本概念。否则就不会有对话。

例如,CCI[1],即使是像我这样的 "程序员 "也会把它读成一个名为CCI的数组的单元格调用,并且索引为[1]。你这样说是什么意思?

 
granit77 >> :

在一切。辅导员已经分散了,意识到你仍然需要阅读教科书,以便掌握基本概念。否则,对话将无法进行。

例如,即使像我这样的 "程序员 "也会把CCI[1]理解为对名称为CCI、索引为[1]的数组单元的调用。你这话是什么意思?

差不多吧,那教程的链接呢?或者是MQL4教程 "MQL4Bookrussian"??????????????

 
igrok2008 >> :

大致相同的事情。

提供教科书的链接如何?或者可能是MQL4教程 "MQL4Bookrussian"???????????????。

1.如果是一样的,你在哪里以及为什么声明(创建)这个数组?你可以调用存在的东西。

2.在页面顶部的链接教程。我个人认为罗什的文章 更适合。

 
granit77 >> :

1.如果相同,你在哪里以及为什么声明(创建)这个数组?你可以调用任何存在的东西。

2.教科书 链接在页面顶部。我个人认为罗什的文章 更适合。

1进入CCI[1]>-100是一个买入的交易条件

2读了(虽然很肤浅)教程,读了长达30页的KimIV有用的函数,读了 "傻瓜 "的文章,但无处找到答案,为什么令牌条件应该这样写,如果(废话知道什么<*****&&废话知道如何>******)。为什么应该是这样。

tratat AND trat,而不仅仅是if(trat<******)。这就是我不清楚的地方。当然,vinin早些时候向我解释了(对MA而言)什么是什么,但为什么你必须使用逻辑和..... 未解释的.................。

还没看完罗沙的文章,谢谢你的提示.............。

 
igrok2008 >> :

1进入CCI[1]>100是一个买入交易条件

为什么应该是tratata和trututu,而不仅仅是if(tratata<******)。这就是我不清楚的地方。当然,vinin早些时候(为MA)向我解释了什么是什么,但为什么你必须使用逻辑和..... 未解释的........。

1.这不是关于它是什么样的条件,而是关于你在比较什么,与什么比较。你认为你是在比较CCI指标的值和水平,而不是指标,你是在写一个不存在的、不必要的自定义数组CCI[]的单元格的值,它只是有相同的名字,也就是空的。这是一个严重的错误,编译器将无法进行编译。

2.如果你从一个箭头指标中获取信号,其中的数值只有在条件发生时才会出现,你就是在写。

if(trata>0) enter; 这是因为信号是离散的,如果没有箭头,则缓冲区是空的,没有其他可检查的。

如果你跟踪指示线越过某个电平(缓冲区已满,信号是模拟的),那么这样写if(trata>level)将导致在指示线高于该电平时,输入的信号是连续的。但这不是你想要的,你想在穿越的那一刻得到一个信号。而穿越的时刻正是通过tratata和trutata被捕捉到的。

也就是说,我们把零点和第一条街的CCI值读入并写入变量。我们检查CCI是否在第一个(前一个)柱子上更高。如果零条上的CCI已经跌破了这个水平,那么就发生了一个交叉。将这两个条件与逻辑和结合起来,我们就有了一个单一的交叉信号。

//объявляем переменную cci_0 и присваиваем ей значение индикатора CCI на нулевом (текущем) баре
double cci_0=iCCI(NULL,0, CCIperiod, CCIprice,0);
//объявляем переменную cci_1 и присваиваем ей значение индикатора CCI на первом (предыдущем) баре
double cci_1=iCCI(NULL,0, CCIperiod, CCIprice,1);
//если значение индикатора CCI на нулевом (текущем) баре уже меньше уровня 100
//а предыдущее его значение (на первом баре) было больше уровня 100
//значит произошло пересечение, и мы даем сигнал на продажу
if( cci_0<100 && cci_1>100) SignalSell=true;
 
granit77 >> :

1.这不是关于它是什么状况,而是关于你在比较什么,与什么比较。你认为你是在与CCI指标的水平进行比较,但你是在写一个不存在的、不必要的自定义数组CCI[]的单元格的值,该数组只是具有相同的名称,也就是空的空间。这是一个严重的错误,编译器将无法进行编译。

2.如果你从一个箭头指标中获取信号,其中的数值只有在条件发生时才会出现,你就是在写。

if(tratata>0) enter; 这是因为信号是离散的,如果没有箭头,说明缓冲区是空的,没有其他可检查的。

如果你跟踪指示线越过某个电平(缓冲区已满,信号是模拟的),那么这样写if(trata>level)将导致在指示线高于该电平时,输入的信号是连续的。但这不是你想要的,你想在穿越的那一刻得到一个信号。而穿越的时刻正是通过tratata和trutata被抓住的。

也就是说,我们读取并将零点和第一条的CCI值放入变量中。我们检查CCI是否在第一个(前一个)柱子上更高。如果零条上的CCI已经跌破了这个水平,那么就发生了一个交叉。将这两个条件与逻辑和结合起来,我们就能得到一个单一的交叉信号。

wo......Wo.......Wo.............. 了解....了解.....shaz,今天下午我将给granit77回复谢谢。即使是第一眼,你也能看到你有天使般的耐心。

不像现在学校里的老师.....

原因: