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

 
Василий :
Evet, MQL 5 hakkında soruyorum? evet, mevcut sembolün verilerine erişmeniz gerekiyor. Veriler danışman kodunda gereklidir. Örneğin, mevcut bardan önceki barın kapanış fiyatını bulmam gerektiği ortaya çıktı.
CopyTime için bir örnek görüntüleyin
 
Karputov Vladimir :
CopyTime için bir örnek görüntüleyin
Anladım, çözmeye çalışacağım. Teşekkür ederim!
 
Василий :
Evet, MQL 5 hakkında soruyorum? evet, mevcut sembolün verilerine erişmeniz gerekiyor. Veriler danışman kodunda gereklidir. Örneğin, mevcut bardan önceki barın kapanış fiyatını bulmam gerektiği ortaya çıktı.

Belgeleri biraz okumalısınız.

 int    CopyClose ( 
   string            symbol_name,       // имя символа 
   ENUM_TIMEFRAMES   timeframe,         // период 
   int               start_pos,         // откуда начнем  
   int               count,             // сколько копируем 
   double            close_array[]       // массив для копирования цен закрытия 
   );

kapanış fiyatı ve gösterge tamponlarını almanın bir örneği

 ENUM_ORDER_TYPE indicator_01()
  {
   double ma[ 2 ];
   double close[ 2 ];
   static int h_ma= INVALID_HANDLE ;
   if ( Bars ( _Symbol , PERIOD_CURRENT )<ma_period+ 1 ) return ( WRONG_VALUE );
   if (h_ma== INVALID_HANDLE || h_ma== 0 )
     {
      h_ma= iMA ( _Symbol , _Period ,ma_period,ma_shift,ma_method,ma_price);
       return ( WRONG_VALUE );
     }
   if ( CopyBuffer (h_ma, 0 , 1 , 2 ,ma)< 2 ) return ( WRONG_VALUE );
   if ( CopyClose ( _Symbol , PERIOD_CURRENT , 1 , 2 ,close)< 2 ) return ( WRONG_VALUE );

   if (close[ 1 ]>ma[ 1 ]&&close[ 0 ]<ma[ 0 ]) return ( ORDER_TYPE_BUY );
   if (close[ 1 ]<ma[ 1 ]&&close[ 0 ]>ma[ 0 ]) return ( ORDER_TYPE_SELL );

   return ( WRONG_VALUE );
  }
 
Sergey Gritsay :

...

kapanış fiyatı ve gösterge tamponlarını almanın bir örneği

Kötü örnek. Gösterge tutamağını MQL5'te saklayan değişken, tutamacı OnInit()'te almak için "başlık" - küresel program değişkenleri alanında bildirilmelidir. Ve ancak o zaman programın herhangi bir yerinden veri almak için tanıtıcıya erişebilirsiniz.
 

Herkese selam!

OnTrade olayı tarafından test cihazındaki işlemlerin geçmişi hakkında veri alıyorum.

   for ( int i= 0 ;i< HistoryDealsTotal ();i++){
       ulong deal_ticket= HistoryDealGetTicket (i);
       Print ( "ticket=" ,deal_ticket);
       Print ( "price=" , HistoryDealGetDouble (deal_ticket, DEAL_PRICE ));
       Print ( "time=" , TimeToString ( HistoryDealGetInteger (deal_ticket, DEAL_TIME )));

Ve günlüklerde aldığım şey bu.

0 22:58:16.487 Core 1 2016.04.01 00:00:00 Şu anda sembol dönemi GBPUSD için terminal geçmişindeki çubuk sayısı = 7729
JR 0 22:58:16.487 Core 1 2016.04.01 03:00:00 Alım satım işlemi yapma girişimi 0 lot 0.01
EL 0 22:58:16.487 Core 1 2016.04.01 03:00:00 piyasadan alış 0.01 GBPUSD sl: 1.43033 tp: 1.44034 (1.43646 / 1.43654 / 1.43646)
GO 0 22:58:16.487 Core 1 2016.04.01 03:00:00 anlaşma #2 1.43654'ten 0.01 GBPUSD satın alın (2. sıraya göre)
GE 0 22:58:16.487 Core 1 2016.04.01 03:00:00 anlaşması yapıldı [#2 1.4365'te 0.01 GBPUSD satın al4]
NK 0 22:58:16.487 Core 1 2016.04.01 03:00:00 sipariş 1.43654'te 0.01 alış gerçekleştirildi [#2 1.43654'te 0.01 GBPUSD satın al]
HI 0 22:58:16.487 Çekirdek 1 2016.04.01 03:00:00 bilet=1
HM 0 22:58:16.487 Çekirdek 1 2016.04.01 03:00:00 fiyat=0.0
HH 0 22:58:16.487 Çekirdek 1 2016.04.01 03:00:00 zaman=2016.04.01 00:00
CR 0 22:58:16.487 Çekirdek 1 2016.04.01 03:00:00 bilet=2
ID 0 22:58:16.487 Core 1 2016.04.01 03:00:00 fiyat=1.43654
OP 0 22:58:16.487 Çekirdek 1 2016.04.01 03:00:00 zaman=2016.04.01 03:00

İlk sıfır fiyat anlaşması nereden geliyor? yapmıyorum :-).

Açıklayın lütfen.

ZY Anlıyor gibi görünüyor. İlk anlaşmanın 10 kilobucks karı var. Ama yine de garip. Ne için ?

Ve işte başka bir soru. Anlaşma (ki benim olan - 1.43654'te satın al) henüz sonuçlanmadı. Nasıl tarihe geçti?

MQL4'te olduğu gibi SADECE kapalı anlaşmalardaki verileri bir diziye okumam gerekiyor. Nasıl yapılır ???

DEAL_ENTRY_OUT'a göre PS Filtresi?

 
Alexandr Saprykin :
Terminali yeniden yüklemeyi denediniz mi?
Evet teşekkür ederim. Bu tek başına yardımcı oldu.
 
Karputov Vladimir :
Kötü örnek. Gösterge tutamağını MQL5'te saklayan değişken, tutamacı OnInit()'te almak için "başlık" - küresel program değişkenleri alanında bildirilmelidir. Ve ancak o zaman programın herhangi bir yerinden veri almak için tanıtıcıya erişebilirsiniz.

OnInit() işlevi bir kez yürütüldüğünden ve göstergenin ilk kez oluşturulacağına dair %100 garanti olmadığından, tutamacı alma konusunda size pek katılmıyorum. Bir değişkenin bildirilmesiyle ilgili olarak haklı olabilirsiniz, ancak statik değişkenli seçenek ne kadar kötüyse, belgelerin söylediğini bilmek isterim

Statik anahtar kelime ile bildirilen yerel değişkenler, işlevin ömrü boyunca değerlerini korur. İşleve yapılan sonraki her çağrıda, bu tür yerel değişkenler önceki çağrı sırasında sahip oldukları değerleri içerir.

 

DEAL_ENTRY_OUT'a göre filtrele

 
Sergey Gritsay :

OnInit() işlevi bir kez yürütüldüğünden ve göstergenin ilk kez oluşturulacağına dair %100 garanti olmadığından, tutamacı alma konusunda size pek katılmıyorum. Bir değişkenin bildirilmesiyle ilgili olarak haklı olabilirsiniz, ancak statik değişkenli seçenek ne kadar kötüyse, belgelerin söylediğini bilmek isterim

...

Bunu yapmak için , gösterge tanıtıcısı oluşturulduğunda OnInit() içinde bir kontrol gerçekleştirilir. Tanıtıcı oluşturulmazsa, INIT_FAILED OnOnit() içinde döndürülmelidir . Diğer bir deyişle, gösterge tanıtıcısı yalnızca bir kez ve yalnızca OnInit() içinde oluşturulur. Bu sizin için "4" değil - programın tüm köşelerinde ve çatlaklarında bir karmaşa ve şaşırtıcı ve duyuru kolları.
 
Karputov Vladimir :
Bunu yapmak için , gösterge tanıtıcısı oluşturulduğunda OnInit() içinde bir kontrol gerçekleştirilir. Tanıtıcı oluşturulmazsa, INIT_FAILED OnOnit() içinde döndürülmelidir . Diğer bir deyişle, gösterge tanıtıcısı yalnızca bir kez ve yalnızca OnInit() içinde oluşturulur. Bu sizin için "4" değil - programın tüm köşelerinde ve çatlaklarında bir karmaşa ve şaşırtıcı ve duyuru kolları.
Açıklamalarımda bu kadar kategorik olmazdım. Karışıklık dolaplarda değil, karışıklık kafalarda (c)
Neden: