Конечно не работает, тиков-то нет. В ОнТаймер надо обрывы связи засовывать.
evillive:
Конечно не работает, тиков-то нет. В ОнТаймер надо обрывы связи засовывать.
Конечно не работает, тиков-то нет. В ОнТаймер надо обрывы связи засовывать.
Пасиба!
Будем копать ОнТаймер
gora:
Добрый день!
Подскажите пж-ста убогому, как обработать ошибки связи с сервером (типа ERR_NO_CONNECTION) , это когда в правом нижнем углу терминал пишет: Нет связи.
Проблема в том, что когда вылезает такая ошибка, программа перестает работать везде и код вида:
void OnTick()
{
if (GetLastError() == 6) Alert("Нет связи");
}
не работает...
Я в свои советники в начале делаю следующее:
void OnTick() { //--- if(!IsConnected()) { Comment("\n No connection!"); return; } if(IsTradeContextBusy()) { Comment("\n Trade flow is busy. Wait..."); Sleep(2*1000); return; } //--- ... }
paladin80:
Я в свои советники в начале делаю следующее:
А тик не пришёл...
Набросал, не обработчик, конечно, а индикатор.
//+------------------------------------------------------------------+ //| CheckConnect.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window input int NoTicks = 60; // сообщать при отсутствии котировок, секунд int TimeDifference; string ObjName = "InfoConnect"; string variant[ 4 ] = { "", "Not connected", "Trade context is busy", "Ticks delay"}; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping //--- EventSetTimer( 5 ); TimeDifference = (int)TimeLocal() - (int)TimeCurrent(); return(INIT_SUCCEEDED); } void OnDeinit( const int reason ) { ObjectDelete( ObjName ); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- TimeDifference = (int)TimeLocal() - (int)TimeCurrent(); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { int event; event = CheckConnection(); CreateLabels( event ); } //+------------------------------------------------------------------+ int CheckConnection() { int event = 0; int TimeDifferenceCurrent; TimeDifferenceCurrent = (int)TimeLocal() - (int)TimeCurrent(); TimeDifference = MathMin( TimeDifference, TimeDifferenceCurrent); if ( !IsConnected() ) event = 1; else if ( IsTradeContextBusy() ) event = 2; else if ( TimeDifferenceCurrent - TimeDifference > NoTicks ) event = 3; return( event ); } void CreateLabels( int situation ) { string InfoText; int ChartWindow; ChartWindow = ObjectFind( ObjName ); if ( ChartWindow < 0 ) { ObjectCreate( ObjName, OBJ_LABEL, 0, 0, 0); ObjectSet( ObjName, OBJPROP_CORNER, 1); ObjectSet( ObjName, OBJPROP_XDISTANCE, 12); ObjectSet( ObjName, OBJPROP_YDISTANCE, 24); } InfoText = variant[ situation ]; ObjectSetText( ObjName, InfoText, 12, "Arial Rounded MT Bold", LawnGreen); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день!
Подскажите пж-ста убогому, как обработать ошибки связи с сервером (типа ERR_NO_CONNECTION) , это когда в правом нижнем углу терминал пишет: Нет связи.
Проблема в том, что когда вылезает такая ошибка, программа перестает работать везде и код вида:
void OnTick()
{
if (GetLastError() == 6) Alert("Нет связи");
}
не работает...