如何编码? - 页 210

 

非常感谢!!!cockeyedcowboy,这真的很好!!。

现在错误信息已经消失了!

但是第二个指标没有被画出来,我不知道为什么

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i)。

 

你的第二个缓冲区有问题,因为它没有数据用于计算。

试着计算Buffer_Mom中的所有元素,然后是Buffer_Ma。

例子。

void start()

{

int counted_bars=IndicatorCounted();

int limit=Bars-counted_bars;

if(counted_bars>0) limit++;

for(int i=0; i<limit; i++)

{

Buffer_Mom=iMomentum(NULL,Timeframe_Momentum,Periode_Momentum,PRICE_CLOSE,i);

}

for( i=0; i<limit; i++)

{

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

}

return(0);

}

祝您好运。

 

寻找特定条形图的OHLC

谁能告诉我如何使用MQL代码找出一个特定条形的收盘价? 我可以通过它的时间来引用一个酒吧吗?

即:closing_price_of_bar = Close("04:59:00 AM") ......如果有这么简单就好了!

谢谢你

 

大家好!

好吧,我有另一个大问题...

如何对这个条件进行编码。

只在第一时间输入多头或空头

(所以,如果我有许多如下的多头信号,EA只在第一时间输入)。

我希望大家能帮我解决这个问题。

这是我买入条件的简单代码。

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Sadly:
谁能告诉我,我如何使用MQL代码找出一个特定的酒吧的收盘价?我可以通过它的时间来引用一个酒吧吗?

即:closing_price_of_bar = Close("04:59:00 AM") ......如果有这么简单就好了!

谢谢你

试试这个。

closing_price_of_bar =iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59") )。

 

买或卖

大家好。

我有一个买入EA和卖出EA,它们总是开着一个以上的头寸。我希望得到一些帮助,如何改变或修改代码,只允许在一个(一个)账户内有一个(一个)买入头寸和一个(一个)卖出头寸。

SL和TP将使用价格目标,即如果买入价格达到价格目标,它将关闭该头寸。卖出价格也是如此。

我很感谢本论坛中的代码专家的帮助。

谢谢你。

=s21=

附加的文件:
opensell.mq4  2 kb
 

买和卖

呜呼...

这里是买入EA。

附加的文件:
openbuy.mq4  2 kb
 

你好,如果你需要只开一个订单,你可以直接添加下一个条件。如果(OrdersTotal()==0)。

所以你的买入订单的规则将是这样的。

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

[/CODE]

So you will not get second-third-... orders opened until you current order open.

dr.house7:
hy folks !

ok i have another big problem...

how to code this condition :

enter long or short only first time

(so if i have many following long signal ea enter only at first time)

i'll pay everyone could help me on this

this is my simple code for buy condition:

[CODE]

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Roger09:
试试这个: closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59") )。

很好! 我不得不多加了一个小括号,以阻止解释器报错,但效果很好。

谢谢你,Roger09

 
Avalanche2k:
你好,如果你需要只开一个订单,你可以添加下一个条件。如果(OrdersTotal()==0)。

因此,你们的买单规则将是这样的。

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

这样你就不会得到第二-第三-......个订单,直到你当前的订单打开。

谢谢Avalanche。

但这对我来说不是一个解决方案,因为我有一个TP,我不会等到相反的条件。

其他想法?请给我发邮件,我将支付给你