MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 863

 

Igor Makanu : Elbette konu dışı. Yani kodunuza göre küçük bir düşünce. Bir dizi kullanıyorsanız, genellikle sınırsız sayıda aralık ayarlayabilirsiniz.

CWork *Work[];

int OnInit ()
  {
   if ( ArrayResize (Work, 3 ) != 3 )
       ExpertRemove ();
   Work[ 0 ] = new CWorkTime(StartHour_0,StartMinute_0,StopHour_0,StopMinute_0);
   Work[ 1 ] = new CWorkTime(StartHour_1,StartMinute_1,StopHour_1,StopMinute_1);
   Work[ 2 ] = new CWorkTime(StartHour_2,StartMinute_2,StopHour_2,StopMinute_2);

   return ( INIT_SUCCEEDED );
  }
void OnDeinit ( const int reason)
  {
   for ( int i= 0 ; i< ArraySize (Work)); i++)
       if (Work[i] != NULL )
         delete Work[i];
   ZeroMemory (Work);
  }

void OnTick ()
  {
   for ( int i= 0 ; i< ArraySize (Work)); i++)
       if (Work[i].Disable())
        {
         Comment ( "Не торговое время!!!" );
         return ;
        }
/* work */
  }
 
Konstantin Nikitin :

Igor Makanu : Elbette konu dışı. Yani kodunuza göre küçük bir düşünce. Bir dizi kullanıyorsanız, genellikle sınırsız sayıda aralık ayarlayabilirsiniz.

neden konu dışı? - konu teknik, her zaman teknik konuların tartışılmasını destekleyeceğim


Elbette, sınıfın bir dizi örneğini de kullanabilirsiniz, sınıfımı birkaç kez kontrol ettim - her şey doğru çalışıyor gibi görünüyor, en azından her dakika kendi ticaret aralığınızı yapabilir ve herhangi bir TS'de ticaret yapabilirsiniz;)


Alım satım süresini analiz etmek için dizeyi tarih saatine dönüştürmekten daha fazla böyle bir yol oluşturma fikrini seviyorum ve kodumun anlamı, ticaretin başlangıç ve bitiş zamanlarını günde bir kez tarih saat biçiminde hesaplamanız gerektiğidir, yeni bir gün gelene kadar, bu aralıkları yeniden hesaplamanın bir anlamı yok, yeni gün geldi - hadi her şeyi datetime içinde yeniden hesaplayalım ve datetime arasındaki karşılaştırma çok hızlı olmalı, yani. terminali (test cihazı) yüklemeyecek


Serik29 :

Bu kod neden çalışmıyor?

Belki de sınıfı iki nokta üst üste ile tanımlamanız gerekiyor ::? Fikrin anlamı, başka bir işaretçiye işaret edecek bir işaretçi oluşturmaktır.

sözdizimi hatalarınız var, bunun gibi bir şey olmalı:

 #include <Object.mqh>
class CArray : public CObject
  {
public :
   double             m_Array[ 100 ];
  };

void OnStart ()
  {
   CArray *arr= new CArray;
   arr.m_Array[ 22 ]= 1.23456 ;
  }
 
novichok2018 :

Merhaba!

Alıntı ipucu için Alexey Viktorov'a tekrar teşekkürler - her şey çalışıyor. AMA: bu Pazartesi günü bir durum ortaya çıktı - Almanlar ticaret yaptı ve İngilizler bir gün izin aldı. Ve Euro'da bir pozisyon açma koşulunda, sterlin eski değerlerinin kullanıldığı ortaya çıktı. Bu nedenle istek: bana o gün her iki sembolün de işlem gördüğü kodda nasıl bir kontrol ayarlayacağımı söyle?

Teşekkür ederim.

Üzgünüm, bugün belgeleri okuyamayacak kadar tembelim. Ve neredeyse tüm bellek yongaları uzun zaman önce yandı, sadece skleroz kaldı. ve delilik.

 
Alexey Viktorov :

Üzgünüm, bugün belgeleri okuyamayacak kadar tembelim. Ve neredeyse tüm bellek yongaları uzun zaman önce yandı, sadece skleroz kaldı. ve delilik.

Yeterince deliliğim olmasına rağmen henüz tembel değilim. Ama nerede okumalı? Bir şey bulamadım. Bilgisayarda gözlerimi mahvetti.

 
novichok2018 :

Yeterince deliliğim olmasına rağmen henüz tembel değilim. Ama nerede okumalı? Bir şey bulamadım. Bilgisayarda gözlerimi mahvetti.

Belgelerden

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) aşağıdaki durumlarda false döndürebilir:

  • ticaret sunucusuna bağlantı yok. TerminalInfoInteger(TERMINAL_CONNECTED) ile kontrol edilebilir);
  • ticaret hesabı salt okunur moda geçirildi (arşive gönderildi);
  • ticaret sunucusu tarafında hesapta işlem yapmak yasaktır;
  • alım satım hesabına bağlantı yatırımcı modunda yapılır.

Ve tam olarak öyle değilse, diğer seçenekleri arayın.

 
Alexey Viktorov :

Belgelerden

Ve tam olarak öyle değilse, diğer seçenekleri arayın.

Maalesef öyle değil. Hesapta alım satım yapmak yasaktır - euro ile alım satım yapıyoruz, ancak pound ile alım satım yok. Bu nedenle, ticareti belirli bir sembol üzerinde kontrol etmeniz gerekir. Bu konuda tecrübesi olan veya sorunun nasıl çözüleceğini bilen var mı? Henüz forumlarda veya google'da bulamıyorum.

 
novichok2018 :

Maalesef öyle değil. Hesapta alım satım yapmak yasaktır - euro ile alım satım yapıyoruz, ancak pound ile alım satım yok. Bu nedenle, ticareti belirli bir sembol üzerinde kontrol etmeniz gerekir. Bu konuda tecrübesi olan veya sorunun nasıl çözüleceğini bilen var mı? Henüz forumlarda veya google'da bulamıyorum.

belgelerde başka işlevler var

IsTradeAllowed(symbol, TimeCurrent ()
TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED )
 

Tünaydın.

MT4'te, "Açıklama" alanındaki TrendLine nesnesinin ayarlarında belirtilen metin, trend çizgisinin sol kısmında (sol uca yakın) görüntülenir. Belki birinin hazır bir çözümü vardır, metin sağda nasıl görüntülenir?

 
Taras Slobodyanik :

belgelerde başka işlevler var

Sınanmış.

 bool uk = IsTradeAllowed("GPBUSD", TimeCurrent ());
bool de = IsTradeAllowed("EURUSD", TimeCurrent ());

       if (de && uk) Alert ("uk == true ");

İngiltere'de tatil olmasına rağmen 27 Pazartesi günü doğru yazıyor.

 
novichok2018 :

Sınanmış.

İngiltere'de tatil olmasına rağmen 27 Pazartesi günü doğru yazıyor.

yani bir tatil mi yoksa ticaret yasağı mı tanımlamanız gerekiyor?
27'sinde ticarete izin verildi

tatilse, tatilleri/hafta sonlarını algılamak için bir haber ayrıştırıcısına ihtiyacınız vardır.

Neden: