Piyasanın kapalı olduğunu doğru bir şekilde nasıl bilebilirim? (mql4) - sayfa 3

 

Ve tüm bu kontroller için pratik ihtiyaç nedir?

Örneğin, bir Uzman Danışmanın ticaret yapmasına izin verilip verilmediğini neden kontrol etmelisiniz? Kim sayıyor? Kullanıcı başına aşağı? Ticaret izni bayrağı terminalde bir kez ayarlanır ve bu kadar. Neden her kene üzerinde kontrol ediyorsun? Veya her n saniyede bir kontrol edin? Danışmanın yapması gereken başka bir şey var mı?

Piyasanın açık olup olmadığını neden kontrol etmelisiniz? Piyasa istediği zaman açılıyor mu? Veya bugün saat 16'dan ve yarın saat 14'ten bazı enstrümanlar işlem görüyor ve böyle bir karışıklık her zaman oluyor mu? Bilinen ve asla değişmeyen bir ticaret programıyla, piyasa açıksa neden her onay işaretini veya her n-saniyede bir kontrol edin?

Ve piyasanın açık olup olmadığını anlamak için bir ticaret talebi göndermekle ilgili bu komik ipucu? Gülmeyi sevenler için? Yoksa memnun bir kullanıcı için mi?

Kene yok, ticaret yok.

 
abolk :

Ve tüm bu kontroller için pratik ihtiyaç nedir?

Örneğin, bir Uzman Danışmanın ticaret yapmasına izin verilip verilmediğini neden kontrol etmelisiniz? Kim sayıyor? Kullanıcı başına aşağı? Ticaret izni bayrağı terminalde bir kez ayarlanır ve bu kadar. Neden her kene üzerinde kontrol ediyorsun? Veya her n saniyede bir kontrol edin? Danışmanın yapması gereken başka bir şey var mı?

Piyasanın açık olup olmadığını neden kontrol etmelisiniz? Piyasa istediği zaman açılıyor mu? Veya bugün saat 16'dan ve yarın saat 14'ten bazı enstrümanlar işlem görüyor ve böyle bir karışıklık her zaman oluyor mu? Bilinen ve asla değişmeyen bir ticaret programıyla, piyasa açıksa neden her onay işaretini veya her n-saniyede bir kontrol edin?

Ve piyasanın açık olup olmadığını anlamak için bir ticaret talebi göndermekle ilgili bu numara?

Kene yok, ticaret yok.

Görevler farklıdır. Herkes adına konuşmayacağım, ancak bir EA'dan farklı enstrümanlar için emir açma görevim vardı ve bazılarının farklı işlem seansları vardı (hesap için mevcut herhangi bir enstrüman seti ile çalışma yeteneğinden bahsediyoruz) .

Bu nedenle, tüm kontroller OnTick'te değil, OnTimer'da yapıldı. Sürümümü önceki sayfada açıkladım. Prensip olarak, bir tür kontrol olmasına rağmen, "kene yok - ticaret yok".

 
abolk :

... Piyasa istediği zaman açılır mı? Veya bugün saat 16'dan ve yarın saat 14'ten bazı enstrümanlar işlem görüyor ve böyle bir karışıklık her zaman oluyor mu?

...

Olur ... Tatiller orada farklıdır ... Farklı ülkelerde. Örneğin, en son "Amer President's Day" burada. Forex çalıştı, ancak altın ve gümüş çalışmadı.

Ve eğer Forex'e ek olarak, vadeli işlemleri kullanmak da mümkünse, o zaman oturumların erken kapanması, limit aşıldığında kapanmalar ve burada başka hileler olur.

 
papaklass :

İşte dört kişilik başka bir seçenek:

 bool flag;
//-----------------------------------------------------------------------------+

bool RealSymbol( string str)
{
   return (MarketInfo(str, MODE_BID) != 0 );
} //----------------------------------------------------------------------------+
 
void init()
{
   flag = RealSymbol( Symbol ());
         
   return ;  
} //----------------------------------------------------------------------------+
 
void deinit()
{
   return ;
} //----------------------------------------------------------------------------+
 
void start()
{
   if (!flag)
   {
       return ;
   }
   
   //дальше Ваш рабочий код
     
   return ;  
} //----------------------------------------------------------------------------+

inanılmaz bir seçenek - ana şey, danışmanı piyasalar açılmadan önce başlatmaktır - ve kapanmazsanız, aşırı yükleme yapmayın, zaman dilimini değiştirmeyin - o zaman danışman çalışmaz, çünkü bayrak her zaman "hayır" durumu

ipuçları için ps komik konu

ps2. Kapalı bir pazarda bunu söylemeleri özellikle garip.

MarketInfo( Symbol (), MODE_BID)

NULL verir.

 

Keneler arasındaki gecikmeyi kontrol etmek ve buna dayanarak, ticaretin kapalı olduğu sonucuna varmak kötü bir karardır.

 
avtomat :

Keneler arasındaki gecikmeyi kontrol etmek ve buna dayanarak, ticaretin kapalı olduğu sonucuna varmak kötü bir karardır.

Yine de:
1) "Açık artırma kapalı mı" sorusuna değil, "belirli bir fiyattan işlem açmak mümkün mü" sorusuna cevap verirseniz (mevcut koşullarda);
2) teklifin xx dakikadan daha eski olması durumunda, sunucunun bir sipariş açmaya çalışırken teklifleri geri vereceğini önceden bilmek;
o zaman oldukça katlanılabilir. Tabii ki IMHO.
 

MT5 için bu konuyla ilgili bir tartışma vardı .

Benim için doğru seçeneğin, işlemlerin kullanılabilirliğini belirlemek için SymbolInfoSessionTrade() işlevini kullanmak olduğunu düşünüyorum.


 //+------------------------------------------------------------------+
//|Открыта ли торговая сессия                                        |
//|                                                 Copyright,Sergeev|
//|                           https://login.mql5.com/ru/users/sergeev|                 
//+------------------------------------------------------------------+
bool IsTradeSessionOpen()
  {
   MqlDateTime _DateTime;
   datetime _TimeCurrent= TimeTradeServer (_DateTime);

// проверяем время торгов по инструменту
   datetime _TradeEnd=( datetime ) SymbolInfoInteger ( _Symbol , SYMBOL_EXPIRATION_TIME );
   if (_TimeCurrent>_TradeEnd && _TradeEnd> 0 ) return ( false );

   datetime _TradeStart=( datetime ) SymbolInfoInteger ( _Symbol , SYMBOL_START_TIME );
   if (_TimeCurrent<_TradeStart && _TradeStart> 0 ) return ( false );

// проверяем сессии инструмента
   datetime _DayStart=_TimeCurrent/( 60 * 60 * 24 ); _DayStart*=( 60 * 60 * 24 ); // начало текущего дня
   datetime _sec=_TimeCurrent-_DayStart; // число секунд от начала дня

   for ( int i= 0 ; i< 10 ; i++) // подразумеваем, что админ сделал не более 10 сессий в сутки
     {
       datetime _from,_to;
       if (! SymbolInfoSessionTrade ( _Symbol ,( ENUM_DAY_OF_WEEK )_DateTime.day_of_week,i,_from,_to)) break ; // данные сессии
       if (_sec>=_from && _sec<=_to) return ( true );
     }
   return ( false );
  }
Как узнать, что по выходным нет торговли?
Как узнать, что по выходным нет торговли?
  • www.mql5.com
Пытаюсь дать понять советнику, что по выходным дням торговать не нужно :). - - Категория: общее обсуждение
 
Kino :

Danışmanı OnTimer() çalışma moduna geçirdi, şimdi piyasa kapalıyken bunu anlamıyor ve ticaret yapmaya çalışıyor, genel olarak sunucuyla bağlantı kuruyor ve doğal olarak hatalar alıyor ve günlük günlüklerini tıkıyor. GetLastError() = Piyasa kapalı. Bir izin günü veya kapalı bir piyasayı kontrol etmek için başka hangi koşulları düşünebilirsiniz?

Süre = (milisaniye cinsinden değeri kendiniz ayarlayın. örneğin, 6 saat = 1000*60*60*6)

if(GetLastError()==132( piyasa kapalı ) ) Uyku (Süre);

 

Bir keresinde SymbolInfoSessionTrade() ve Alıntı ile deneyler yaptım ve bu işlevlerden gelen verilerin yalnızca yaklaşık olarak gerçeğe karşılık geldiği ve bazı durumlarda karşılık gelmediği ortaya çıktı.

Belki de birkaç kontrolün bir kombinasyonu, ticaretin bitip bitmediği sorusuna açık bir cevap verecektir?

SymbolInfoSessionTrade - Документация на MQL4
  • docs.mql4.com
SymbolInfoSessionTrade - Документация на MQL4
 

Vay, çok fazla metin var.

MarketInfo( Symbol() ,MODE_TRADEALLOWED)