[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 627 1...620621622623624625626627628629630631632633634...1145 新评论 [删除] 2010.06.18 19:34 #6261 chief2000: 用 "return "替换了 "return(0)",但这并没有解决 "问题"--优化后你仍然看到同样的0-0结果。有什么办法在优化过程中不输出零吗? 谢谢! 我不知道你是否知道,我告诉你,以防万一,请勾选 "忽略无用的结果 "复选框。 减去的结果(通过平衡)将被消除,不确定零的情况,但可以试一试。 Artyom Trishkin 2010.06.18 20:36 #6262 我想知道如何在每个新的刻度上获得一个 "随机 "数字,例如15+/-7,以便在给定的限度内随机产生......。 [删除] 2010.06.18 21:07 #6263 像这样。 int random(){ MathSrand(TimeLocal()); while(true){ int x = MathRand(); if(x >= 8 && x <= 22)return(x); } } :) Artyom Trishkin 2010.06.18 22:35 #6264 ToLik_SRGV: 像这样。 :) 谢谢你!!!。;) Oleg 2010.06.19 00:25 #6265 ToLik_SRGV: 我不知道你是否知道这一点,但为了以防万一,请勾选 "跳过无用的结果 "选项。 负面的结果(通过平衡)将被过滤掉,我不确定无效的结果,但你应该试试。 问题是,我想看到空结果--在优化的早期阶段,我经常要在空结果中选择最好的结果(在后期阶段,翻看和比较这些结果很有用)。零会碍事,因为这些非常的结果没有任何意义,而且有太多的零--存储文件的大小变大,视觉上妨碍了查看结果。总之,谢谢你! Oleg 2010.06.19 00:41 #6266 granit77: 如果你是指外部变量MA_Fast_Period和MA_Slow_Period,有一个解决方案。 如果变量是在专家顾问中计算的,那么就没有什么可做的。 很晚了,我的脑袋已经不听使唤了......但这听起来是一个非常好的主意谢谢你! Igor Makanu 2010.06.19 05:15 #6267 artmedia70: 我想知道如何在每个新的刻度上获得一个 "随机 "的数字,比如说15+/-7,以便在给定的限度内随机产生......。 http://prolang.ru/index.php/cpp/cpptheory/3-clang-random.html 要获得在区间[a,b]内均匀分布的随机实数,请使用公式 x = rand()*(b-a)/RAND_MAX + a; 对于mql,在MathRand()函数的描述中写道:该函数返回一个范围在0到32767的伪随机整数。 即对于mql来说RAND_MAX = 32767 Alexey Zhuravlev 2010.06.19 06:16 #6268 我开始学习mq4,并立即遇到了一些晦涩难懂的时刻。 可以这么说,我试了一下我的手。我写了一个 关于马云的简单专家顾问。但它甚至不愿意在历史上进行交易。它没有显示任何错误。 你能告诉我我在哪里搞砸了吗? int start() { //---проверим возможность входа в позицию bool flagchange = false; int Slippage = 3; int i = 0; double lt = getLots() ; // минимальный лот RefreshRates(); int total = OrdersTotal(); int ticket = -1; for (;;) { int flag= GetEma(); if (flagchange != flag) // проверим, сигнал ема изменился? если да, то можно открыть или закрыть поз. flagchange = true; // изменился! else flagchange = false; if (flagchange == True) { int Total=OrdersTotal(); //проверим есть открытые позиции? if(Total>0) { for(i=Total-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true) // если а то закрываем { if(OrderType()==OP_BUY || OrderType()==OP_SELL) // Только Buy и Sell { if(OrderType()==OP_BUY) bool Result=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,CLR_NONE); else Result=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,CLR_NONE); if(Result!=true) { Print("LastError = ",GetLastError()); } } } else // если открытых нет, то окрываем. if (flag ==1) OrderSend(Symbol(),OP_BUY,lt,Ask,Slippage,Bid - sl * Point,0,"Buy",888,0,Blue); else OrderSend(Symbol(),OP_SELL,lt,Bid,Slippage,Ask + sl * Point,0,"Seel",888,0,Red); { } } } } } //---- return(0); } ////////////////////////////////////////////////////// int GetEma() { //----Получим значение EMA1 int ma1= iMA(Symbol(),PERIOD_H1,ema1,0,1,6,0); //----Получим значение EMA2 int ma2= iMA("",PERIOD_H1,ema2,0,1,6,0); if (ma1>ma2) return (1); else return (0);} ///////////////////////////////////////////////////// // посчитаем разтер лота double getLots() { double minlot = MarketInfo(Symbol(), MODE_MINLOT); int round = MathAbs(MathLog(minlot) / MathLog(10.0)) + 0.5; double lot = minlot; //---- select lot size lot = NormalizeDouble(AccountFreeMargin() * Risk / 1000.0, round); if (AccountFreeMargin() < lot * MarketInfo(Symbol(), MODE_MARGINREQUIRED)) { lot = NormalizeDouble(AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED), round); } if(lot < minlot) lot = minlot; double maxlot = MarketInfo(Symbol(), MODE_MAXLOT); if(lot > maxlot) lot = maxlot; //---- return lot size return(lot); } Igor Makanu 2010.06.19 06:26 #6269 bool flagchange = false; int Slippage = 3; int i = 0; double lt = getLots() ; // minimum lot RefreshRates(); int total = OrdersTotal(); int ticket = -1; for (;;) { int flag= GetEma() ; if (flagchange != flag) 没有参数的for语句?- 永恒循环不是这样写的,第二是EA有全局变量--不是终端,它们在所有函数和start()函数之前的代码的最开始就被描述了,就像你写的那样--在你每次调用start()函数时, flagchange = false; 然后你试图将这个标志与之前的状态进行比较,但其状态将永远是false。 如果你刚刚开始尝试你的力量--从Kodobase中抽取任何现成的专家顾问,并将进入市场 的条件改为你自己的--这样会更快。 [WARNING CLOSED!] Any newbie 战略展望系统 如何编码? Victor Nikolaev 2010.06.19 06:27 #6270 MarkTrade: 我开始学习mq4,并立即遇到了一些晦涩难懂的时刻。 可以这么说,我试了一下我的手。我写了一个关于马云的简单专家顾问。但它甚至不愿意在历史上进行交易。它没有显示任何错误。 你能告诉我我在哪里搞砸了吗? EA循环的目的是什么? for (;;) { } 1...620621622623624625626627628629630631632633634...1145 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
用 "return "替换了 "return(0)",但这并没有解决 "问题"--优化后你仍然看到同样的0-0结果。有什么办法在优化过程中不输出零吗?
谢谢!
我不知道你是否知道,我告诉你,以防万一,请勾选 "忽略无用的结果 "复选框。
减去的结果(通过平衡)将被消除,不确定零的情况,但可以试一试。
像这样。
:)
像这样。
:)
我不知道你是否知道这一点,但为了以防万一,请勾选 "跳过无用的结果 "选项。
负面的结果(通过平衡)将被过滤掉,我不确定无效的结果,但你应该试试。
问题是,我想看到空结果--在优化的早期阶段,我经常要在空结果中选择最好的结果(在后期阶段,翻看和比较这些结果很有用)。零会碍事,因为这些非常的结果没有任何意义,而且有太多的零--存储文件的大小变大,视觉上妨碍了查看结果。总之,谢谢你!
如果你是指外部变量MA_Fast_Period和MA_Slow_Period,有一个解决方案。 如果变量是在专家顾问中计算的,那么就没有什么可做的。
很晚了,我的脑袋已经不听使唤了......但这听起来是一个非常好的主意谢谢你!
我想知道如何在每个新的刻度上获得一个 "随机 "的数字,比如说15+/-7,以便在给定的限度内随机产生......。
要获得在区间[a,b]内均匀分布的随机实数,请使用公式
x = rand()*(b-a)/RAND_MAX + a;
对于mql,在MathRand()函数的描述中写道:该函数返回一个范围在0到32767的伪随机整数。
即对于mql来说RAND_MAX = 32767
我开始学习mq4,并立即遇到了一些晦涩难懂的时刻。
可以这么说,我试了一下我的手。我写了一个 关于马云的简单专家顾问。但它甚至不愿意在历史上进行交易。它没有显示任何错误。
你能告诉我我在哪里搞砸了吗?
bool flagchange = false;
int Slippage = 3; int i = 0; double lt = getLots() ; // minimum lot RefreshRates(); int total = OrdersTotal(); int ticket = -1;
for (;;)
{ int flag= GetEma() ;
if (flagchange != flag)
没有参数的for语句?- 永恒循环不是这样写的,第二是EA有全局变量--不是终端,它们在所有函数和start()函数之前的代码的最开始就被描述了,就像你写的那样--在你每次调用start()函数时, flagchange = false; 然后你试图将这个标志与之前的状态进行比较,但其状态将永远是false。
如果你刚刚开始尝试你的力量--从Kodobase中抽取任何现成的专家顾问,并将进入市场 的条件改为你自己的--这样会更快。
我开始学习mq4,并立即遇到了一些晦涩难懂的时刻。
可以这么说,我试了一下我的手。我写了一个关于马云的简单专家顾问。但它甚至不愿意在历史上进行交易。它没有显示任何错误。
你能告诉我我在哪里搞砸了吗?
EA循环的目的是什么?
for (;;) { }