if (!res1) return false; //сейчас торговать запрещено if (res1 && res2) return true; //и сейчас и через час торговать можно return false; //если зависло разрешение от TimeCurrent, то через час (или с запасом в несколько минут) покажет фалсе. // Но наверняка есть ситуации когда реально сейчас можно торговать а через час нельзя - тогда неправильный ответ :( }
/// Ждём разрешения торговать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();
}
}
//------------------------------------------------------------------ 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); }
这是一种持续的欺骗和自欺欺人的欲望 :) 。
补充:你有没有试过显示所有的符号,并在 "市场概览 "窗口中显示 "时间 "一栏,发现正在不停交易的比特币符号?另外,这样的基本检查也有帮助。
不是一个放之四海而皆准的解决方案,但对我很有效
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, то через час (или с запасом в несколько минут) покажет фалсе.
// Но наверняка есть ситуации когда реально сейчас можно торговать а через час нельзя - тогда неправильный ответ :(
}
但可以肯定的是,在有些情况下,你真的可以现在就进行交易,而不是在一小时内进行交易。
当然是这样--每次在收市前一小时))))
我不同意。屏幕上冻结的最后日期是星期五21:59。如果我把移位设置为3600秒--第二个参数IsTradeAllowed(Symbol(),TimeCurrent()+3600 返回trude。我增加了一些额外的秒数,使其发挥作用。好吧,如果是星期五的21:50,一切都应该正常。
说实话,我没有检查它,我只是检查了与经纪人Reconnector的连接(在论坛的某个地方发现的),它在周末不断地重新连接。所以这对我来说意义不大。
bool MarketOpen(string Symbl)
{
if(IsTradeAllowed(Symbl,TimeCurrent()+1)==false)return(false); //рынок закрыт
return(true);
}
bool MarketOpen(string Symbl)
{
if(IsTradeAllowed(Symbl,TimeCurrent()+1)==false)return(false); //рынок закрыт
return(true);
}
它是不同的,所以这种检查不能保证任何东西。
因此,专家的交易是被禁止的,但市场是开放的。
现在,星期一,市场开放了,专家们被办公室禁止了。
相反,在其他一些办公室的周末,当市场关闭 时,这些检查表明市场是开放的,专家们已被允许进行交易。
昨天。
到目前为止,它是有效的。
这个人没有。
关于交易、自动交易系统和交易策略测试的论坛
我怎么知道周末没有交易?
Renat Akhtyamov, 2018.02.11 05:27
谢谢你!
对于MT4。
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);
}
有一些关于5p的功能不工作。
(我想知道为什么???)
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/cterminalinfo/cterminalinfoistradeallowed