FOREX에서 기호 이름의 최대 길이 - 페이지 11

 
prostotrader :

그것은 가지 않을거야.

동일한(다른) 심볼에 동일한 Expert Advisor.

모든 입력을 문자열에 추가합니다( -마침표 문자를 추가 할 수도 있음).

 
prostotrader :
각 주문에 대해 다른 방식으로(목발 없이) 고유한 마법을 얻는 방법에 대한 아이디어가 있는 사람이 있으면

공유해주세요.

 int magic = ( int ) TimeCurrent ();
int magic = ( int ) TimeLocal ();
또는 두통이 없습니다.
 
prostotrader :

시간은 감사합니다. 각 어드바이저에게 고유성을 부여할 것이고, ChartID()와 어드바이저에 대한 경로를 바인딩할 필요가 없으며,

그러나 여전히 터미널의 전역 변수에 마법을 저장해야 합니다.

시간은 고유성을 제공하지 않습니다 - 어드바이저가 활성화된 상태에서 터미널을 다시 시작하십시오 - 모든 사람이 동일한 시간을 갖게 됩니다)

 
Konstantin Nikitin :
또는 두통이 없습니다.

그리고 갑자기 사용자는 제 시간에 맞춰질 것입니다. 2-3명의 고문을 던진다?

 
Taras Slobodyanik :

시간은 고유성을 제공하지 않습니다 - 조언자가 활성화된 상태에서 터미널을 다시 시작하십시오 - 모든 사람이 동일한 시간을 갖게 됩니다)

네 정확히

 
prostotrader :

그리고 갑자기 사용자는 제 시간에 맞춰질 것입니다. 2-3명의 고문을 던진다?

글쎄요, 그럴 가능성은 거의 없습니다.

타라스 슬로보디아닉 :

시간은 고유성을 제공하지 않습니다 - 어드바이저가 활성화된 상태에서 터미널을 다시 시작하십시오 - 모든 사람이 동일한 시간을 갖게 됩니다)

그리고 여기 또 다른 노래가 있습니다. 다시 시작할 때 EA는 이전에 열린 위치 를 유지하기 위해 마법으로 계속 작업해야 합니다. 그러므로 기억하는 것은 아프지 않습니다.

 
Konstantin Nikitin :

글쎄요, 그럴 가능성은 거의 없습니다.

그리고 여기 또 다른 노래가 있습니다. 다시 시작할 때 EA는 이전에 열린 위치 를 유지하기 위해 마법으로 계속 작업해야 합니다. 그래서 기억하는 것은 아프지 않습니다.

나는 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." );
    }
  }
 
ChartID ()

또한 다시 시작할 때 변경되며 EA는 동일한 레이블로 계속 작업할 수 없습니다(저장되지 않은 경우).

매개변수(입력) 및 기호에 있는 각 어드바이저 사본의 고유성.
그러면 레이블을 저장할 필요가 없으며 동일한 Expert Advisors 매개변수에 대해 동일합니다.

 
prostotrader :

나는 FOREX에 대해 이 옵션을 결정했습니다(FORTS는 변경되지 않음)

누군가 더 나은 것을 생각해 낸다면 환영합니다.

질문은 각 위치에 고유한 마술사였습니다. 이제 생각했다. 마지막 티켓을 가지고 마술사로 넣는 것이 더 쉽습니다. 복사기에 그대로 사용했습니다. 서버 측에서 포지션 티켓을 가져와 클라이언트의 마술사 가 열린 포지션 에 할당했습니다. 불필요한 제스처 없이도 동일하게 작동합니다.

 
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 );
  }