Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1195

 
androidden geldim
 
baxromsaid :
Burada yeniyim, gerçek hesaba nasıl geçeceğim konusunda yardımcı olabilecek var mı? bana çözemediğimi söyle , demo hesap şovlarını anlayabiliyorum


baxrom dedi ki :
androidden geldim


MetaQuotes bir komisyoncu değildir - bu nedenle MetaQuotes-Demo sunucularında yalnızca bir demo hesabı açılabilir.

Bir komisyoncu ile gerçek bir ticaret hesabı açılmalıdır.

 

Merhaba bilenler!


Lütfen bana vol ve ask değişkenlerinin neden kodumda değer alamadığını söyler misiniz? Sürekli görüntülenen Print değeri sıfırdır. Yayılma normalde "yapışır", doğru değeri gösterir.

LTCUSD tablosuna bir uzman (eğitim) ekliyorum.

Hata nerede?

 #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 :

Merhaba bilenler!


Lütfen bana vol ve ask değişkenlerinin neden kodumda değer alamadığını söyler misiniz? Sürekli görüntülenen Print değeri sıfırdır. Yayılma normalde "yapışır", doğru değeri gösterir.

LTCUSD tablosuna bir uzman (eğitim) ekliyorum.

Hata nerede?

Almadan önce, neye ihtiyacınız olduğuna bağlı olarak, CSymbolInfo:: Refresh yöntemini (Verileri sembole göre yeniler) veya CSymbolInfo:: RefreshRates ( tırnakları sembole göre günceller ) uygulamanız gerekir.

İşte bu işlevlerin kodu:

 //+------------------------------------------------------------------+
//| 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 :

Almadan önce, neye ihtiyacınız olduğuna bağlı olarak, CSymbolInfo:: Refresh yöntemini (Verileri sembole göre günceller) veya CSymbolInfo:: RefreshRates ( tırnakları sembole göre günceller ) kullanmanız gerekir.

Çok teşekkürler, sevgili Vladimir!

Belki bana şunu da söyleyebilirsiniz: CSymbolInfo Name yöntemini kullanarak bir sembolün adını nasıl alabilirim? Bunu yapmaya çalıştığımda

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

değişken adında true boole değerini alıyorum.

 
odyn :

Çok teşekkürler, sevgili Vladimir!

Belki bana şunu da söyleyebilirsiniz: CSymbolInfo Name yöntemini kullanarak bir sembolün adını nasıl alabilirim? Bunu yapmaya çalıştığımda

değişken adında true boole değerini alıyorum.

Bunu yapıyorum - CSymbolInfo sınıf değişkenini başlatıyorum

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


Adı almanız gerekiyorsa (örneğin, konum sembolü ile mevcut sembolü karşılaştırırken), CSymbolInfo:: Name() yöntemini kullanmanız gerekir.

Kullanım örneği :

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


Yardım, Name yöntemini çağırmanın iki biçimini gösterir

İsim

Finansal aracın adını alır.

 string   Name() const

Geri dönüş değeri

Finansal aracın adı.


İsim

Daha fazla çalışmak için finansal aracın adını belirler.

 bool   Name( string name)

Geri dönüş değeri

Numara.

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


Adı almanız gerekiyorsa (örneğin, konum sembolü ile mevcut sembolü karşılaştırırken), CSymbolInfo:: Name() yöntemini kullanmanız gerekir.

Kullanım örneği :


Yardım, Name yöntemini çağırmanın iki biçimini gösterir

İsim

Finansal aracın adını alır.

Geri dönüş değeri

Finansal aracın adı.

Name yönteminin bu formu hakkında bir sorum var.

Enstrümanın AD'sini tam olarak bir değişkene NASIL alabilirim? Çünkü bunu yaparak:

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

isim boolean doğrudur. CSymbolInfo:: Name( ) yöntemini kullanarak enstrüman adını içeren bir dize nasıl alınır?

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

Name yönteminin bu formu hakkında bir sorum var.

Enstrümanın AD'sini tam olarak bir değişkene NASIL alabilirim? Çünkü bunu yaparak:

isim boolean doğrudur. CSymbolInfo:: Name( ) yöntemini kullanarak enstrüman adını içeren bir dize nasıl alınır?

İlk önce BAŞLATIYORUZ . Ardından Name() yöntemini kullanırız .

Kod '' karakteri üzerinde çalıştırılır.

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

Sonuç:

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

İlk önce BAŞLATIYORUZ . Ardından Name() yöntemini kullanırız .

Kod '' karakteri üzerinde çalıştırılır.

Sonuç:

Anladım. Sabrınız için teşekkürler )).


Not: derleyicim kodunuzda karşılığında yemin ediyor. Kaldırıldığında - her şey yolunda.

 
odyn :

Anladım. Sabrınız için teşekkürler )).


Not: derleyicim kodunuzda karşılığında yemin ediyor. Kaldırıldığında - her şey yolunda.

Bu bir betiktir (bir betik örneği verdim), EA değil. Kodumu bir danışmana kopyalarsanız, bir hata olacaktır.