FOREX에서 기호 이름의 최대 길이 - 페이지 4 123456789101112 새 코멘트 prostotrader 2018.08.24 15:50 #31 이제 FOREX에서도 사용할 수 있습니다( _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 12:06 #32 prostotrader : 이제 FOREX에서도 사용할 수 있습니다( _BTCUSD_i 와 같은 "비뚤어진" 기호 사용). 코드베이스로 fxsaber 2018.08.25 12:29 #33 prostotrader : 오래전에 매직을 자동으로 받기 위한 플러그인 파일을 작성했습니다. 과제는 무엇이었나요? "FOREX done." 메시지가 표시되는지 확인하십시오. "곡선" 문자 에 "EURUSD"에는 표시되지 않습니다. 기본 캐릭터는 항상 쌍에서 먼저 나오나요? 사용자 정의 기호는 무엇이든 가질 수 있습니다. 아마도 사용자 정의 검사에서 그러한 검사를 실행하는 것이 가장 편리할 것입니다. 추신 차트 핸들 을 사용하여 마법을 생성한다는 것은 차트가 실수로 닫히면 주문이 손실된다는 것을 의미합니다. prostotrader 2018.08.25 13:51 #34 fxsaber : "EURUSD"에는 표시되지 않습니다. 추신 수정됨 ZY에 추가됨 더 좋은 것을 쓰다 fxsaber 2018.08.25 13:58 #35 prostotrader : 수정됨 지금 작동합니다. 이제 이 문제의 실용적인 측면에 대해 몇 마디 듣고 싶습니다. 추신 "AUDNZD"... prostotrader 2018.08.25 14:06 #36 fxsaber : 지금 작동합니다. 이제 이 문제의 실용적인 측면에 대해 몇 마디 듣고 싶습니다. 추신 "AUDNZD"... 65535개의 추가 마법을 사용할 수 있는 능력으로 차트에 고문을 위한 고유한 마법을 자동으로 생성합니다. 추가됨 나는 외환이 없다 유효성 검사 없이 GetForexName 함수를 작성했습니다. fxsaber 2018.08.25 14:12 #37 prostotrader : 65535개의 추가 마법을 사용할 수 있는 능력으로 차트에 고문을 위한 고유한 마법을 자동으로 생성합니다. 그렇다면 어드바이저가 차단되어 포지션/오더가 있는 순간 차트를 닫는다면 ? Forex에서 이와 같은 것이 작동하지 않는 이유를 잘 이해하지 못했습니다. 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 14:16 #38 prostotrader : 나는 외환이 없다 만들기 - MQ-데모. prostotrader 2018.08.25 14:17 #39 fxsaber : 그렇다면 어드바이저가 차단되어 포지션/오더가 있는 순간 차트를 닫는다면 ? 위치가 있는 경우 차트가 닫힐 때 모든 데이터를 얻을 수 있으며 이 기호에 대한 보류 중인 주문은 간단히 "못을 박을" 수 있습니다. 더 나은, 지금까지 아무도 제안하지 않았습니다(동일한 기호에 대해 여러 고문을 여는 경우). prostotrader 2018.08.25 14:20 #40 fxsaber : 추신 "AUDNZD"... Roboforex AUDNZD에서 근무 123456789101112 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
이제 FOREX에서도 사용할 수 있습니다( _BTCUSD_i 와 같은 "비뚤어진" 기호 사용).
이제 FOREX에서도 사용할 수 있습니다( _BTCUSD_i 와 같은 "비뚤어진" 기호 사용).
코드베이스로
오래전에 매직을 자동으로 받기 위한 플러그인 파일을 작성했습니다.
과제는 무엇이었나요?
"EURUSD"에는 표시되지 않습니다.
기본 캐릭터는 항상 쌍에서 먼저 나오나요?
사용자 정의 기호는 무엇이든 가질 수 있습니다. 아마도 사용자 정의 검사에서 그러한 검사를 실행하는 것이 가장 편리할 것입니다.
추신
차트 핸들 을 사용하여 마법을 생성한다는 것은 차트가 실수로 닫히면 주문이 손실된다는 것을 의미합니다.
"EURUSD"에는 표시되지 않습니다.
추신
수정됨
ZY에 추가됨
더 좋은 것을 쓰다
수정됨
지금 작동합니다. 이제 이 문제의 실용적인 측면에 대해 몇 마디 듣고 싶습니다.
추신 "AUDNZD"...
지금 작동합니다. 이제 이 문제의 실용적인 측면에 대해 몇 마디 듣고 싶습니다.
추신 "AUDNZD"...
65535개의 추가 마법을 사용할 수 있는 능력으로 차트에 고문을 위한 고유한 마법을 자동으로 생성합니다.
추가됨
나는 외환이 없다
유효성 검사 없이 GetForexName 함수를 작성했습니다.
65535개의 추가 마법을 사용할 수 있는 능력으로 차트에 고문을 위한 고유한 마법을 자동으로 생성합니다.
그렇다면 어드바이저가 차단되어 포지션/오더가 있는 순간 차트를 닫는다면 ?
Forex에서 이와 같은 것이 작동하지 않는 이유를 잘 이해하지 못했습니다.
나는 외환이 없다
만들기 - MQ-데모.
그렇다면 어드바이저가 차단되어 포지션/오더가 있는 순간 차트를 닫는다면 ?
위치가 있는 경우 차트가 닫힐 때 모든 데이터를 얻을 수 있으며 이 기호에 대한 보류 중인 주문은 간단히 "못을 박을" 수 있습니다.
더 나은, 지금까지 아무도 제안하지 않았습니다(동일한 기호에 대해 여러 고문을 여는 경우).
추신 "AUDNZD"...
Roboforex AUDNZD에서 근무