초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1195

 
나는 안드로이드에서 왔다
 
baxromsaid :
진짜 계정으로 전환하는 방법을 알려주세요. 내가 이해할 수 없다고 말해줘 , 데모 계정 쇼를 이해할 수 있어


baxrom은 말했다 :
나는 안드로이드에서 왔다


MetaQuotes는 브로커가 아니므로 MetaQuotes-Demo 서버에서 데모 계정만 열 수 있습니다.

실제 거래 계좌는 브로커와 함께 개설되어야 합니다.

 

안녕하세요 감정사님들!


변수 vol 및 ask가 내 코드에서 값을 얻지 못하는 이유를 말씀해 주시겠습니까? 인쇄 값에 지속적으로 표시되는 값은 0입니다. 스프레드는 일반적으로 "달라붙는" 올바른 값을 보여줍니다.

LTCUSD 차트에 전문가(교육)를 첨부합니다.

실수는 어디에 있습니까?

 #include <Trade\SymbolInfo.mqh>
CSymbolInfo m_symbol;
int a= 0 ,b= 0 ,c= 0 ,spread= 0 ,i= 0 ,j= 0 ;
double x= 0 ,y= 0 ,z= 0 ,m= 0 ,ask= 0 ;
input int vyb= 7 ;
bool bool_1= true ,bool_2= true ,bool_3= true ;
string str_1= "" ,str_2= "" ,str_3= "" ,name= "" ,Text[ 101 ];
ulong vol= 0 ;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
  name= _Symbol ;
   Print ( "текущий символ: " ,name); 
  spread=m_symbol.Spread();
   Print ( "спред по символу: " ,spread);
  vol=m_symbol.Volume();
   Print ( "обьєм по символу " ,name, " - " ,vol);
  ask=m_symbol.Ask();
   Print ( "Цена Аск равно " ,ask);
 
odyn :

안녕하세요 감정사님들!


변수 vol 및 ask가 내 코드에서 값을 얻지 못하는 이유를 말씀해 주시겠습니까? 인쇄 값에 지속적으로 표시되는 값은 0입니다. 스프레드는 일반적으로 "달라붙는" 올바른 값을 보여줍니다.

LTCUSD 차트에 전문가(교육)를 첨부합니다.

실수는 어디에 있습니까?

가져오기 전에 필요한 항목에 따라 CSymbolInfo:: Refresh 메서드(기호별로 데이터 새로 고침) 또는 CSymbolInfo:: RefreshRates ( 기호로 따옴표 업데이트 )를 적용해야 합니다.

다음은 이러한 기능에 대한 코드입니다.

 //+------------------------------------------------------------------+
//| Refresh cached data                                              |
//+------------------------------------------------------------------+
bool CSymbolInfo::Refresh( void )
  {
   long tmp= 0 ;
//---
   if (! SymbolInfoDouble (m_name, SYMBOL_POINT ,m_point))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_TRADE_TICK_VALUE ,m_tick_value))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_TRADE_TICK_VALUE_PROFIT ,m_tick_value_profit))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_TRADE_TICK_VALUE_LOSS ,m_tick_value_loss))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_TRADE_TICK_SIZE ,m_tick_size))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_TRADE_CONTRACT_SIZE ,m_contract_size))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_VOLUME_MIN ,m_lots_min))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_VOLUME_MAX ,m_lots_max))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_VOLUME_STEP ,m_lots_step))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_VOLUME_LIMIT ,m_lots_limit))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_SWAP_LONG ,m_swap_long))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_SWAP_SHORT ,m_swap_short))
       return ( false );
   if (! SymbolInfoInteger (m_name, SYMBOL_DIGITS ,tmp))
       return ( false );
   m_digits=( int )tmp;
   if (! SymbolInfoInteger (m_name, SYMBOL_ORDER_MODE ,tmp))
       return ( false );
   m_order_mode=( int )tmp;
   if (! SymbolInfoInteger (m_name, SYMBOL_TRADE_EXEMODE ,tmp))
       return ( false );
   m_trade_execution=( ENUM_SYMBOL_TRADE_EXECUTION )tmp;
   if (! SymbolInfoInteger (m_name, SYMBOL_TRADE_CALC_MODE ,tmp))
       return ( false );
   m_trade_calcmode=( ENUM_SYMBOL_CALC_MODE )tmp;
   if (! SymbolInfoInteger (m_name, SYMBOL_TRADE_MODE ,tmp))
       return ( false );
   m_trade_mode=( ENUM_SYMBOL_TRADE_MODE )tmp;
   if (! SymbolInfoInteger (m_name, SYMBOL_SWAP_MODE ,tmp))
       return ( false );
   m_swap_mode=( ENUM_SYMBOL_SWAP_MODE )tmp;
   if (! SymbolInfoInteger (m_name, SYMBOL_SWAP_ROLLOVER3DAYS ,tmp))
       return ( false );
   m_swap3=( ENUM_DAY_OF_WEEK )tmp;
   if (! SymbolInfoDouble (m_name, SYMBOL_MARGIN_INITIAL ,m_margin_initial))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_MARGIN_MAINTENANCE ,m_margin_maintenance))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_MARGIN_LONG ,m_margin_long))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_MARGIN_SHORT ,m_margin_short))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_MARGIN_LIMIT ,m_margin_limit))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_MARGIN_STOP ,m_margin_stop))
       return ( false );
   if (! SymbolInfoDouble (m_name, SYMBOL_MARGIN_STOPLIMIT ,m_margin_stoplimit))
       return ( false );
   if (! SymbolInfoInteger (m_name, SYMBOL_EXPIRATION_MODE ,tmp))
       return ( false );
   m_trade_time_flags=( int )tmp;
   if (! SymbolInfoInteger (m_name, SYMBOL_FILLING_MODE ,tmp))
       return ( false );
   m_trade_fill_flags=( int )tmp;
//--- succeed
   return ( true );
  }
//+------------------------------------------------------------------+
//| Refresh cached data                                              |
//+------------------------------------------------------------------+
bool CSymbolInfo::RefreshRates( void )
  {
   return ( SymbolInfoTick (m_name,m_tick));
  }
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Refresh
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Refresh
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / Refresh - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov :

가져오기 전에 필요한 항목에 따라 CSymbolInfo:: Refresh 메서드(기호로 데이터 업데이트) 또는 CSymbolInfo:: RefreshRates ( 기호로 따옴표 업데이트 )를 적용해야 합니다.

많은 감사를 드립니다, 친애하는 블라디미르!

CsymbolInfo Name 메서드를 사용하여 기호 이름을 가져오는 방법을 알려줄 수도 있습니다. 내가 이것을 하려고 할 때

 #include <Trade\SymbolInfo.mqh>
CSymbolInfo m_symbol;
int a= 0 ,b= 0 ,c= 0 ,spread= 0 ,i= 0 ,j= 0 ;
double x= 0 ,y= 0 ,z= 0 ,m= 0 ,ask= 0 ;
input int vyb= 7 ;
bool bool_1= true ,bool_2= true ,bool_3= true ;
string str_1= "" ,str_2= "" ,str_3= "" ,name= "" ,Text[ 101 ];
ulong vol= 0 ;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
  name=m_symbol.Name( Symbol ())
   Print ( "текущий символ: " ,name); 

변수 이름에서 부울 값 true를 얻습니다.

 
odyn :

많은 감사를 드립니다, 친애하는 블라디미르님!

CsymbolInfo Name 메서드를 사용하여 기호 이름을 가져오는 방법을 알려줄 수도 있습니다. 내가 이것을 하려고 할 때

변수 이름에서 부울 값 true를 얻습니다.

나는 이것을 한다 - 나는 CSymbolInfo 클래스 변수를 초기화한다

 //+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
***
   if (!m_symbol.Name( Symbol ())) // sets symbol name
     {
       Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: CSymbolInfo.Name" );
       return ( INIT_FAILED );
     }
   RefreshRates();
***
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {
//--- refresh rates
   if (!m_symbol.RefreshRates())
     {
       if (InpPrintLog)
         Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: " , "RefreshRates error" );
       return ( false );
     }
//--- protection against the return value of "zero"
   if (m_symbol.Ask()== 0 || m_symbol.Bid()== 0 )
     {
       if (InpPrintLog)
         Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: " , "Ask == 0.0 OR Bid == 0.0" );
       return ( false );
     }
//---
   return ( true );
  }


이름을 가져와야 하는 경우(예: 위치 기호와 현재 기호를 비교할 때) CSymbolInfo:: Name() 메서드를 사용해야 합니다.

사용 예 :

 //+------------------------------------------------------------------+
//| Is position exists                                               |
//+------------------------------------------------------------------+
bool IsPositionExists( void )
  {
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--)
       if (m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if (m_position. Symbol ()== m_symbol.Name() && m_position.Magic()==InpMagic)
             return ( true );
//---
   return ( false );
  }


도움말은 Name 메서드를 호출하는 두 가지 형식을 보여줍니다.

이름

금융 상품의 이름을 가져옵니다.

 string   Name() const

반환 값

금융 상품의 이름입니다.


이름

추가 작업을 위해 금융 상품의 이름을 설정합니다.

 bool   Name( string name)

반환 값

아니요.

Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / Name - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov :


이름을 가져와야 하는 경우(예: 위치 기호와 현재 기호를 비교할 때) CSymbolInfo:: Name() 메서드를 사용해야 합니다.

사용 예 :


도움말은 Name 메서드를 호출하는 두 가지 형식을 보여줍니다.

이름

금융 상품의 이름을 가져옵니다.

반환 값

금융 상품의 이름입니다.

이 형식의 Name 메서드에 대해 질문이 있습니다.

계측기의 이름을 정확히 변수로 가져오려면 어떻게 해야 합니까? 이렇게 함으로써:

 #include <Trade\SymbolInfo.mqh>
CSymbolInfo m_symbol;
string str_1= "" ,str_2= "" ,str_3= "" ,name= "" ;
name=m_symbol.Name();
Print("текущий символ: ",name);

이름은 부울 true입니다. CSymbolInfo:: Name( ) 메서드 를 사용하여 악기 이름이 포함된 문자열을 가져오는 방법 은 무엇입니까?

Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / Name - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
odyn :

이 형식의 Name 메서드에 대해 질문이 있습니다.

기기의 이름을 정확히 변수로 가져오려면 어떻게 해야 합니까? 이렇게 함으로써:

이름은 부울 true입니다. CSymbolInfo:: Name( ) 메서드 를 사용하여 계측기 이름이 포함된 문자열을 가져오는 방법 은 무엇입니까?

먼저 초기화 합니다. 그런 다음 Name() 메서드를 사용합니다 .

코드는 '' 문자에서 실행됩니다.

 //+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2020, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property version    "1.00"
#include <Trade\SymbolInfo.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   if (!m_symbol.Name( Symbol ())) // sets symbol name
     {
       Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: CSymbolInfo.Name" );
       return ;
     }
   string name=m_symbol.Name();
   Print ( "текущий символ: " ,name);
//---
  }
//+------------------------------------------------------------------+

결과:

 1 (EURUSD,H1)   текущий символ: EURUSD
 
Vladimir Karputov :

먼저 초기화 합니다. 그런 다음 Name() 메서드를 사용합니다 .

코드는 '' 문자에서 실행됩니다.

결과:

알았다. 기다려 주셔서 감사합니다 )).


추신: 내 컴파일러는 귀하의 코드에서 반환할 때 맹세합니다. 제거하면 모든 것이 정상입니다.

 
odyn :

알았다. 기다려 주셔서 감사합니다 )).


추신: 내 컴파일러는 귀하의 코드에서 반환할 때 맹세합니다. 제거하면 모든 것이 정상입니다.

이것은 EA가 아닌 스크립트입니다(스크립트의 예를 들었습니다). 내 코드를 어드바이저에 복사하면 오류가 발생합니다.

사유: