FOREX'te sembol adının maksimum uzunluğu - sayfa 4 123456789101112 Yeni yorum prostotrader 2018.08.24 15:50 #31 Artık bunu FOREX'te de kullanabilirsiniz ( _BTCUSD_i gibi herhangi bir "çarpık" sembolü alır) //+------------------------------------------------------------------+ //| 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 : Artık bunu FOREX'te de kullanabilirsiniz ( _BTCUSD_i gibi herhangi bir "çarpık" sembolü alır) kod tabanına fxsaber 2018.08.25 12:29 #33 prostotrader : Uzun zaman önce Magic'i otomatik olarak almak için bir eklenti dosyası yazdım. Görev neydi? lütfen "Forex bitti" mesajının olup olmadığını kontrol edin. "kavisli" karakterlerde "EURUSD" de görünmüyor. Temel karakter bir çiftte her zaman önce mi gelir? Özel semboller her şeye sahip olabilir. Muhtemelen, bu tür kontrolleri özel olanlar üzerinde çalıştırmak en uygunudur. not için grafik tutamağını kullanmak, grafiğin yanlışlıkla kapatılması durumunda siparişlerin kaybedileceği anlamına gelir. Bir MT4 tablosunda dakika Şampiyona Katılımcıları için faydalı XY'de çizilen nesneler nasıl prostotrader 2018.08.25 13:51 #34 fxsaber : "EURUSD" de görünmüyor. not düzeltildi ZY'ye eklendi daha iyi bir şey yaz fxsaber 2018.08.25 13:58 #35 prostotrader : düzeltildi Şu an çalışıyor. Şimdi konunun pratik yönü hakkında birkaç söz duymak istiyorum. Not "AUDNZD"... prostotrader 2018.08.25 14:06 #36 fxsaber : Şu an çalışıyor. Şimdi konunun pratik yönü hakkında birkaç söz duymak istiyorum. Not "AUDNZD"... 65535 ek büyü kullanma yeteneği ile grafikteki danışman için otomatik olarak benzersiz bir Büyü oluşturur Katma FOREX'im yok GetForexName işlevini doğrulama olmadan yazdım fxsaber 2018.08.25 14:12 #37 prostotrader : 65535 ek büyü kullanma yeteneği ile grafikteki danışman için otomatik olarak benzersiz bir Büyü oluşturur Peki ya danışman kesilseydi, pozisyonlar/emirler olduğu anda grafiği kapatsaydı? Böyle bir şeyin Forex için neden işe yaramadığını tam olarak anlamadım 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 : FOREX'im yok Yapın - MQ-Demo. prostotrader 2018.08.25 14:17 #39 fxsaber : Peki ya danışman kesilseydi, pozisyonlar/emirler olduğu anda grafiği kapatsaydı? Bir pozisyon varsa, grafik kapatıldığında tüm veriler elde edilebilir ve bu sembol için bekleyen emirler basitçe "çivilenebilir". Daha iyisi, şimdiye kadar kimse gelmedi (aynı sembolde birkaç danışman açmak için) Forumu kirletmemek için herhangi hafta sonu akşamı [ARŞİV!] Forumu kirletmemek için prostotrader 2018.08.25 14:20 #40 fxsaber : Not "AUDNZD"... Roboforex AUDNZD'da çalışıyor 123456789101112 Yeni yorum
Artık bunu FOREX'te de kullanabilirsiniz ( _BTCUSD_i gibi herhangi bir "çarpık" sembolü alır)
Artık bunu FOREX'te de kullanabilirsiniz ( _BTCUSD_i gibi herhangi bir "çarpık" sembolü alır)
kod tabanına
Uzun zaman önce Magic'i otomatik olarak almak için bir eklenti dosyası yazdım.
Görev neydi?
"EURUSD" de görünmüyor.
Temel karakter bir çiftte her zaman önce mi gelir?
Özel semboller her şeye sahip olabilir. Muhtemelen, bu tür kontrolleri özel olanlar üzerinde çalıştırmak en uygunudur.
not
için grafik tutamağını kullanmak, grafiğin yanlışlıkla kapatılması durumunda siparişlerin kaybedileceği anlamına gelir.
"EURUSD" de görünmüyor.
not
düzeltildi
ZY'ye eklendi
daha iyi bir şey yaz
düzeltildi
Şu an çalışıyor. Şimdi konunun pratik yönü hakkında birkaç söz duymak istiyorum.
Not "AUDNZD"...
Şu an çalışıyor. Şimdi konunun pratik yönü hakkında birkaç söz duymak istiyorum.
Not "AUDNZD"...
65535 ek büyü kullanma yeteneği ile grafikteki danışman için otomatik olarak benzersiz bir Büyü oluşturur
Katma
FOREX'im yok
GetForexName işlevini doğrulama olmadan yazdım
65535 ek büyü kullanma yeteneği ile grafikteki danışman için otomatik olarak benzersiz bir Büyü oluşturur
Peki ya danışman kesilseydi, pozisyonlar/emirler olduğu anda grafiği kapatsaydı?
Böyle bir şeyin Forex için neden işe yaramadığını tam olarak anlamadım
FOREX'im yok
Yapın - MQ-Demo.
Peki ya danışman kesilseydi, pozisyonlar/emirler olduğu anda grafiği kapatsaydı?
Bir pozisyon varsa, grafik kapatıldığında tüm veriler elde edilebilir ve bu sembol için bekleyen emirler basitçe "çivilenebilir".
Daha iyisi, şimdiye kadar kimse gelmedi (aynı sembolde birkaç danışman açmak için)
Not "AUDNZD"...
Roboforex AUDNZD'da çalışıyor