Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 556

 

belck
:

приветствую!

помогите разобраться. пытаюсь сделать в советнике закрытие сделок в пятницу за пол часа до закрытия сессии.

пробовал по учебнику, то ничего у меня не получилось

может у кого уже готовый код есть.

код закрытия у меня есть. мне нужен сам сигнализирующий закрытие сессии за 30 минут.

Belki bu yüzden.

 extern datetime DateTime = D'2014.03.21 11:30' ;   // Дата и время закрытия



if ( TimeCurrent ()>=DateTime)
  {
  }
Durum şu ki, bir tarihe ihtiyacım yok. Her Cuma, seansın bitiminden 30 dakika ve 30 dakika önce sinyal vermem gerekiyor ve ardından sinyali kapanış emirleri için koda yerleştireceğim. ve zaman dilimleri farklı olduğundan ve yaz saatinden kış saatine geçişler olduğundan, oturum kapandığında kodun kendisini hesaba katması gerekir.
 
Bu benim için çalışıyor, başarısızlık yoktu.
 //---закрыть все позиции в пятницу в 19-40 по серверному времени 
   if ( DayOfWeek ()== 5 && Hour ()== 19 && Minute ()> 40 ){
       //Дать сигнал на закрытие всех позиций    
       
   } 
 
belck :

Selamlar!

Anlamama yardım et. Oturum kapanmadan yarım saat önce danışmandaki anlaşmaları Cuma günü kapatmaya çalışıyorum.

öğreticiyi denedim ama işe yaramadı

belki birinin kodu zaten vardır.

Kapanış kodu bende. 30 dakika sonra seansın kapanış sinyalini vermem gerekiyor.


Bu şekilde herhangi bir komisyoncu için daha evrensel olabilir. Şu an için komisyoncu fiyatları ile UTC arasında hiçbir fark olmaması üzücü.

 void OnStart ()
  {
//---
   int hrd=- 3 ; // разница времени в часах котировок брокера с Гринвичем
   datetime tc= TimeCurrent ();
   if (f_ts(tc,hrd)> 0 ) Print ( "CloseAll()" );
  }
//+------------------------------------------------------------------+


int f_ts( datetime ti, int hrd)
{
   if ( TimeDayOfWeek (ti)!= 5 ) return (- 1 ); // если не пятница  выходим
   datetime t0d,te;
   int dtd= 1440 * 60 , res=- 1 ;
   t0d=ti/dtd*dtd;         // начало торгового дня
   te=t0d+dtd- 30 * 60 +hrd* 3600 ;     // 30 мин до конца сессии
   if (ti>te)  res= 1 ;
   else         res= 0 ;
   return (res);
 
granit77 :
Bu benim için çalışıyor, başarısızlık yoktu.

Bunu yapmaya çalıştım, test cihazı aracılığıyla test ettim, sonra işlev çalışmadı.
 

Eh, bu test cihazında ve çalışmamalı.

 if ( DayOfWeek ()== 5 && Hour ()== 19 && Minute ()> 40 )

Fonksiyonlar o anki zamana göre verilir, ancak TimeCurrent() ve TimeDayOfWeek() doğru çalıştığı için yukarıda yazdıklarım işe yarayacaktır. Sadece brokerlerin yaz ve kış saatlerine geçiş fonksiyonunu eklemek gerekir, yani. hr parametresi. Geçiş genellikle ABD DST saatidir (Kasım ayının ilk Pazar günü, Mart ayının ikinci Pazar günü), ancak bazı brokerler transfer yapmaz, bu nedenle

 
belck :

Selamlar!

Anlamama yardım et. Oturum kapanmadan yarım saat önce danışmandaki anlaşmaları Cuma günü kapatmaya çalışıyorum.

öğreticiyi denedim ama işe yaramadı

belki birinin kodu zaten vardır.

Kapanış kodu bende. 30 dakika sonra seansın kapanış sinyalini vermem gerekiyor.

r772ra :

Belki bu yüzden.

Hiç de bile.

Seansın kapanış saatini belirlemek gerekir datenime SessionClose = ... Kapanış bir seans değil de işlem ise, SessionClose = StrToTime ( "23:30" );

Haftanın gününü belirle TimeDayOfWeek()

Cuma ise, TimeCurrent saatini kontrol edin () >= Oturum Kapat

 
AlexeyVik :

Hiç de bile.

Seansın kapanış saatini belirlemek gerekir datenime SessionClose = ... Kapanış bir seans değil de işlem ise, SessionClose = StrToTime ( "23:30" );

Haftanın gününü belirle TimeDayOfWeek()

Cuma ise, TimeCurrent saatini kontrol edin () >= Oturum Kapat


Kodu daha ayrıntılı olarak açıklayabilir misiniz?
 
AlexeyVik :

Hiç de bile.

Seansın kapanış saatini belirlemek gerekir datenime SessionClose = ... Kapanış bir seans değil de işlem ise, SessionClose = StrToTime ( "23:30" );


seans kapanış saati datenime SessionClose = ... ve işlemler ... test cihazında çalışmayacak, nasıl tanımlarsanız tanımlayın :) Mart başından bu güne kadar kontrol edin
 
belck :

Kodu daha ayrıntılı olarak açıklayabilir misiniz?

Yapabilirim. Ama prensiplerime aykırı.


GSB :
seans kapanış saati datenime SessionClose = ... ve işlemler ... test cihazında çalışmayacak, nasıl tanımlarsanız tanımlayın :) Mart başından bu güne kadar kontrol edin

Test cihazının nesi var? En son güncellemelere kadar test cihazında çalışmasına rağmen. Şimdi tartışmayacağım, kontrol etmedim ve beni yakında test cihazını açmaya zorlamayacaklar.
 
AlexeyVik :

Yapabilirim. Ama prensiplerime aykırı.


Test cihazının nesi var? En son güncellemelere kadar test cihazında çalışmasına rağmen. Şimdi tartışmayacağım, kontrol etmedim ve beni yakında test cihazını açmaya zorlamayacaklar.

İlkelere itiraz yok, ancak bir kişi bir testçide danışman çalıştırmak istiyor, bu nedenle seçenekleriniz ona uymuyor.

belck Benim versiyonumu kullan, hem gerçek hayatta hem de test cihazında çalışacak, ancak henüz kış-yaz saatine geçişi otomatik olarak hesaba katacak bir işlev yapmamış, bu yıl için geçiş süresini aşağıdaki gibi belirleyin

 string data_1= "2014.03.09" ; string data_2="2013.11.03";
if ( TimeCurrent () < StrToTime (data_1) && TimeCurrent () > StrToTime (data_2) ) hrd=- 2 ; else hrd=- 3 ;
Mart 2013'ten Kasım 2014'e kadar çalışacak ve doğru şekilde test edilecektir. Vardiyayı komisyoncunuza göre ayarlayın