编码帮助 - 页 13

 

快速修改EA

你好。

需要一些帮助,我试着修改下面的代码,但EA一直让MT4崩溃。

我希望订单在当前条形图(即执行订单的条形图)收盘时关闭。基本上是交易一个柱子。

这是原来的代码,它从信号到信号进行交易。

//+------------------------------------------------------------------+

//| Signal Begin(Exit Buy) |

//+------------------------------------------------------------------+

if (signaldown!=EMPTY_VALUE&&signaldown!=0) Order = SIGNAL_CLOSEBUY;

//+------------------------------------------------------------------+

//| Signal End(Exit Buy) |

//+------------------------------------------------------------------+

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

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

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

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

//+------------------------------------------------------------------+

//| Signal Begin(Exit Sell) |

//+------------------------------------------------------------------+

if (signalup!=EMPTY_VALUE&&signalup!=0) Order = SIGNAL_CLOSESELL;

//+------------------------------------------------------------------+

//| Signal End(Exit Sell) |

//+------------------------------------------------------------------+

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

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

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

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

//+------------------------------------------------------------------+

//| Signal Begin(Entry) |

//+------------------------------------------------------------------+

//if (timeprev!=Time[0]){

// timeprev = Time[0];

if (signalup!=EMPTY_VALUE&&signalup!=0)

{

Order = SIGNAL_BUY;

}

if (signaldown!=EMPTY_VALUE&&signaldown!=0){

Order = SIGNAL_SELL;

}

// }

//+------------------------------------------------------------------+

//| Signal End |

//+------------------------------------------------------------------+

//Buy

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

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (100 * 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);

}

}

//Sell

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

if(!IsTrade) {

//Check free margin

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

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

return(0);

}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Ticket > 0) {

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

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

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

} else {

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

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

//+------------------------------------------------------------------+

谁能帮帮我?

 

请帮助!!!!!

我需要一个EA来做以下事情

在一定时间内设置4个买入或卖出订单

功能。

订单开放时间(变量00-24)

订单1卖出或买入很多(0.01 .0,02...1) TP (+ xx pips from oppen) SL (- xx pips from open)

order2 卖出或买入一手 (0.01 .0,02... 1) TP (+ xx pips from oppen) SL (- xx pips from open)

order3 卖出或买入一手 (0.01 .0,02... 1) TP (+ xx pips from oppen) SL (- xx pips from open)

order4 卖出或买入一手 (0.01 .0,02... 1) TP (+ xx pips from oppen) SL (- xx pips from open)

谢谢

 

需要在我的EA中添加一个代码,以便在某些价格水平上禁用它

你好。

我需要在我的EA中添加一个代码,以便在特定的价格水平上禁用和启用它。

我搜索了一下,发现我可以通过以下方式实现

# iclude<WinUser32mqh

extern bool Disable Ea = true // 从X(examply1.4420)到Y(examply1.4380),从Z(examply1.4480)到N(examply1.4520)//

extern bool Enable Ea = true // 从R(examply -1.4420)到T(examply -1.4480)

请帮助我把这些条件翻译成代码,这样我就可以在EA的对话框里输入禁用/启用EA的价格水平了。

 

经过一些搜索和研究,我发现在EA的启动功能 中写一个代码可以在某些条件下启动它。

所以我在专家启动函数中写了以下内容。

if(PRICE_MEDIAN (SellLevel-Point*BufferPips))

返回 (0)

------------------------------------------------------------------------------------------------------------------

我把BufferPips加到了extern double中,所以在对话框中我可以改变它的值。

我不知道PRICE_MEDIAN是否是一个好的选择。

我得到了编译错误--不平衡的左括号。

希望得到帮助

 

帮助我进行自动交易

你好,Guru先生!

我有自动交易,但它没有运行,请帮助我!

附加的文件:
auto_me.mq4  4 kb
 

你好,马里奥。

我认为这个条件if(current_shortEma == current_longEma)绝不是真的。

绝不是真的。通常情况下,为了检测一个交叉点,你需要这样做

如果(current_shortEma > current_longEma && last_shortEma < last_longEma){

//从底部交叉

}

如果(current_shortEma last_longEma){

//从上而下

}

更详细的信息在这里。

https://www.mql5.com/en/forum/trading_systems

谢谢

米哈伊尔

 

我也有一个编码请求 ---- 需要一个编码员(非常简单的任务)。

我们知道HA -- henki ashi很少会出错

在盘整期间,或几乎是转折,它将变得越来越短。

而当趋势仍然强劲时,该条的HA将是长的。

因此

如果我们有一个指标来告诉我们趋势的强度,那会不会很好?

这个想法很简单

--- 首先,任何一个HA都可以(我只附上我的ex4,但必须找到一个MQ4--HA),并对其进行修改(我想这是很简单的任务)。

只有两种颜色的HA,一种是蓝色*上---- + ----,一种是粉色/紫色*下

-- 第二,当HA必须在图表中画出HA的东西时,有LENGTH -- 该HA的长度

--- 第三,当它接近U-turn时,HA条会越来越短。

让我们假设,当HA条的长度(通过试验和错误)短于0.4厘米时,我们就把它画成黑色(即不是蓝色/粉色)。

它将警告我们不要进入并很快退出。

这样一来,我们只需根据HA的趋势强度进入(不用担心)--就像我的其他想法一样,非常简单,非常有帮助。

编码者 -- 请不要使用我附上的ex4,只需在论坛上点击[SEARCH],输入henki ashi,搜索一些带有所有代码的MQ4

------

当你完成后,或在你把它改为3至4色后(可能是3色,而不是4色)。

请给我发一个PM私信,并附上链接,这样我就可以上传,在你开始之后,如果你愿意,我可以给你另一个指标,告诉你什么是最好的时机来改变颜色为黑色 -- 黑色是一种警告的颜色

-----,也就是说,你可以下载我所附的ex4,但要用另一个MQ4,也就是------。

谢谢,这对我们所有人来说都是一个很好的指标,而且编码应该很简单,很直接。

代码在开头,与上图类似。

如果我的猜测是正确的,g_ibuf_##控制HA条的长度。

我们只需用名为 "comment "的函数打印出所有的g_ibuf值。

然后运行图表几天,看看g_ibuf的值,当它变小的时候,注意该变量的VALUE。

然后,当我们有一个时间段需要编码时,我们只需在编码中加入1到2种颜色 -- 比方说,黑色和深灰色,当直方图中的g_ibuf小于某个注意到的值时

所以,这应该是很简单的 -- 否则,可以通过尝试和错误来找到最合适的值(小于)。

诚然

xx3xxx -- 我在那里上传了我的MQ4的第四版,我想你可以使用这个,这个似乎比我的其他HA更长更厚。

附加的文件:
 
 
附加的文件:
lsma_nrp.mq4  5 kb
 

特里克斯指标需要警报

Coder Guru或其他任何人,你能不能在这个Trix指标中设置声音、通知警报和t3_trix_x2roc_clr_nrp_mtf.mq4t3_trix_x2roc_clr_nrp_mtf.mq4e 邮件警报,只要长期或短期Trix线的颜色从红色变为绿色,反之亦然。谢谢

附加的文件: