初学者的问题 MQL5 MT5 MetaTrader 5 - 页 411 1...404405406407408409410411412413414415416417418...1503 新评论 [删除] 2015.08.16 11:16 #4101 Leanid Aladzyeu:开始研究数组。我写了一个带数组的亲笔订单函数,3个数组=0买入,1=卖出,2=总买入和卖出交易。然后我写了一个买入条件,如果(第一个条件&&数组[0]==0),那么我们就开盘买入。 在出售时,如果(第一个条件&&数组[1]==0),那么我们就建立一个卖出头寸。但测试人员抛出一个错误,测试停止,问题出在哪里?( error " array exit " )这意味着你要处理的索引是在数组布局之外。例如,如果数组[ 3 ];你可以只寻址0到2的项目。检查你的代码。另一种可能是,你没有对数组进行分区(用ArrayResize()),而是试图访问其中的一些元素。 Leanid Aladzyeu 2015.08.16 11:20 #4102 代码...void Oher(int Mag,string Symb, int &mas[2]) { ArrayInitialize( mas,0); int tip; int ticket3 =-1; for (int pos=OrdersTotal()-1; pos>=0; pos--) { if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==Mag && OrderSymbol()==Symb && OrderTicket()!=ticket3) { ticket3=OrderTicket(); tip=OrderType(); switch(tip) { case 0:mas[0]++; mas [2]++;break;// 0 покупка case 1:mas[1]++; mas [2]++;break;// 1 продажа } } continue; } }Чудо код вставил ) 2 раз получилось за все время что я на сайте) [删除] 2015.08.16 11:22 #4103 Leanid Aladzyeu: 代码... 试着自己弄清楚,测试者应该指出错误发生在哪一行和哪一行的位置。 Leanid Aladzyeu 2015.08.16 11:25 #4104 Tapochun: 试着自己弄清楚,测试者应该指出错误发生在哪一行和哪一行的位置。o_oops不知道终端机也会戳到错误的地方,我第一次碰到了一个关键的错误。 case 1:mas[1]++; mas [2]++;break;// 1 продажа它向它吐口水。 Leanid Aladzyeu 2015.08.16 11:39 #4105 修正了它。它总共有2个数组,而我需要3个。在数组的初始化 和函数中,数字为+1。) Evgeniy Zykov 2015.08.17 14:07 #4106 请告知如何检查该指标的工作情况。我的想法是:当EA形成一个新的条形图 时,它会调用指标,但指标此刻没有数据,我得到的是上一个条形图的数据(它还没有时间计算)。如何避免这个问题。此外,在策略测试器中一切正常。我在演示中要么很好,要么根本就没有!"。就是这样,没有关系。解决了。 Georgiy Liashchenko 2015.08.18 00:43 #4107 你好,我有一个初学者的问题......我不能让系统将最后一个条形图的收盘值与某一时期的高点和低点进行比较,比如说。最后20小节。我做错了什么?extern int MAGIC = 90324752; extern int START_HOUR = 7; extern int FINISH_HOUR = 18; extern int TRADE_LIMIT = 3; extern int SMMA_PERIOD = 100; extern int BB_PERIOD = 50; extern double BB_DEV = 1; extern double LOT = 1; extern double StopLoss = 400; extern double TakeProfit = 2000; void OnTick() { static int TICKET; double SMMA = iMA (Symbol(),0,SMMA_PERIOD,0,MODE_SMMA,PRICE_CLOSE,0); double BB_UP = iBands(Symbol(),0,BB_PERIOD,BB_DEV,0,PRICE_CLOSE,MODE_UPPER,0); double HIGHEST = High[iHighest(Symbol(),0,MODE_HIGH,20,0)]; if(Hour() >= START_HOUR && Hour() <= FINISH_HOUR && TRADE_COUNT < TRADE_LIMIT && POS_OPENED == FALSE && Seconds() >= 55) if(Minute() == 29 || Minute() == 59) { if(Close[0] > SMMA && Close[0] > BB_UP && Close[0] >= HIGHEST) { TICKET = OrderSend(Symbol(),OP_BUY,LOT,Ask,0,Ask-StopLoss*Point,Ask+TakeProfit*Point,NULL,MAGIC,0,Blue); if(TICKET < 0) { Alert("Order Send failed, error # ", GetLastError() ); } } } } 用Alert检查,由于一些未知的原因,测试器给出了从最后一个tick开始计算的最大值,但它给出了这个值 它的次数与ticks相同,所以订单没有打开。第二个问题是如何让我的EA等待到下一个条形图打开(30米周期)? 当使用控制点测试时,一切正常,但如果我使用ticks。 然后EA在同一根柱子上打开,就在它关闭止损后...... 另外,我怎样才能关闭一笔交易,而不管它是否是打勾? 例如,在一个30米的周期中,我想在条形图结束前5秒关闭订单(29.55,59.55)。 基于那一刻的所有数据。在这个阶段的问题是,如果在5秒内没有发生勾选,因此没有(理论上这是胡说八道,但在现实中,下一个tick可能会因为某些原因出现在几个蜡烛图中)。可能会因为某些原因变成几根蜡烛。 提前感谢! Evgeniy Zykov 2015.08.18 10:02 #4108 帮助评论。在每个条上,都会产生评论。在每一次打勾时,我想在现有的评论上添加更多的文字。我调用代码。void UserMarketComment( ) { string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ"; if(AccountProfit()<0) st=st+"ий убыток="; else st=st+"ая прибыль="; st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency(); Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD), "\n ",st); }添加新的评论,每打一个勾,就有一个新的行 和文字滑下来。如何使它在输出前删除最后几行? Questions from Beginners MQL5 初学者的问题 MQL4 MT4 MetaTrader Questions from Beginners MQL4 Alexey Viktorov 2015.08.18 17:19 #4109 ForTorg ZEVs:帮助评论。在每个条上,都会产生评论。在每一次打勾时,我想在现有的评论上添加更多的文字。我调用代码。void UserMarketComment( ) { string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ"; if(AccountProfit()<0) st=st+"ий убыток="; else st=st+"ая прибыль="; st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency(); Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD), "\n ",st); }添加新的评论,每打一个勾,就有一个新的行 和文字滑下来。如何使它在输出前删除最后几行?在我看来,你只能完全取代Comment()因此,要想在每一个刻度上改变评论的一部分,你必须在每一个刻度上完全改变评论。 Alexey Volchanskiy 2015.08.18 18:24 #4110 ForTorg ZEVs:帮助评论。在每个条上,都会产生评论。在每一次打勾时,我想在现有的评论上添加更多的文字。我调用代码。void UserMarketComment( ) { string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ"; if(AccountProfit()<0) st=st+"ий убыток="; else st=st+"ая прибыль="; st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency(); Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD), "\n ",st); }添加新的评论,每打一个勾,就有一个新的行 和文字滑下来。如何使它在输出前删除最后几行? 所以你的评论中有一个控制字符"\n"--这是一个换行字符。如果你删除它,就不会有多条线。 1...404405406407408409410411412413414415416417418...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
开始研究数组。
我写了一个带数组的亲笔订单函数,3个数组=0买入,1=卖出,2=总买入和卖出交易。
然后我写了一个买入条件,如果(第一个条件&&数组[0]==0),那么我们就开盘买入。
在出售时,如果(第一个条件&&数组[1]==0),那么我们就建立一个卖出头寸。
但测试人员抛出一个错误,测试停止,问题出在哪里?( error " array exit " )
这意味着你要处理的索引是在数组布局之外。例如,如果数组[ 3 ];你可以只寻址0到2的项目。检查你的代码。
另一种可能是,你没有对数组进行分区(用ArrayResize()),而是试图访问其中的一些元素。
代码...
试着自己弄清楚,测试者应该指出错误发生在哪一行和哪一行的位置。
o_oops不知道终端机也会戳到错误的地方,我第一次碰到了一个关键的错误。
它向它吐口水。
请告知如何检查该指标的工作情况。
我的想法是:当EA形成一个新的条形图 时,它会调用指标,但指标此刻没有数据,我得到的是上一个条形图的数据(它还没有时间计算)。
如何避免这个问题。此外,在策略测试器中一切正常。我在演示中要么很好,要么根本就没有!"。
就是这样,没有关系。解决了。
你好,我有一个初学者的问题......
我不能让系统将最后一个条形图的收盘值与某一时期的高点和低点进行比较,比如说。
最后20小节。我做错了什么?
用Alert检查,由于一些未知的原因,测试器给出了从最后一个tick开始计算的最大值,但它给出了这个值
它的次数与ticks相同,所以订单没有打开。
第二个问题是如何让我的EA等待到下一个条形图打开(30米周期)? 当使用控制点测试时,一切正常,但如果我使用ticks。
然后EA在同一根柱子上打开,就在它关闭止损后......
另外,我怎样才能关闭一笔交易,而不管它是否是打勾? 例如,在一个30米的周期中,我想在条形图结束前5秒关闭订单(29.55,59.55)。
基于那一刻的所有数据。在这个阶段的问题是,如果在5秒内没有发生勾选,因此没有
(理论上这是胡说八道,但在现实中,下一个tick可能会因为某些原因出现在几个蜡烛图中)。
可能会因为某些原因变成几根蜡烛。
提前感谢!帮助评论。在每个条上,都会产生评论。在每一次打勾时,我想在现有的评论上添加更多的文字。
我调用代码。
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
添加新的评论,每打一个勾,就有一个新的行 和文字滑下来。
如何使它在输出前删除最后几行?
帮助评论。在每个条上,都会产生评论。在每一次打勾时,我想在现有的评论上添加更多的文字。
我调用代码。
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
添加新的评论,每打一个勾,就有一个新的行 和文字滑下来。
如何使它在输出前删除最后几行?
在我看来,你只能完全取代Comment()
因此,要想在每一个刻度上改变评论的一部分,你必须在每一个刻度上完全改变评论。
帮助评论。在每个条上,都会产生评论。在每一次打勾时,我想在现有的评论上添加更多的文字。
我调用代码。
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
添加新的评论,每打一个勾,就有一个新的行 和文字滑下来。
如何使它在输出前删除最后几行?