外汇交易中符号名称的最大长度 - 页 4 123456789101112 新评论 prostotrader 2018.08.24 13:50 #31 现在,你也可以在外汇市场上使用它(需要任何 "歪曲 "的字符,甚至如_BTCUSD_i ) //+------------------------------------------------------------------+ //| 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) { string s_base = SymbolInfoString(Symbol(), SYMBOL_CURRENCY_BASE); if(StringLen(s_base) == 3) { int base_pos = StringFind(a_str, s_base, 0); if(base_pos > -1) { switch(base_pos) { case 0: case 1: case 2: return(StringSubstr(a_str, base_pos, 6)); break; default: { string left_str = StringSubstr(a_str, base_pos - 3, 3); string right_str = StringSubstr(a_str, base_pos + 3, 3); if(right_str == "") { return(StringSubstr(a_str, base_pos - 3, 6)); } else if(StringLen(right_str) < 3) { return(StringSubstr(a_str, base_pos - 3, 6)); } else { bool is_match = true; uchar uch_array[]; int result = StringToCharArray(right_str, uch_array, 0, WHOLE_ARRAY, CP_ACP); if(result == 4) { for(int i=0; i < result - 1; i++) { if((uch_array[i] < 65) || (uch_array[i] > 90)) { is_match = false; break; } } if(is_match == true) { return(StringSubstr(a_str, base_pos, 6)); } else { is_match = true; result = StringToCharArray(left_str, uch_array, 0, WHOLE_ARRAY, CP_ACP); if(result == 4) { for(int i=0; i < result - 1; i++) { if((uch_array[i] < 65) || (uch_array[i] > 90)) { is_match = false; break; } } if(is_match == true) { return(StringSubstr(a_str, base_pos - 3, 6)); } } } } } } break; } } } 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); } //+------------------------------------------------------------------+ Slava 2018.08.25 10:06 #32 prostotrader:现在,你可以在外汇市场上使用它(接受任何 "弯曲 "的字符,甚至如_BTCUSD_i)。 对kodobase fxsaber 2018.08.25 10:29 #33 prostotrader:很久以前,我写了一个插件文件来自动检索Magic任务是什么? 请检查 "FOREX done. "信息是否出现在"crooked "符号 上。它没有出现在 "EURUSD "上。 基准符号是否总是一对中的第一个?自定义符号可以有任何东西。可能是对自定义的进行这种检查的最方便的方法。 SZ 关于交易、自动交易系统和策略测试的论坛 图书馆:AutoMagic Dmitry Fedoseev, 2017.02.03 13:31 使用图表手柄 形成魔力,意味着如果图表被意外关闭,订单将丢失。 prostotrader 2018.08.25 11:51 #34 fxsaber:没有出现在欧元兑美元上。 SZY 已更正 添加至ZY 写些更好的东西 fxsaber 2018.08.25 11:58 #35 prostotrader:已更正现在开始工作了。现在想听听关于事情的实际情况的几句话。 ZS "AUDNZD"... prostotrader 2018.08.25 12:06 #36 fxsaber:现在开始工作了。现在想听听关于事情的实际情况的几句话。 ZS "AUDNZD"...自动为图表上的EA创建一个独特的Magik,能够使用65535个额外的Magik。添加 我没有FOREX。 我编写GetForexName 函数时没有检查 fxsaber 2018.08.25 12:12 #37 prostotrader:自动为图表上的EA创建一个独特的Magik,能够使用65535个额外的Magik。那么,如果EA在有其头寸/订单的时候关闭图表 而被切断了呢? 不太清楚为什么像这样的东西对外汇市场不起作用 bool SymbolIsExist( const string Symb = NULL ) { ResetLastError(); SymbolInfoInteger((Symb == NULL) ? _Symbol : Symb, SYMBOL_CUSTOM); return(::GetLastError() != ERR_MARKET_UNKNOWN_SYMBOL); } string GetForexName( const string Symb ) { return(SymbolIsExist(Symb) ? SymbolInfoString(Symb, SYMBOL_CURRENCY_BASE) + SymbolInfoString(Symb, SYMBOL_CURRENCY_PROFIT) : NULL); } void OnStart() { Print(GetForexName(_Symbol)); } fxsaber 2018.08.25 12:16 #38 prostotrader:我没有FOREX。做 - MQ-Demo。 prostotrader 2018.08.25 12:17 #39 fxsaber:那么,如果EA在有头寸/订单的时候关闭图表 而被切断了呢? 如果有一个头寸,那么所有的数据都可以在图表关闭时被检索出来,这个符号上的挂单可以简单地被 "钉死"。 还没有人想出更好的办法(在同一个符号上开启多个EA)。 prostotrader 2018.08.25 12:20 #40 fxsaber:ZS "AUDNZD"...AUDNZD在Roboforex上运行 123456789101112 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
现在,你也可以在外汇市场上使用它(需要任何 "歪曲 "的字符,甚至如_BTCUSD_i )
现在,你可以在外汇市场上使用它(接受任何 "弯曲 "的字符,甚至如_BTCUSD_i)。
对kodobase
很久以前,我写了一个插件文件来自动检索Magic
任务是什么?
它没有出现在 "EURUSD "上。
基准符号是否总是一对中的第一个?
自定义符号可以有任何东西。可能是对自定义的进行这种检查的最方便的方法。
SZ
关于交易、自动交易系统和策略测试的论坛
图书馆:AutoMagic
Dmitry Fedoseev, 2017.02.03 13:31
使用图表手柄 形成魔力,意味着如果图表被意外关闭,订单将丢失。
没有出现在欧元兑美元上。
SZY
已更正
添加至ZY
写些更好的东西
已更正
现在开始工作了。现在想听听关于事情的实际情况的几句话。
ZS "AUDNZD"...
现在开始工作了。现在想听听关于事情的实际情况的几句话。
ZS "AUDNZD"...
自动为图表上的EA创建一个独特的Magik,能够使用65535个额外的Magik。
添加
我没有FOREX。
我编写GetForexName 函数时没有检查
自动为图表上的EA创建一个独特的Magik,能够使用65535个额外的Magik。
那么,如果EA在有其头寸/订单的时候关闭图表 而被切断了呢?
不太清楚为什么像这样的东西对外汇市场不起作用
我没有FOREX。
做 - MQ-Demo。
那么,如果EA在有头寸/订单的时候关闭图表 而被切断了呢?
如果有一个头寸,那么所有的数据都可以在图表关闭时被检索出来,这个符号上的挂单可以简单地被 "钉死"。
还没有人想出更好的办法(在同一个符号上开启多个EA)。
ZS "AUDNZD"...
AUDNZD在Roboforex上运行