外汇交易中符号名称的最大长度 - 页 2 123456789...12 新评论 prostotrader 2018.08.24 02:06 #11 其实我想为FORES做一些好事,但我想这是不可能的。 很久以前,我为Magic写了一个插件文件,现在我把它调整了一下 我也决定为外汇做这件事,但这是不可能的。 如果有人给它增加GetForexName 函数,它也会对FOREX起作用。 //+------------------------------------------------------------------+ //| AutoMagic.mqh | //| Copyright 2017-2018 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ //version "1.01 #define FORTS //--- 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 FOREX symbol function | //+------------------------------------------------------------------+ string GetForexName(const string a_str) { //??????? Из любого названия пары функция долна возвращать ТОЛЬКО саму пару (н-р UERUSD) 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); } #ifdef FORTS //--- Test symdol if(StringLen(a_symbol)>10) { Print(__FUNCTION__, ": Не правильный символ!"); return(0); } if(symb_magic.ch_id != 0) { 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; ulong a_chid = ulong(symb_magic.ch_id); a_chid<<=16; return(symb_magic.magic&=symb_magic.ch_id); } } } #else string in_str = GetForexName(a_symbol); if(in_str != "") { symb_magic.magic = 0; uchar char_array[]; int result=StringToCharArray(a_symbol,char_array,0,WHOLE_ARRAY,CP_ACP); if(result>0) { ulong value; for(int i = 0; i < 6; i++) { value=ulong(char_array[i]); value<<=(56 -(i*8)); symb_magic.magic += value; } ulong a_chid = ulong(symb_magic.ch_id); a_chid<<=16; return(symb_magic.magic&=symb_magic.ch_id); } } #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; stored_magic>>=16; ulong in_magic = m_magic; in_magic>>=16; if(in_magic == stored_magic) return(true); } return(false); } //+------------------------------------------------------------------+ 最后2个字节是用来在一个EA中使用大量的向导。 chart_id - 用于识别图表(你可以根据需要打开多个相同的符号)。 在对 "魔术 "进行任何工作之前,调用函数IsMyMagic,它将检查魔术师是否属于给定的EA。 Andrei Fandeev 2018.08.24 02:06 #12 prostotrader: 只是不清楚如何分析一个符号,如果它前面可以有任何东西的话 :(创建一个使用的货币数组,例如 "EUR""USD""JPY"。 然后用这个函数来配对所有可能的组合,例如 "EURUSD""EURJPY""USDEUR""USDJPY""JPYEUR""JPYUSD"。 而每次你都要检查在你所分析的符号名称中是否有这种组合的出现。如果有发生--就会发现六个字母的名字。 prostotrader 2018.08.24 02:08 #13 Andrei Fandeev:创建一个使用的货币数组,例如 "EUR""USD""JPY"。 然后用这个函数来配对所有可能的组合,例如 "EURUSD""EURJPY""USDEUR""USDJPY""JPYEUR""JPYUSD"。 而每次你都要检查在你所分析的符号名称中是否有这种组合的出现。如果有发生--就会发现六个字母的名字。帮大家一个忙,添加GetForexName 函数 Fast235 2018.08.24 02:09 #14 prostotrader:谢谢,但我只需要得到这一对的 "裸 "名称(6个字符)。 也许有人有现成的解决方案?添加 只是不清楚如何分析一个符号,如果它可以在对本身的前面有任何东西 :(复制者通常使用2个参数前缀和后缀(EURUSD之前或之后的附加符号) Konstantin Nikitin 2018.08.24 07:21 #15 prostotrader:谢谢,但我只需要得到这一对的 "裸 "名称(6个字符)。 也许有人有现成的解决方案?添加 只是不清楚如何分析一个符号,如果它可以在对本身的前面有任何东西 :(弦乐查找 Aleksey Semenov 2018.08.24 08:01 #16 这取决于经纪人,我记得有一个情况让我陷入了迷茫--客户有一个错误,这真的把我吓坏了,我想我必须写出粗糙的符号识别套件。 2016.10.16 13:08:51.633 2016.08.25 04:39 ExpertEURUSD(€),M15: OrderSend error 41062016.10.16 13:08:51.633 2016.08.25 04:40 ExpertEURUSD(€),M15: OrderSend函数 的未知符号名称EURUSD(ˆ) Vitaly Muzichenko 2018.08.24 08:15 #17 prostotrader:在外汇中,有的符号大多有后缀,有前缀的很少,但总是基数(对)用大写字母写,所有的前缀用小写字母写,所以你可以在此基础上发展。 Konstantin Nikitin 2018.08.24 08:47 #18 Vitaly Muzichenko:在外汇中,有后缀的符号居多,前缀很少,但总是基数(对)用大写字母写,所有前缀用小写字母,所以这是一个好的起点。更可靠的是,特别是当它是一个输入参数时,把所有的东西减少到单例的 StringToLower 或 StringToUpper 并搜索 StringFind。那么在哪里或添加什么就不重要了。 Alexander Bereznyak 2018.08.24 08:52 #19 如果只使用货币对的话。 对于SymbolInfoString()enum_symbol_info_string识别器描述财产类型SYMBOL_BASIS衍生品的基础资产名称绳子符号_货币_基数票据的基础货币绳子符号_货币_利润盈利货币绳子符号_货币_边际计算保证金的货币绳子SYMBOL_BANK目前的报价来源绳子符号_描述符号的字符串描述绳子SYMBOL_FORMULA构建自定义符号价格的公式绳子SYMBOL_ISIN国际证券识别码(ISIN)系统中的一个交易符号的名称。国际证券识别码是一个12位的字母数字代码,可以唯一地识别证券。这一特性的存在是在交易服务器端定义的。绳子符号_页面含有该符号信息的网页地址。在终端查看符号属性时,该地址将显示为一个链接。绳子SYMBOL_PATH符号树中的路径绳子 轻松快捷开发 MetaTrader 程序的函数库(第十四部分):品种对象 Vitaly Muzichenko 2018.08.24 09:02 #20 Konstantin Nikitin:更可靠的是,特别是如果它是一个输入参数,把所有的东西减少到一种情况下的 StringToLower 或 StringToUpper 并搜索 StringFind。那么在哪里或添加什么就不重要了。但我不明白这个问题,为什么一个字符无论长短都不能被替换? 123456789...12 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
其实我想为FORES做一些好事,但我想这是不可能的。
很久以前,我为Magic写了一个插件文件,现在我把它调整了一下
我也决定为外汇做这件事,但这是不可能的。
如果有人给它增加GetForexName 函数,它也会对FOREX起作用。
最后2个字节是用来在一个EA中使用大量的向导。
chart_id - 用于识别图表(你可以根据需要打开多个相同的符号)。
在对 "魔术 "进行任何工作之前,调用函数IsMyMagic,它将检查魔术师是否属于给定的EA。
只是不清楚如何分析一个符号,如果它前面可以有任何东西的话 :(
创建一个使用的货币数组,例如 "EUR""USD""JPY"。
然后用这个函数来配对所有可能的组合,例如 "EURUSD""EURJPY""USDEUR""USDJPY""JPYEUR""JPYUSD"。
而每次你都要检查在你所分析的符号名称中是否有这种组合的出现。如果有发生--就会发现六个字母的名字。
创建一个使用的货币数组,例如 "EUR""USD""JPY"。
然后用这个函数来配对所有可能的组合,例如 "EURUSD""EURJPY""USDEUR""USDJPY""JPYEUR""JPYUSD"。
而每次你都要检查在你所分析的符号名称中是否有这种组合的出现。如果有发生--就会发现六个字母的名字。
帮大家一个忙,添加GetForexName 函数
谢谢,但我只需要得到这一对的 "裸 "名称(6个字符)。
也许有人有现成的解决方案?
添加
只是不清楚如何分析一个符号,如果它可以在对本身的前面有任何东西 :(
复制者通常使用2个参数前缀和后缀(EURUSD之前或之后的附加符号)
谢谢,但我只需要得到这一对的 "裸 "名称(6个字符)。
也许有人有现成的解决方案?
添加
只是不清楚如何分析一个符号,如果它可以在对本身的前面有任何东西 :(
弦乐查找
这取决于经纪人,我记得有一个情况让我陷入了迷茫--客户有一个错误,这真的把我吓坏了,我想我必须写出粗糙的符号识别套件。
2016.10.16 13:08:51.633 2016.08.25 04:39 ExpertEURUSD(€),M15: OrderSend error 4106
2016.10.16 13:08:51.633 2016.08.25 04:40 ExpertEURUSD(€),M15: OrderSend函数 的未知符号名称EURUSD(ˆ)
在外汇中,有的符号大多有后缀,有前缀的很少,但总是基数(对)用大写字母写,所有的前缀用小写字母写,所以你可以在此基础上发展。
在外汇中,有后缀的符号居多,前缀很少,但总是基数(对)用大写字母写,所有前缀用小写字母,所以这是一个好的起点。
更可靠的是,特别是当它是一个输入参数时,把所有的东西减少到单例的 StringToLower 或 StringToUpper 并搜索 StringFind。那么在哪里或添加什么就不重要了。
如果只使用货币对的话。
对于SymbolInfoString()
enum_symbol_info_string
识别器
描述
财产类型
SYMBOL_BASIS
衍生品的基础资产名称
绳子
符号_货币_基数
票据的基础货币
绳子
符号_货币_利润
盈利货币
绳子
符号_货币_边际
计算保证金的货币
绳子
SYMBOL_BANK
目前的报价来源
绳子
符号_描述
符号的字符串描述
绳子
SYMBOL_FORMULA
构建自定义符号价格的公式
绳子
SYMBOL_ISIN
国际证券识别码(ISIN)系统中的一个交易符号的名称。国际证券识别码是一个12位的字母数字代码,可以唯一地识别证券。这一特性的存在是在交易服务器端定义的。
绳子
符号_页面
含有该符号信息的网页地址。在终端查看符号属性时,该地址将显示为一个链接。
绳子
SYMBOL_PATH
符号树中的路径
绳子
更可靠的是,特别是如果它是一个输入参数,把所有的东西减少到一种情况下的 StringToLower 或 StringToUpper 并搜索 StringFind。那么在哪里或添加什么就不重要了。
但我不明白这个问题,为什么一个字符无论长短都不能被替换?