if(MA1_buf[1]>Close_buf[1] && MA1_buf[0]<Close_buf[0]) //если значение индикатора были выше цены закрытия и стали ниже
{
if(m_Position.Select(my_symbol)) //если уже существует позиция по этому символу
{
if((m_Position.PositionType()==POSITION_TYPE_BUY) && (fabs(DEAL_PRICE-Bid[0])/DEAL_PRICE)>= 0.005) m_Trade.PositionClose(my_symbol); //и тип этой позиции Buy, то закрываем ееreturn;
}
m_Trade.Buy(0.1,my_symbol); //если дошли сюда, значит позиции нет, открываем ее
}
if(MA1_buf[1]>Close_buf[1] && MA1_buf[0]<Close_buf[0]) //если значение индикатора были выше цены закрытия и стали ниже
{
if(m_Position.Select(my_symbol)) //если уже существует позиция по этому символу
{
if((m_Position.PositionType()==POSITION_TYPE_BUY) && (SymbolInfoDouble(_Symbol,SYMBOL_BID)-DEAL_PRICE)/DEAL_PRICE>= 0.005) m_Trade.PositionClose(my_symbol); //и тип этой позиции Buy, то закрываем ееreturn;
}
m_Trade.Buy(0.1,my_symbol); //если дошли сюда, значит позиции нет, открываем ее
}
2)我的方法如下。
if(!RefreshRates())
return;
if(MA1_buf[1]>Close_buf[1] && MA1_buf[0]<Close_buf[0]) //если значение индикатора были выше цены закрытия и стали ниже
{
if(m_Position.Select(my_symbol)) //если уже существует позиция по этому символу
{
if((m_Position.PositionType()==POSITION_TYPE_BUY) && (m_symbol.Bid())-DEAL_PRICE)/DEAL_PRICE>= 0.005) m_Trade.PositionClose(my_symbol); //и тип этой позиции Buy, то закрываем ееreturn;
}
m_Trade.Buy(0.1,my_symbol); //если дошли сюда, значит позиции нет, открываем ее
}
if(!RefreshRates())
return;
1) if(MA1_buf[1]>Close_buf[1] && MA1_buf[0]<Close_buf[0]) //если значение индикатора были выше цены закрытия и стали ниже
{
2) if(m_Position.Select(Symbol())) //если уже существует позиция по этому символу
{
return;
}
2*) m_Trade.Buy(0.1,Symbol()); //если дошли сюда, значит позиции нет, открываем ее
}
3) if
((m_Position.PositionType()==POSITION_TYPE_BUY) && (((m_symbol.Bid()-DEAL_PRICE)/DEAL_PRICE)>= 0.1))
{
m_Trade.PositionClose(Symbol()); //и тип этой позиции Buy, то закрываем ее
}
if(!RefreshRates())
return;
if(MA1_buf[1]>Close_buf[1] && MA1_buf[0]<Close_buf[0]) //если значение индикатора были выше цены закрытия и стали ниже
{
if(m_Position.Select(Symbol())) //если уже существует позиция по этому символу
{
if(m_Position.PositionType()==POSITION_TYPE_BUY && (m_symbol.Bid()-m_Position.PriceOpen())/m_Position.PriceOpen()>=0.1)
{
m_Trade.PositionClose(Symbol()); //и тип этой позиции Buy, то закрываем ееreturn;
}
}
else
m_Trade.Buy(0.1,Symbol()); //если дошли сюда, значит позиции нет, открываем ее
}
if(iTime(NULL,PERIOD_D1,i+1)!=iTime(NULL,PERIOD_D1,i)&&我怎么写这个?)
你需要从time[i]中提取日期并与time[i+1]进行比较。如果它们不相等,则从time[i]中提取时间并与给定的时间进行比较。如果它们是相同的,就放成一条线。
我已经向你展示了如何在脚本中提取这一切。剩下的就是思考了。
你需要从time[i]中提取日期并与time[i+1]进行比较。如果不相等,从time[i]中提取时间并与给定的时间进行比较。如果它们是一样的,就画一条线。
它是如何被提取出来的--我已经在脚本中展示了。剩下要做的就是思考了。
周五晚上,想得很坏)没有什么建树。为什么?
然后从time[i] 中提取时间并与设定的时间进行比较。
可能是time[i+1],我需要把这一行放到前一天收盘后。
你好。
愚蠢的问题,但还是请你帮忙)
我在某个价格进入交易,我总是做多),我将交易价格 与当前出价进行比较,如果我们增加了0.5%,我就关闭。在出价时被诅咒(((())。
我以某个价格进入交易,我总是在等待。我将交易价格 与当前出价进行比较,如果我们上涨了0.5%,我就关闭。
可能是因为这是MQL5。这里没有 "出价",而是SymbolInfoDouble(_Symbol, SYMBOL_BID)。
你好。
愚蠢的问题,但还是请你帮忙)
我在某个价格进入交易,我总是做多),我将交易价格 与当前出价进行比较,如果我们上涨了0.5%,我就关闭。它以出价发誓((())。
你说脏话是对的。在MQL5中,没有这样的数组与Bid价格。
将其替换为
m_symbol.Bid()
并在周期前不要忘记更新价格。
而且他发誓是对的。在MQL5中,没有这样的数组与Bid价格。
将其替换为
而在循环之前,不要忘记更新价格。
我已经用两种不同的方式做了。
1) 专家顾问工作,但不幸的是,它并没有给我提供想法。这很简单,当前一根蜡烛收在下面,下一根蜡烛收在上面时,我就买入。而我只有在价格上涨0.5%时才会关闭。
它使奇怪的交易((()
2)我的方法如下。
我想我搞砸了()。
它产生了一个错误。
以两种不同的方式做了。
1) 专家顾问工作,但不幸的是,它没有实现这个想法。这很简单,我在前一根蜡烛收低,下一根蜡烛收高时买入。而我只在价格上涨0.5%的情况下才关闭。
它使奇怪的交易((()
2)我的方法如下。
我想我搞砸了()。
它给出了一个错误。
打开我的任何代码,你会看到m_symbol和RefreshRates。
打开我的任何代码,你会看到m_symbol和RefreshRates都在那里。
谢谢你。我读过它,也做过它。
现在我搞不清楚为什么这个算法不起作用。
发生的情况如下:购买是在以下条件下进行的
1) 如果条件得到满足。
2) 我检查是否已经有一个未结头寸,如果有,我转到第3点),如果没有,我开一个2*)
3) 如果该仓位是买入,并且满足条件,即价格比进入价增加了10%,那么我就关闭它。
在测试中,发生了以下情况,仓位打开和关闭,不是在条件下((再次请帮助!)。
谢谢你。我已经做了阅读。
现在我搞不清楚为什么这个算法不起作用。
发生的情况如下:购买是在以下条件下进行的
1) 如果条件得到满足。
2) 我检查是否已经有一个未结头寸,如果有,我转到第3点),如果没有,我开一个2*)
3) 如果该仓位是买入,并且满足条件,即价格比进入价增加了10%,那么我就关闭它。
在测试时,发生了以下情况,仓位打开和关闭,不符合条件((再次请帮助!)。
我提出以下算法。
请注意m_Position。PriceOpen()