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

 
Евгений :
Söylesene, hafta sonu açılış pozisyonları için senaryoların performansını nasıl kontrol edebilirim?
Numara. Hafta sonları, Strateji Test Cihazında pozisyon açılışları için yalnızca Uzman Danışmanlar kontrol edilebilir.
 
Karputov Vladimir :
OnCalculate() içindeki tüm keneleri yalnızca gösterge işler. Geçişler olmadan.
hayır. Ve özlüyor. Ama diğerlerinden daha az. Ama özlüyor
 
Victor Nikolaev :
hayır. Ve özlüyor. Ama diğerlerinden daha az. Ama özlüyor
Gösterge yalnızca OnCalculate() öğesine her girdiğinde kaynak yoğun hesaplamalar kullanıyorsa bir onay işaretini atlayabilir.
 
kashi_ann :

Bu iyi, teşekkürler.

Bir soru daha:

SiparişSeç

Onunla daha fazla çalışmak için bir sipariş seçer. İşlev başarıyla tamamlandıysa true döndürür. İşlev başarısız olursa false döndürür. Bir hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir.

bool OrderSelect (
    uzun     bilet        // bilet sipariş et
);

Seçenekler

bilet

[içinde] Bilet sipariş edin.

Bu bilet nasıl atanır? Nereden alınır? Veya nasıl kurulur?

Kılavuzda diyor ki

SiparişGetBilet

İlgili siparişin biletini döndürür ve işlevleri kullanarak onunla daha fazla çalışmak için siparişi otomatik olarak seçer. Tüm siparişleri endekse göre sıralamak ve gerekirse bir bilet almak gerekir. Bu işlevin kendisi bir sipariş seçmesine rağmen. Bilet komisyoncu tarafından belirlenir, değiştirilemez.

 ulong    OrderGetTicket ( 
   int   index       // номер в списке ордеров 
   );
 

Merhaba!

Her gün grafikte "işlem dışı bir zaman dilimi" çizmesi gereken bir fonksiyon yazdım.
Ancak sorun şu ki - başlangıçta, OnInit modülü beklendiği gibi çiziyor ve OnTimer modülünde bilinmeyen bir nedenden dolayı tetiklendiğinde, tarih değişkeni OnInit modülüne atanan değerleri kaydeder.

Soru: Neden?

 int OnInit ()

  {

     EventSetTimer ( 1 );

     MqlDateTime date;

     TimeLocal (date); 

    offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной date

     return ( INIT_SUCCEEDED ); 

  } 

 ...

void onTimer()

  {

     MqlDateTime date;

     TimeLocal (date);

     if (date.hour== 9 && date.min== 0 && date.sec== 0 )  offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date

  } 

...
 
INGFX :

Merhaba!

Her gün grafikte "işlem dışı bir zaman dilimi" çizmesi gereken bir fonksiyon yazdım.
Ancak sorun şu ki - başlangıçta, OnInit modülü beklendiği gibi çiziyor ve OnTimer modülünde bilinmeyen bir nedenden dolayı tetiklendiğinde, tarih değişkeni OnInit modülüne atanan değerleri kaydeder.

Soru: Neden?

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Karputov Vladimir , 2016.01.09 20:51

Size zamanlayıcıda tarih değişkeninin OnInit()'te önceden tanımlanan değerden geçtiğini düşündüren nedir?

Bölgeyi çizen işlevinize bakmanız gerekir.

Katma:

Doğru OnTimer olurdu, onTimer değil

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

INGFX , 2016.01.09 21:20

Çünkü A) Görsel olarak görüyorum, "zaman dilimi" bugün 21:00'den 23:59'a değil, dün 21:00'den bugün 23:59'a çiziliyor.

B) Grafik nesnesinin özelliklerini açarsanız (dolu dikdörtgen - "zaman dilimi"), ilk değişkenin değişmediğini görebilirsiniz, yani. dün 21:00 gibi önemli

...
bool offtimeCreate( MqlDateTime &stm)
  {
     color clr=Black;
     datetime tm1,tm2;
    tm1 = StringToTime (( string )stm.year+ "." +( string )stm.mon+ "." +( string )stm.day+ " 21:00" );
    tm2 = StringToTime (( string )stm.year+ "." +( string )stm.mon+ "." +( string )stm.day+ " 23:59" );

    RectangleCreate( 0 , "offtime" , 0 ,tm1, 0 ,tm2, 200 ,clr); // chrart_id,object_name,sub_window,time1,price1,time2,price2,color

     return ( true );
  }
...

 
Karputov Vladimir :
Doğru OnTimer olurdu, onTimer değil
Evet, OnTimer, burada yeniden yazdığımda bir hata yaptım ... kodun kendisinde her şey doğru
 
INGFX :
Evet, OnTimer, burada yeniden yazdığımda bir hata yaptım ... kodun kendisinde her şey doğru

Kodunuzu kontrol edeceksiniz. Parçalarınızı bir araya getirmekten bıktınız - işte doğrulama kodu. OnTimer'da yerel saatinizi değiştirin ve başlatma sırasındaki ve zamanlayıcıdaki baskıları karşılaştırın:

 //+------------------------------------------------------------------+
//|                                                       TestEA.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   EventSetTimer ( 1 );
   MqlDateTime date;
   TimeLocal (date);
   offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной date
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   MqlDateTime date;
   TimeLocal (date);
   if (date.hour== 22 && date.min== 33 && date.sec== 00 )
      offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date
  }
//+------------------------------------------------------------------+
/*void offtimeCreate(MqlDateTime &struct_date)
  {
   string text="";
   text=IntegerToString(struct_date.hour)+":"+
        IntegerToString(struct_date.min)+":"+
        IntegerToString(struct_date.sec);
   Comment(text);
//ChartRedraw();
  }*/
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool offtimeCreate( MqlDateTime &stm)
  {
   color clr=Black;
   datetime tm1,tm2;
   tm1 = StringToTime (( string )stm.year+ "." +( string )stm.mon+ "." +( string )stm.day+ " 21:00" );
   tm2 = StringToTime (( string )stm.year+ "." +( string )stm.mon+ "." +( string )stm.day+ " 23:59" );

   Print (tm1+ "      " +tm2);
//RectangleCreate(0,"offtime",0,tm1,0,tm2,200,clr); // chrart_id,object_name,sub_window,time1,price1,time2,price2,color

   return ( true );
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir :

Kodunuzu kontrol edeceksiniz.

Vladimir, sabrın ve yardımın için teşekkürler!
Gerçekten kodda bir hata yaptı ...
Gelecekte daha dikkatli olacağım.