如何编码? - 页 167

 
 

仍然试图在这个指标中添加声音警报......谁能帮我检查一下 代码,因为它不工作了?

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

//|

//|

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

#property copyright "niva"

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 Red

extern bool Email_Enabled = false;

extern bool Alert_Enabled = true;

//---- input parameters

int CountBars=10000;

//---- buffers

double uptrend[];

double downtrend[];

bool AlertSent,EmailSent;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicator line

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,217);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,218);

SetIndexBuffer(0,val1);

SetIndexBuffer(1,val2);

//----

return(0);

}

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

//| AltrTrend_Signal_v2_2 |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

int i,shift,counted_bars=IndicatorCounted();

int uptrend, downtrend;

for (shift = CountBars; shift>=0; shift--)

{

if(High[shift-1]>High[shift]&&Low[shift-1]>Low[shift]&&uptrend!=3){

uptrend = uptrend+1;

downtrend=0;

}else if(High[shift-1]<High[shift]&&Low[shift-1]<Low[shift]&&downtrend!=3){

downtrend=downtrend+1;

uptrend=0;

}

else{

uptrend=0;

downtrend=0;

}

if (uptrend==3)

{

val1[shift]=Low[shift];

}

if (downtrend==3)

{

val2[shift]=High[shift];

}

}

return(0);

}

//----

if (Alert_Enabled && (uptrend[0] != 0 || uptrend[0] !=0) && !AlertSent)

{

Alert(Symbol() + "HiLow+3");

AlertSent=true;

}

if (Email_Enabled && (downtrend[0] != 0 || downtrend[0] !=0) && !EmailSent)

{

SendMail(Symbol() + "HiLow+3","HiLow+3 indicator triggered");

EmailSent=true;

}

if(downtrend[0] == 0 && uptrend[0] == 0 )

{

EmailSent=false;

AlertSent=false;

}

return(0);

}

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

谢谢

mrwobbles:
在代码的某处,括号不平衡。听起来像是代码中某个地方少了一个}和一个)。你需要查看并计算有多少个开放和封闭的大括号(+1表示开放,-1表示封闭),这应该能告诉你缺少多少个大括号(比如+2表示有两个右括号'}',反之亦然)。如果他缩进得当,你应该能够找出把正确的}放在哪里。狩猎愉快

我设法改变了一些设置,最后我相信几乎达到了目的!现在,在下面的编码之后,它说。

shortSL' - 未定义的变量

'longSL' - 未定义变量

下面是它的样子。

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

//|Salgado.mq4 ||

//|salgadoguilherme@hotmail.com||

//| |

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

#财产版权""

#属性链接 "salgadoguilherme@hotmail.com"

外部 bool trade=true;

extern int barstocount=50;

extern double lots=0.01;

extern int StopLoss =40;

extern int TakeProfit =10;

extern int slippage=3;

外置 int magicnumber=816;

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

//|专家初始化函数 |

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

int init()

{

//----

//----

return(0);

}

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

//|专家的去初始化功能|

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

int deinit()

{

//----

//----

return(0);

}

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

//|专家启动功能|

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

int start()

{

//----

如果(trade==true)

{

//M15

double M15_resistance=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,2,0) 。

double M15_resistance_p=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,2,barstocount-1) 。

double M15_line=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,0,0) 。

double M15_support=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",Barstocount,1,0);

double slopeM15=((M15_resistance-M15_resistance_p)/barstocount)/Point;

//Alert(DoubleToStr(slopeM15,2);

评论(

"\n", "M15斜率|",slopeM15。

//短信息

如果(slopeM15<0 && IsTradeAllowed()==true)

{

bool shortopen=false;

int ord_cnt1=OrdersTotal();

for (int start1=0;start1<ord_cnt1;start1++)

{

OrderSelect(start1, SELECT_BY_POS, MODE_TRADES)。

如果(OrderMagicNumber()==magicnumber && OrderType()==OP_SELL)

{shortopen=true;}

}

如果(shortopen==false)

{

double M15High=iHigh(Symbol(),PERIOD_M15,0);

如果(M15High>=M15_resistance)

int shortticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slipage,Bid+shortSL,M15_line,DoubleToStr(slopeM15,2);

如果(shortticket<0)

{

//长线进场

如果(slopeM15>0 && IsTradeAllowed()==true)

{

bool longopen=false;

int ord_cnt=OrdersTotal();

for (int start=0;start<ord_cnt;start++)

{

OrderSelect(start, SELECT_BY_POS, MODE_TRADES)。

如果(OrderMagicNumber()==magicnumber && OrderType()==OP_BUY)

{longopen=true;}

}

如果(longopen==false)

{

double M15Low=iLow(Symbol(),PERIOD_M15,0);

如果(M15Low<=M15_support)

int longticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slipage,Ask-longSL,M15_line,DoubleToStr(slopeM15,2);

如果(longticket<0)

{

//----

return(0);

}

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

 

蜡烛型印第安人

你好。

我非常需要关于如何编码蜡烛型指标的MQL教程,如附图所示。只要提供本论坛内或外的链接就可以了。非常感谢。

派普。

附加的文件:
ma_candles.gif  15 kb
 

谁能告诉我如何编写以下代码。

计算短期MA与长期MA相交后的条数

谢谢!

 

关机后恢复交易的EA代码。

你好。

是否有任何EA的示例代码,可以在其停止后恢复管理交易,然后再回来?

谢谢。

JForex

 

如何编码?

darvasboxes:
谁能告诉我如何编写下面的代码。

计算短期MA与长期MA相交后的条数。

谢谢!

是的!

计算它们相交后的条数。

int i;

bool shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,0) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,0)) 。

bool sgLast;

for(i=0;i<iBars(NULL,0);i++) {

sgLast = shortGreater;

shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,i) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,i)) 。

if(shortGreater !== sgLast) {

break;

}

}

变量i将包含他们交叉后的条数。

如果你觉得有帮助,请随时给我寄一些现金。 我将不胜感激。

 

给你。

Guilhermesalgado:
我设法改变了一些设置,最后我相信几乎达到了目的!现在在下面的编码之后,它说。

shortSL' - 未定义的变量

'longSL' - 未定义的变量

给你。 我把你所做的修改了一下,使之能够编译。 请注意,你的逻辑很糟糕,显得不完整,而且它可能不会做你想要的事情。

但是,你可以这样做。

- ChazzMoney

P.S. 170美元对于一个程序来说是非常便宜的。 我每年写一到两次定制的投资软件,价格是五位数。 承担这种工作的程序员应该注意--你需要检查所有的东西,以确保你不会错过任何一个案例。 一个错误和一个随机的交易者一样好。

如果你觉得有帮助,请随时给我寄一些现金。 我很感谢你的想法。

附加的文件:
 

标准ZigZag的代码

你好

这段代码来自标准的 "ZigZag.mq4"。

"if (counted_bars==0 && downloadhistory) // history was downloaded"

counted_bars==0 :检查 该值是否等于零........。

downloadhistory:没有条件检查,为什么?请清除这个问题。

谢谢。

 

持续地开两张订单和关闭两张订单。

我一直在尝试,尝试了很久,让我的EA总是为买入或卖出开两个订单。一个是TP,另一个是NONE。在开了两张订单后,就不再开了,直到向相反方向交易的时候。

出于某种原因,我查看了账户历史,我看到1个订单,然后是3个订单,然后是4个机会,然后是2个订单,它的运行就像垃圾一样。

任何编码大师都可以看一下并给我意见吗?

谢谢你!!!!!!!!!!!!!!!!

开放订单

-------

BuyTicket1 = False;

BuyTicket2 = False;

while (!BuyTicket1) {

BuyTicket1 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, Ask + TakeProfit * Point, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue) 。

Sleep(PausebetweenOrders*1000);}

//if (BuyTicket1 && SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open 1st Buy");

Sleep(1000);

while (!BuyTicket2) {

BuyTicket2 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, 0, "2nd Buy(#" + MagicNumber + ")", MagicNumber, 0, BlueViolet)。

Sleep(PausebetweenOrders*1000);}

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

关闭订单

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

如果(OrdersTotal() > 0) {

OrderSelect(0, SELECT_BY_POS, MODE_TRADES)。

如果(OrderType() == OP_SELL){

for (int j = OrdertotalCloseSell-1; j >= 0; j --) {

PositionClosedSell = False。

AttemptsTriedCloseSell = 0;

OrderSelect(j, SELECT_BY_POS, MODE_TRADES)。

while (!PositionClosedSell && AttemptsTriedCloseSell < CloseposnAttempts) {

AttemptsTriedCloseSell = AttemptsTriedCloseSell + 1;

OrderCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, MediumSeaGreen);

Sleep(PausebetweenOrders * 1000);

if( OrderCloseSell == True ) { // 平仓成功。

原因: