[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 106

 
vovan-gogan:
朋友们,帮助:我的EA中有一个条件,即只有当前一个蜡烛图的低点低于前40个蜡烛图的所有低点时,才会打开买入头寸。问题:如何实现这种对前一个蜡烛图的低点的枚举,并找出前一个蜡烛图的低点是否低于前一个蜡烛图的低点?我预先感谢你。
int TotalBars = 40; // Общее количество свечей по которым нужно осуществлять перебор
double max=0.0;
double min=100.0;
for(int n=0; n<TotalBars; n++)
  {
  if(High[n]>max) max=High[n];
  if(Low[n]<min) min=Low[n];
  }
MessageBox("Maximum="+max+" Minimum="+min);
 
langolier:

艾谢谢你!)
 
langolier:

嗯...问题就在这里...数据应该随着每一个新的刻度线而更新,并且只更新最后30个条形。出于某种原因,我保留了这些数据
 
sergeev:

帮助我找到一个错误!


10
mamba5 18.08.2011 14:23

我正在写一个基于 "黑色MACD "策略的EA。


货币对:任何

时间范围:15年及以上。

指标:EMA(3) EMA(18), RSI(14), MACD(12、26、9)

删除MACD指标的信号线,所有的指标都适用于收盘价指标。

买入信号:EMA(3) 从下往上穿过EMA(18),等待MACD显示积极的一面。如果RSI(14)高于50水平,则买入。止损设置在最后的局部最低点。通过逆转EMA交叉点退出交易,或者使用你自己的方法。

卖出信号:相反的情况:EMA(3)的交叉 EMA(18)向下,等待MACD为负值。如果RSI(14)低于50,则买入。 止损设置为最后的高点。


在编译代码时,它说缺少一个括号。经过长时间的搜索,我似乎找到了它应该在的地方,但是在修复了错误之后,我又得到了20-30个新的错误。请告诉我,我在哪里错过了。))) 代码在所附文件中。

附属文件
BlackvMACD.mq4(5.21 KB) 删除
修正了编译错误。我没有研究策略实施算法的正确性。
附加的文件:
 
first_may:


阅读:https://book.mql4.com/ru/variables/arrays 。事实证明,我可以为三对组织一个二维数组: double Mas_d[3][2] = {1, 0, 2, 0, 3,0}。

同时牢记:

Mas_d[1][1]的值对应于例如AUDCAD对,而Mas_d[1][2]是这个对的值。

例如,Mas_d[2][1]的值对应于澳元兑美元对,Mas_d[2][2]是该对的值。

例如,Mas_d[3][1]的值对应于AUDJPY,而Mas_d[3][2]是这个货币对的值。

数组中的元素会在两个时间段内保留它们的值。然后我就可以根据我需要的标准来改变数组元素的值。我是否正确理解了你的意思?:)

是的,这个方法可能不是最好的,但每个人都自己选择。然后,如果有必要,对其进行现代化改造和优化!:))

我正在使我的方法现代化的过程中。在某些情况下,这是不方便的!:D

 
MaxZ:

是的,这个方法可能不是最好的,但每个人都为自己选择。然后,如果有必要,对其进行现代化改造和优化!:))

我正在使我的方法现代化的过程中。在某些情况下,这是不方便的!:D

我是一个初学者,我试图写一个试用的专家顾问,但我在编译时得到了一个错误 "\end_of_program' - ending bracket '}' expected C:\Program Files\ForexClub MT4\experts\trsi01.mq4 (30, 3)" 我知道我犯了一个错误,你能告诉我哪里出了问题吗?

//+------------------------------------------------------------------+
//| trsi01.mq4 | |
//| Copyright © 2011, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright"Copyright © 2011, MetaQuotes Software Corp.
#属性链接 "http://www.metaquotes.net"

double StopLoss=30。

double TakeProfit=100。

double Lots=0.1;

return(0);


int start()
{
如果(iRSI(NULL,0,8,PRICE_CLOSE,0)<30)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point, Ask+TakeProfit*Point)
{
如果(iRSI(NULL,0,8,PRICE_CLOSE,0)>70)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point)。
{
return(0);
{

 
acoman:

我是一个初学者,我试图写一个试用的专家顾问,但当我编译它时,我得到了错误"\end_of_program' - ending bracket '}' expected C:\Program Files\ForexClub MT4\experts\trsi01.mq4 (30, 3)" 我知道我写错了,你能告诉我错误在哪里?

//+------------------------------------------------------------------+
//| trsi01.mq4 | |
//| Copyright © 2011, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp.
#属性链接 "http://www.metaquotes.net"

double StopLoss=30。

double TakeProfit=100。

double Lots=0.1;

return(0);


int start()
{
如果(iRSI(NULL,0,8,PRICE_CLOSE,0)<30)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point, Ask+TakeProfit*Point)
{
如果(iRSI(NULL,0,8,PRICE_CLOSE,0)>70)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point)。
{
return(0);
{


错误在于你没有从头到尾阅读手册。如果你根本没有打开它。

但你显然错过了这一节:条件运算符if - else

你最好把这本书从头到尾读一遍。

 
谢谢,我会记住的:)。能否请您告诉我们,具体货币对的最小止损是多少?例如EURAUD- 你不能把止损放在低于100点的地方,而对于其他的?
 
first_may:
谢谢,会记住它的:)。你能告诉我,哪种最小止损有特定的货币对?例如EURAUD - 你不能为EURAUD设置低于100点的止损,而对于其他的?

https://book.mql4.com/ru/appendix/marketinfo

MODE_STOPLEVEL 14 最小允许的止损/止盈水平,单位为点
 

如何组成一个二进制数,例如7位数?然后如何(为了方便)将其转换为小数?