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

 
Vasyl Nosal :

Bu sürekli aldatılma ve kendini aldatma arzusu :) .

Eklendi: Tüm sembolleri görüntülemeyi ve "Piyasa İzleme" penceresinde "Zaman" sütununu göstermeyi ve haftanın yedi günü işlem gören bitcoin sembolünü bulmayı denediniz mi? Aşağıdaki temel kontrol de yardımcı olur:

1

2

3

 

Evrensel bir çözüm değil, ama benim için çalışıyor


bool CanTrade()
{

bool res1=IsTradeAllowed(Symbol(), TimeCurrent());
bool res2=IsTradeAllowed(Symbol(), TimeCurrent()+4000); //с запасом,

if (!res1) return false; //сейчас торговать запрещено
if (res1 && res2) return true; //и сейчас и через час торговать можно
return false; //если зависло разрешение от TimeCurrent, то через час (или с запасом в несколько минут) покажет фалсе.
// Но наверняка есть ситуации когда реально сейчас можно торговать а через час нельзя - тогда неправильный ответ :(
}

 
Igor-san :

Ancak şu anda gerçekten ticaret yapabileceğiniz ve bir saat içinde yapamayacağınız durumlar vardır.

Tabii ki var - her zaman piyasa kapanmadan bir saat önce)))
 
Ihor Herasko :
Tabii ki var - her zaman piyasa kapanmadan bir saat önce)))

Katılmıyorum. Ekranda dondurulan son tarih Cuma 21:59. Vardiyayı 3600 saniyeye ayarlarsam, ikinci parametre IsTradeAllowed(Symbol(), TimeCurrent()+3600) true döner.Çalışması için birkaç saniye rezerv ekledim.Eh, eğer Cuma 21:50 ise, o zaman her şey olmalı İş.

Ama dürüst olmak gerekirse, kontrol etmedim, sadece hafta sonu sürekli yeniden bağlanan Reconnector komisyoncusu (forumda bir yerde buldum) bağlantısını kontrol ettim. Bu yüzden benim için önemli değil.

 
/// Ждём разрешения торговать
void TradeAllowed()
{
symb=Symbol();/// Текущий символ или символ на котором нужно произвести проверку

if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
   {Print("Automated trading is forbidden at the trade server side");return;}
if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)) 
   {Print("Trading is forbidden!");return;}
if (!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))  
   {Print("Check if automated trading is allowed in the terminal settings!");return;}
if(!IsTradeAllowed(symb,TimeLocal())
   {Print("Trading on the symbol "+symb+" is forbidden!");return;}

while(IsTradeContextBusy())
   {
   if(IsStopped()) {Print("Forced shutdown ");break;}
   Print("Trading is occupied. Wait.");
   Sleep(1000);
   RefreshRates(); 
   }  
}
 

bool MarketOpen(string Symbl)
{
   if(IsTradeAllowed(Symbl,TimeCurrent()+1)==false)return(false); //рынок закрыт

   return(true);

}

 
Renat Akhtyamov :

bool MarketOpen(string Symbl)
{
   if(IsTradeAllowed(Symbl,TimeCurrent()+1)==false)return(false); //рынок закрыт

   return(true);

}

Farklı şekilde gerçekleşir, bu nedenle böyle bir kontrol hiçbir şeyi garanti etmez.

Tobish, uzman ticareti yasaktır, ancak piyasa açıktır.


Şu anda, Pazartesi, piyasa açık ve uzmanların ofisten çıkması yasak:


 
Aksine bazı ofislerde hafta sonları piyasanın kapalı olduğu zamanlarda bu çekler piyasanın açık olduğunu gösterir ve eksperlere işlem yapma izni verilir.
 
Олег avtomat :
Aksine bazı ofislerde hafta sonları piyasanın kapalı olduğu zamanlarda bu çekler piyasanın açık olduğunu gösterir ve eksperlere işlem yapma izni verilir.

dün çalıştı

çalışırken

ve şimdi gitti:

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

Hafta sonları alım satım olmadığını nereden biliyorsun?

Renat Akhtyamov , 2018.02.11 05:27

TEŞEKKÜR ETMEK!

MT4 için

//------------------------------------------------------------------    IsSessionOpen
bool IsSessionOpen(string smb)
{
     //MqlDateTime dt; datetime tc=TimeTradeServer(dt);
      datetime tc= TimeCurrent();
     // проверяем время торгов по инструменту
     datetime t=(datetime)SymbolInfoInteger(smb, SYMBOL_EXPIRATION_TIME);
     if (tc>t && t>0) return(false);
     t=(datetime)SymbolInfoInteger(smb, SYMBOL_START_TIME);
     if (tc<t && t>0) return(false);
     
     // проверяем сессии инструмента
     datetime ds=tc/(60*60*24); ds*=(60*60*24); // начало сегодня
     datetime sec=tc-ds; // число секунд от начала дня
     bool b=false;
     for (int l=0; l<10; l++) // подразумеваем, что админ сделал не более 10 сессий в сутки
     {
             datetime fs, ts;
             if (!SymbolInfoSessionTrade(smb, TimeDayOfWeek(TimeCurrent()), l, fs, ts)) break; // данные сессии
             if (sec>=fs && sec<=ts) return(true);
     }
     return(false);
}



 

5-rk içindeki bir şey işlevi geçmiyor:

(Nedenini merak ediyorum ???)

https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/cterminalinfo/cterminalinfoistradeallowed

Документация по MQL5: Стандартная библиотека / Торговые классы / CTerminalInfo / IsTradeAllowed
Документация по MQL5: Стандартная библиотека / Торговые классы / CTerminalInfo / IsTradeAllowed
  • www.mql5.com
Стандартная библиотека / Торговые классы / CTerminalInfo / IsTradeAllowed - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5