[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 65 1...585960616263646566676869707172...631 新评论 [删除] 2012.04.11 06:15 #641 滚,谢谢你的提示,这里有一个功能,如果有人需要,可以在图表的 左下角显示评论。 void mycomment(color c,string mytext) { string name="mycomment"; if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0); ObjectSet("mycomment", OBJPROP_CORNER, 2); ObjectSet(name,OBJPROP_XDISTANCE,5); ObjectSet(name,OBJPROP_YDISTANCE,7); ObjectSetText(name,mytext,12,"",c); } neo333 2012.04.11 07:49 #642 你能告诉我如何在一个脚本中重新打开一个文件:打开文件--查看--关闭文件,当我试图重新打开它时,它说 "文件结束"... Alexandr Shelegeda 2012.04.11 08:59 #643 你好,请问是否有人遇到过这样的问题:在货币图表窗口,有时图表本身会消失。 然后它说刷新,一切都恢复了。在这个时候,有时专家顾问开始不正确地工作(无条件地打开交易)。今天甚至以最大手数开了一笔交易。我已经注意到了,并以2.5分的损失收盘。下面是确定地段的代码。我认为不应该如此。 我怀疑这是因为最后两行的原因。但怎么做呢?//======================================================================== //определение лота //======================================================================== double Free =AccountFreeMargin(); double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED); double Step =MarketInfo(Symbol(),MODE_LOTSTEP); double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT); double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT); LOT=NormalizeDouble(AccountFreeMargin()*RISK/100000,2); if (LOT*One_Lot > Free) // Не хватает даже.. { // ..на минимальн. лот:( Comment("денег нет " ); return(0); // ..и выход } else Comment("деньга есть " ); if(LOT<Min_Lot) LOT=Min_Lot; if(LOT>Max_Lot) LOT=Max_Lot; далее открытие ордера по условиям. Artyom Trishkin 2012.04.11 10:55 #644 Lians:大家好!你能告诉我是否有可能在图表上显示文字,如输出作为一个单独的函数,所以它可以像这样被调用。看看这个函数。 //+----------------------------------------------------------------------------+ void iPrint(bool print, string mess1, string mess2="", string mess3="", string mess4="", int sz=9, color cl1=Aqua, color cl2=Aqua, color cl3=Aqua, color cl4=Aqua) { string NameGrafText, message, nm; int i, y, k, LenStr, shift, Win_Num=-1, num=0; color cl; if (mess1=="") { Print("Func iPrint: Передана пустая строка, выходим"); return; } Win_Num=WindowFind("Win_Inform"); if (print || Win_Num<0) { message=mess1+mess2+mess3+mess4; Print(message); return; } k=ArraySize(Mass_Name_Message)-1; if (StringLen(mess1)>0) num++; if (StringLen(mess2)>0) num++; if (StringLen(mess3)>0) num++; if (StringLen(mess4)>0) num++; for (i=k; i>=0; i--) { NameGrafText=Mass_Name_Message[i]; if (StringLen(NameGrafText)>0) if (ObjectFind(NameGrafText)==Win_Num) { if (i+num>k) { ObjectDelete(NameGrafText); Mass_Name_Message[i]=""; } else if (i+num<=k) { Mass_Name_Message[i+num]=Mass_Name_Message[i]; y=ObjectGet(NameGrafText, OBJPROP_YDISTANCE); // координата Y ObjectSet (NameGrafText, OBJPROP_YDISTANCE, y+(sz+1)*num); // координата Y ObjectSet (NameGrafText, OBJPROP_COLOR, LightSeaGreen); // цвет } } } shift=num; int v=GetTickCount(); for (i=0; i<num; i++) { shift--; NameGrafText=Prefix+"_Graf_Text_"+i+"_"+sy+"_"+v; int app=0; while (ObjectFind(NameGrafText)==Win_Num) { app++; NameGrafText=Prefix+"_Graf_Text_"+i+"_"+sy+"_"+v+"_"+app; } Mass_Name_Message[num-1-i]=NameGrafText; switch (i) { case 0: message=mess1; cl=cl1; break; case 1: message=mess2; cl=cl2; break; case 2: message=mess3; cl=cl3; break; case 3: message=mess4; cl=cl4; break; default:message=mess1; cl=cl1; break; } ObjectCreate (NameGrafText, OBJ_LABEL, Win_Num, 0, 0); ObjectSetText(NameGrafText, message, sz, "Courier New", cl); ObjectSet (NameGrafText, OBJPROP_COLOR, cl); // цвет ObjectSet (NameGrafText, OBJPROP_CORNER, 2); // угол ObjectSet (NameGrafText, OBJPROP_XDISTANCE, 150); // координата Х ObjectSet (NameGrafText, OBJPROP_YDISTANCE, 2+(sz+1)*shift); // координата Y WindowRedraw(); } return; } //+----------------------------------------------------------------------------+ 它在图表上寻找空的Win_Inform指标窗口,如果它存在,就在其中显示信息。如果没有,就用打印输出。 呼叫实例。 //------------------------------------------------------- message1=StringConcatenate("Тик: ",GetTickCount()," "); message2=StringConcatenate("Цена Bid: ", DoubleToStr(Bid,dg)); iPrint(false, message1, message2, "", "", 9, Aqua, DarkOrange); b=4; c=7; a=b+c; message1=StringConcatenate("a=",a," "); message2=StringConcatenate("b=",b," "); message3=StringConcatenate("c=",c); iPrint(false, message1, message2, message3, "", 9, Aqua, LimeGreen, DarkOrange); message1=StringConcatenate("Время: ", TimeToStr(TimeCurrent())," "); message2=StringConcatenate("Тик: ",GetTickCount()," "); message3=StringConcatenate("Время бара: ",TimeToStr(Time[0])," "); message4=StringConcatenate("Цена Bid: ", DoubleToStr(Bid,dg)); iPrint(false, message1, message2, message3, message4, 9, Aqua, Aqua, Aqua, DarkOrange); //------------------------------------------------------- 使用在全局水平上声明的数组字符串Mass_Name_Message[10]。这是一个用于存储对象名称的数组。你可以根据你的需要改变其大小。前缀变量存储了专家的名字,以使他们能够识别自己的对象,从而正确处理图形对象。它也是全局声明的,具有字符串类型。你也许能想出办法... 拖车中的土耳其 附加的文件: win_inform.mq4 1 kb [删除] 2012.04.11 13:52 #645 面对我的功能的一个小问题。 void mycomment(color c,string mytext) { string name="mycomment"; if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0); ObjectSet("mycomment", OBJPROP_CORNER, 2); ObjectSet(name,OBJPROP_XDISTANCE,5); ObjectSet(name,OBJPROP_YDISTANCE,7); ObjectSetText(name,mytext,12,"",c); } 它修剪了一条长信息,例如,如果你试图对 "检查你的EA设置,要打开设置窗口按F7 "这一行进行评论。 它只是留下了这个。"检查你的EA设置,打开设置窗口",然后就被切断了,尽管文字甚至还没到窗口的一半。 你能告诉我是否有办法取消这一限制吗? Рустам 2012.04.11 14:01 #646 不,标签中的最大行长=62个字符。 将文本格式化为 多行(标签),或使用Comment() - 有255个字符 Сергей 2012.04.11 14:11 #647 下午好!我在打开一定数量(用户定义的)的订单 时遇到了一个问题。我已经写了一个小代码来解决这个问题。但有些时候会开出任意数量的订单,通常是在测试接近尾声的时候。下面是代码本身。 extern string Kolichestvo_orderov = "Количество единовременно открытых ордеров"; extern int OrederBuy = 1; extern int OrederSell = 1; int OrdS=1,OrdB=1,ticketBuy,ticketSell,lastticketSell=0,lastticketBuy=0; //========================================================================================================// //---- Открытие ордеров SELL ----// //========================================================================================================// if(OrdS<=OrederSell) { //----- start if(trendDn==true && SthFast>88.2 && SthSlow<38.2) { ticketSell=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,0,magick,0,Blue);OrdS++; //--- Если ордер открыт параметр OrdS увеличиваю } } //-----end //========================================================================================================// //----Открытие ордеров BUY ----// //========================================================================================================// if(OrdB<=OrederBuy) { //-----start if(trendUp==true && SthFast<11.8 && SthSlow>61.8) { ticketBuy=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,0,magick,0,Red);OrdB++; //--- Если ордер открыт параметр OrdB увеличиваю } } //------end //------------------------------- Подсчет количества ордеров BUY & SELL ----------------------------------// if(ticketBuy<=OrdersHistoryTotal()) //------ проверка тикетов тех ордеров которые уже закрыты { for(int ordBuy=lastticketBuy;ordBuy<=OrdersHistoryTotal();ordBuy++) //--- перебор новых закрытых ордеров { if(OrderSelect(ordBuy,SELECT_BY_POS,MODE_HISTORY)==true){if(OrderType()==OP_BUY)OrdB--;lastticketBuy=ticketBuy;} //--- если добавился новый закрытый ордер бай, то параметр OrdB уменьшаю } } //----- if(ticketSell<=OrdersHistoryTotal()) //------ проверка тикетов тех ордеров которые уже закрыты { for(int ordSell=lastticketSell;ordSell<=OrdersHistoryTotal();ordSell++) //--- перебор новых закрытых ордеров { if(OrderSelect(ordSell,SELECT_BY_POS,MODE_HISTORY)==true){if(OrderType()==OP_SELL)OrdS--;lastticketSell=ticketSell;} //--- если добавился новый закрытый ордер селл, то параметр OrdS уменьшаю 如果你有更简单的解决方案,我很乐意收到评论。 Artyom Trishkin 2012.04.11 14:13 #648 Lians: 面对我的功能的一个小问题。 void mycomment(color c,string mytext) { string name="mycomment"; if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0); ObjectSet("mycomment", OBJPROP_CORNER, 2); ObjectSet(name,OBJPROP_XDISTANCE,5); ObjectSet(name,OBJPROP_YDISTANCE,7); ObjectSetText(name,mytext,12,"",c); } 它修剪了一条长信息,例如,如果你试图对 "检查你的EA设置,要打开设置窗口按F7 "这一行进行评论。 它只是留下了这个。"检查您的EA设置,打开设置窗口",然后就被切断了,尽管文字甚至还没到窗口的一半。 你能告诉我是否有办法取消这一限制吗? 试试我的功能。它就在这一页上你的帖子上面。将一个字符串分成几个字符串,使每个字符串的长度不超过64个字符。我的函数输出这些分割线,一个在另一个之上。然后,当下一条信息显示时,它对上面的旧信息进行灰度处理,并以你调用我的函数时设置的颜色显示新信息。 Григорий 2012.04.11 14:38 #649 我下载了历史记录,无意中发现我在2012.01.16至2012.03.20的USDJPY上有一个洞。当我试图重新下载时,终端回答说我有整个历史。 我怎样才能填补这一空白? 我怎样才能在没有任何漏洞的情况下上传历史? 还有,是否有办法检查历史上是否有漏洞? [删除] 2012.04.11 14:38 #650 artmedia70: 试试我的功能。它就在这一页上你的帖子上面。将一个字符串分成几个字符串,使每个字符串的长度不超过64个字符。我的函数输出这些分割线,一个在另一个之上。然后,当下一条信息显示时,它对上面的旧信息进行灰度处理,并以你调用我的函数时设置的颜色显示新信息。 谢谢,但这对我来说有点复杂,你的函数一次输出4条信息,而我需要一条。原来一行中不超过64个字符? 1...585960616263646566676869707172...631 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
滚,谢谢你的提示,这里有一个功能,如果有人需要,可以在图表的 左下角显示评论。
void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}
大家好!
你能告诉我是否有可能在图表上显示文字,如
输出作为一个单独的函数,所以它可以像这样被调用。
看看这个函数。
它在图表上寻找空的Win_Inform指标窗口,如果它存在,就在其中显示信息。如果没有,就用打印输出。
呼叫实例。
使用在全局水平上声明的数组字符串Mass_Name_Message[10]。这是一个用于存储对象名称的数组。你可以根据你的需要改变其大小。前缀变量存储了专家的名字,以使他们能够识别自己的对象,从而正确处理图形对象。它也是全局声明的,具有字符串类型。你也许能想出办法...
拖车中的土耳其
面对我的功能的一个小问题。
void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}
它修剪了一条长信息,例如,如果你试图对 "检查你的EA设置,要打开设置窗口按F7 "这一行进行评论。
它只是留下了这个。"检查你的EA设置,打开设置窗口",然后就被切断了,尽管文字甚至还没到窗口的一半。
你能告诉我是否有办法取消这一限制吗?
不,标签中的最大行长=62个字符。
将文本格式化为 多行(标签),或使用Comment() - 有255个字符
下面是代码本身。
如果你有更简单的解决方案,我很乐意收到评论。
面对我的功能的一个小问题。
void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}
它修剪了一条长信息,例如,如果你试图对 "检查你的EA设置,要打开设置窗口按F7 "这一行进行评论。
它只是留下了这个。"检查您的EA设置,打开设置窗口",然后就被切断了,尽管文字甚至还没到窗口的一半。
你能告诉我是否有办法取消这一限制吗?
我怎样才能填补这一空白?
我怎样才能在没有任何漏洞的情况下上传历史?
还有,是否有办法检查历史上是否有漏洞?
试试我的功能。它就在这一页上你的帖子上面。将一个字符串分成几个字符串,使每个字符串的长度不超过64个字符。我的函数输出这些分割线,一个在另一个之上。然后,当下一条信息显示时,它对上面的旧信息进行灰度处理,并以你调用我的函数时设置的颜色显示新信息。