外汇交易中符号名称的最大长度 - 页 11 1...456789101112 新评论 Taras Slobodyanik 2018.08.26 09:19 #101 prostotrader:这是不可能的。 相同的EA在相同(不同)的符号上。将所有实例添加到一个字符串中(你也可以添加一个句号字符)。 Konstantin Nikitin 2018.08.26 09:19 #102 prostotrader:如果谁有任何想法,如何以不同的方式为每个订单获得独特的魔法(没有拐杖),由请分享。 int magic = (int)TimeCurrent(); int magic = (int)TimeLocal(); 作为一种选择,没有头痛的问题。 Taras Slobodyanik 2018.08.26 09:21 #103 prostotrader:时间,谢谢你,将给每个EA带来唯一性,而且不需要绑定ChartID()和EA的路径。 但你仍然需要在终端的全局变量 中保存向导。时间不会有唯一性--在启用所有EA的情况下重新启动终端--所有的时间都会相同) prostotrader 2018.08.26 09:22 #104 Konstantin Nikitin: 作为一种选择,没有头痛的问题。如果用户在一秒钟内成功地投出2或3个EA怎么办? prostotrader 2018.08.26 09:23 #105 Taras Slobodyanik:时间不会有唯一性--在启用EA的情况下重新启动终端--所有的时间都是一样的)是的,没错 Konstantin Nikitin 2018.08.26 09:25 #106 prostotrader:如果用户在一秒钟内成功地投出2或3个EA怎么办?嗯,实际上这不太可能。Taras Slobodyanik: 时间不会有唯一性--在启用专家顾问系统的情况下重新启动终端--所有的时间都是一样的)但在这里我们有另一首歌。当重新启动EA时,专家顾问必须继续与它的魔术师合作,以保持以前开的头寸。因此,记忆不会是一个问题。 prostotrader 2018.08.26 09:36 #107 Konstantin Nikitin:嗯,实际上可能性不大。这是个不同的故事。当重新启动时,专家顾问必须继续与它的魔术师合作,以保持以前开出的头寸。因此,记住了就不会有伤害。我停在了FOREX的这个变体上(FORTS没有变化)。 如果有人想出了更好的办法,请不要犹豫。 //+------------------------------------------------------------------+ //| AutoMagic.mqh | //| Copyright 2017-2018 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ //version "1.01 //#define FORTS //--- #include ".\..\include\crc64.mqh" //--- struct SYMBOL_MAGIC { long ch_id; ulong magic; }; SYMBOL_MAGIC symb_magic; //-------------------------------------------------------------------+ // Split string function | //+------------------------------------------------------------------+ string SplitString(const string a_str,ulong &a_month,ulong &a_year) { int str_size=StringLen(a_str); int str_tire=StringFind(a_str, "-"); int str_tochka=StringFind(a_str, ".", str_tire); if((str_tire>0) && (str_tochka>0) &&(str_size > 0)) { a_month= ulong(StringToInteger(StringSubstr(a_str,str_tire+1,str_tochka-str_tire-1))); a_year = ulong(StringToInteger(StringSubstr(a_str,str_tochka+1,str_size-str_tochka-1))); if((a_month > 0) && (a_year > 0)) return(StringSubstr(a_str, 0, str_tire)); } return(""); } //-------------------------------------------------------------------+ // Get Magic function | //+------------------------------------------------------------------+ ulong GetMagic(const string a_symbol) { //--- Get ChartID symb_magic.ch_id = ChartID(); if(SymbolSelect(Symbol(), true) == false) { Print(__FUNCTION__, ": Нет такого символа!"); return(0); } if(symb_magic.ch_id != 0) { #ifdef FORTS ulong month = 0; ulong year = 0; string new_str = SplitString(a_symbol,month,year); if(StringLen(new_str)>0) { symb_magic.magic = 0; uchar char_array[]; int result=StringToCharArray(new_str,char_array,0,WHOLE_ARRAY,CP_ACP); if(result>0) { ulong value; for(int i = 0; i < result - 1; i++) { value=ulong(char_array[i]); value<<=(56 -(i*8)); symb_magic.magic += value; } month<<=24; symb_magic.magic += month; year<<=16; symb_magic.magic += year; return(symb_magic.magic); } } #else uchar Bytes[]; ulong result = crc64(0, Bytes, StringToCharArray(string(symb_magic.ch_id), Bytes, 0)); if(result > 0) { symb_magic.magic = result<<12; if(ulong(GlobalVariableSet(Symbol() + ":" + DoubleToString(double(symb_magic.magic), 0), double(symb_magic.magic))) > 0) { Print("Terminal Global variable created."); } return(symb_magic.magic); } #endif } return(0); } //-------------------------------------------------------------------+ // Is my magic function | //+------------------------------------------------------------------+ bool IsMyMagic(const ulong m_magic, const long chart_id) { if(symb_magic.ch_id == chart_id) { ulong stored_magic=symb_magic.magic; ulong in_magic = m_magic; #ifdef FORTS stored_magic>>=16; in_magic>>=16; if(in_magic == stored_magic) return(true); #else stored_magic>>=12; in_magic>>=12; if(m_magic == symb_magic.magic) return(true); #endif } return(false); } //-------------------------------------------------------------------+ // Get stired magic function | //+------------------------------------------------------------------+ ulong GetStoredMagic(const long cha_id) { if(cha_id == symb_magic.ch_id) { return(symb_magic.magic); } return(0); } //+------------------------------------------------------------------+ 专家顾问应具备 //+------------------------------------------------------------------+ //| Magic_test.mq5 | //| Copyright 2018 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018 prostotrader" #property link "https://www.mql5.com" #property version "1.00" #include "AutoMagic.mqh" ulong a_magic; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { a_magic = GetMagic(Symbol()); if(a_magic != 0) { if(IsMyMagic(a_magic, ChartID()) == true) { Print("Magic = ", a_magic); } } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { string a_name = Symbol() + ":" + DoubleToString(double(a_magic), 0); if(GlobalVariableCheck(a_name) == true) { GlobalVariableDel(a_name); Print("Terminal Global variable deleted."); } } Taras Slobodyanik 2018.08.26 09:42 #108 ChartID() 在重启时也会改变,EA将无法继续使用相同的标签(除非你保存它们)。 每份EA在参数(输入)和符号中的唯一性。 那么,标签就不需要保存了,它对相同的专家顾问参数是一样的。 Konstantin Nikitin 2018.08.26 09:42 #109 prostotrader:我已经为FOREX确定了这个版本(FORTS没有改动)。如果有人想出一个更好的办法--欢迎你。问题是在每个位置上都有一个独特的魔术师。我现在想到了。拿着最后一张票,把它设为魔法,就比较容易了。我在复印机上也有类似的应用。从服务器部分获取位置票并将其分配给 客户中由魔术师打开的位置。也不需要任何额外的努力就能发挥作用。 prostotrader 2018.08.26 09:51 #110 Konstantin Nikitin:问题到了每个位置一个独特的魔术师。现在我在想。拿着最后一张票,把它设为魔法,就更容易了。我在复印机中使用了类似的。从服务器部分获取职位的票据,并将其分配给 客户中的魔术师所开的职位。此外,它的工作不需要任何额外的努力。我应该为每个订单都有自己的主人。 你是对的,当你重新加载时,ChartID会改变,因此,我们不需要在终端的全局变量中保存任何东西。 //+------------------------------------------------------------------+ //| AutoMagic.mqh | //| Copyright 2017-2018 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ //version "1.01 //#define FORTS //--- #include ".\..\include\crc64.mqh" //--- struct SYMBOL_MAGIC { long ch_id; ulong magic; }; SYMBOL_MAGIC symb_magic; //-------------------------------------------------------------------+ // Split string function | //+------------------------------------------------------------------+ string SplitString(const string a_str,ulong &a_month,ulong &a_year) { int str_size=StringLen(a_str); int str_tire=StringFind(a_str, "-"); int str_tochka=StringFind(a_str, ".", str_tire); if((str_tire>0) && (str_tochka>0) &&(str_size > 0)) { a_month= ulong(StringToInteger(StringSubstr(a_str,str_tire+1,str_tochka-str_tire-1))); a_year = ulong(StringToInteger(StringSubstr(a_str,str_tochka+1,str_size-str_tochka-1))); if((a_month > 0) && (a_year > 0)) return(StringSubstr(a_str, 0, str_tire)); } return(""); } //-------------------------------------------------------------------+ // Get Magic function | //+------------------------------------------------------------------+ ulong GetMagic(const string a_symbol) { //--- Get ChartID symb_magic.ch_id = ChartID(); if(SymbolSelect(Symbol(), true) == false) { Print(__FUNCTION__, ": Нет такого символа!"); return(0); } if(symb_magic.ch_id != 0) { #ifdef FORTS ulong month = 0; ulong year = 0; string new_str = SplitString(a_symbol,month,year); if(StringLen(new_str)>0) { symb_magic.magic = 0; uchar char_array[]; int result=StringToCharArray(new_str,char_array,0,WHOLE_ARRAY,CP_ACP); if(result>0) { ulong value; for(int i = 0; i < result - 1; i++) { value=ulong(char_array[i]); value<<=(56 -(i*8)); symb_magic.magic += value; } month<<=24; symb_magic.magic += month; year<<=16; symb_magic.magic += year; return(symb_magic.magic); } } #else uchar Bytes[]; ulong result = crc64(0, Bytes, StringToCharArray(string(symb_magic.ch_id), Bytes, 0)); if(result > 0) { symb_magic.magic = result<<12; return(symb_magic.magic); } #endif } return(0); } //-------------------------------------------------------------------+ // Is my magic function | //+------------------------------------------------------------------+ bool IsMyMagic(const ulong m_magic, const long chart_id) { if(symb_magic.ch_id == chart_id) { ulong stored_magic=symb_magic.magic; ulong in_magic = m_magic; #ifdef FORTS stored_magic>>=16; in_magic>>=16; if(in_magic == stored_magic) return(true); #else stored_magic>>=12; in_magic>>=12; if(m_magic == symb_magic.magic) return(true); #endif } return(false); } //-------------------------------------------------------------------+ // Get stщred magic function | //+------------------------------------------------------------------+ ulong GetStoredMagic(const long cha_id) { if(cha_id == symb_magic.ch_id) { return(symb_magic.magic); } return(0); } //+------------------------------------------------------------------+ #property copyright "Copyright 2018 prostotrader" #property link "https://www.mql5.com" #property version "1.00" #include "AutoMagic.mqh" ulong a_magic; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { a_magic = GetMagic(Symbol()); if(a_magic != 0) { if(IsMyMagic(a_magic, ChartID()) == true) { Print("Magic = ", a_magic); } } //--- return(INIT_SUCCEEDED); } 1...456789101112 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是不可能的。
相同的EA在相同(不同)的符号上。
将所有实例添加到一个字符串中(你也可以添加一个句号字符)。
如果谁有任何想法,如何以不同的方式为每个订单获得独特的魔法(没有拐杖),由
请分享。
时间,谢谢你,将给每个EA带来唯一性,而且不需要绑定ChartID()和EA的路径。
但你仍然需要在终端的全局变量 中保存向导。
时间不会有唯一性--在启用所有EA的情况下重新启动终端--所有的时间都会相同)
作为一种选择,没有头痛的问题。
如果用户在一秒钟内成功地投出2或3个EA怎么办?
时间不会有唯一性--在启用EA的情况下重新启动终端--所有的时间都是一样的)
是的,没错
如果用户在一秒钟内成功地投出2或3个EA怎么办?
嗯,实际上这不太可能。
时间不会有唯一性--在启用专家顾问系统的情况下重新启动终端--所有的时间都是一样的)
但在这里我们有另一首歌。当重新启动EA时,专家顾问必须继续与它的魔术师合作,以保持以前开的头寸。因此,记忆不会是一个问题。
嗯,实际上可能性不大。
这是个不同的故事。当重新启动时,专家顾问必须继续与它的魔术师合作,以保持以前开出的头寸。因此,记住了就不会有伤害。
我停在了FOREX的这个变体上(FORTS没有变化)。
如果有人想出了更好的办法,请不要犹豫。
专家顾问应具备
ChartID()
在重启时也会改变,EA将无法继续使用相同的标签(除非你保存它们)。
每份EA在参数(输入)和符号中的唯一性。
那么,标签就不需要保存了,它对相同的专家顾问参数是一样的。
我已经为FOREX确定了这个版本(FORTS没有改动)。
如果有人想出一个更好的办法--欢迎你。
问题是在每个位置上都有一个独特的魔术师。我现在想到了。拿着最后一张票,把它设为魔法,就比较容易了。我在复印机上也有类似的应用。从服务器部分获取位置票并将其分配给 客户中由魔术师打开的位置。也不需要任何额外的努力就能发挥作用。
问题到了每个位置一个独特的魔术师。现在我在想。拿着最后一张票,把它设为魔法,就更容易了。我在复印机中使用了类似的。从服务器部分获取职位的票据,并将其分配给 客户中的魔术师所开的职位。此外,它的工作不需要任何额外的努力。
我应该为每个订单都有自己的主人。
你是对的,当你重新加载时,ChartID会改变,因此,我们不需要在终端的全局变量中保存任何东西。