Помощь в кодировании - страница 350

 
apprentice coder:
Как я могу проверить из кода, включено ли соединение с брокером или нет?

Для этого можно использовать функцию IsConnected(), но ...

Эта функция никогда не будет достигнута, если не поступают новые тики.

Поэтому вам придется держать ее либо в бесконечном цикле (что неприемлемо для советника), либо использовать события таймера для проверки (в этом случае, если это советник, он может предупредить вас об отсутствии соединения. Я предполагаю, что мы все считаем индикаторы менее критичными к связи - нет операций с ордерами и так далее - поэтому решение с таймером может быть применено и к индикаторам, но, вероятно, менее важно проверять их оттуда, чем от советника). В противном случае ваш код не будет знать, что соединение было потеряно.

 
mladen:
Для этого можно использовать функцию IsConnected(), но...

Эта функция никогда не будет достигнута, если не поступают новые тики.

Поэтому вам придется держать ее либо в бесконечном цикле (что неприемлемо для советника), либо использовать события таймера для проверки этого (в этом случае, если это советник, он может предупредить вас об отсутствии связи. Я предполагаю, что мы все считаем индикаторы менее критичными к связи - нет операций с ордерами и так далее - поэтому решение с таймером может быть применено и к индикаторам, но, вероятно, менее важно проверять их оттуда, чем от советника). В противном случае ваш код не будет знать, что соединение было потеряно.

Не могли бы вы привести пример кода, который бы это сделал?

 
apprentice coder:
Не могли бы вы выложить пример кода, который бы это сделал, пожалуйста?

Выложу пример завтра. ХОРОШО?

 
mladen:
Выложу пример завтра. ХОРОШО?

ХОРОШО. Давайте немного отдохнем.

 
apprentice coder:
не могли бы вы выложить пример кода, который бы это делал, пожалуйста?

ученик кодера

Вот простой индикатор (но то, как он используется, вы можете сделать точно так же в советнике), который проверяет статус подключения брокера через желаемый интервал времени : _check_connection.mq4

#property indicator_chart_window

extern int CheckStatusEveryNMilliseconds = 250;

int init() { EventSetMillisecondTimer(CheckStatusEveryNMilliseconds); return(0); }

int deinit() { EventKillTimer(); return(0); }

int start() { return(0); }

void OnTimer()

{

static bool previouslyConnected = true;

bool currentlyConnected = IsConnected();

if (previouslyConnected != currentlyConnected)

{

previouslyConnected = currentlyConnected;

string cdescription = "disconnected"; if (currentlyConnected) cdescription = "connected";

Comment("connection status changed.\nterminal is now : "+cdescription);

}

Как вы можете видеть, это простой пример того, как это можно сделать

Файлы:
 
mladen:
начинающий программист

Вот простой индикатор (но то, как он используется, вы можете сделать точно так же в советнике), который проверяет статус подключения брокера через желаемый интервал времени : _check_connection.mq4

#property indicator_chart_window

extern int CheckStatusEveryNMilliseconds = 250;

int init() { EventSetMillisecondTimer(CheckStatusEveryNMilliseconds); return(0); }

int deinit() { EventKillTimer(); return(0); }

int start() { return(0); }

void OnTimer()

{

static bool previouslyConnected = true;

bool currentlyConnected = IsConnected();

if (previouslyConnected != currentlyConnected)

{

previouslyConnected = currentlyConnected;

string cdescription = "disconnected"; if (currentlyConnected) cdescription = "connected";

Comment("connection status changed.\nterminal is now : "+cdescription);

}

Как видите, это простой пример того, как это может быть сделано.

спасибо :0

Я вижу, что это работает даже сегодня (без тиков). интересно. обучение, обучение, обучение

 
mladen:
Измените имя файла fxpreislevelsv5.ex4 или fxpreislevelsv5.dll (metatrader не распознает расширения в этом случае - у вас должно быть другое имя файла независимо от расширения).

Спасибо за помощь!!!

Но я столкнулся с другой проблемой после компиляции нет ошибок, но он не запускается и продолжает удаляться

"2014.09.20 19:56:40.262 Пользовательский индикатор Trend_Imperator_V2e GBPUSDe,M5: удален

2014.09.20 19:56:38.901 Пользовательский индикатор Trend_Imperator_V2e GBPUSDe,M5: успешно загружен"

всегда происходит, нужно ли обновлять коды?

 
forexeaexpert:
Спасибо за помощь!!!

Но я столкнулся с другой проблемой после компиляции нет никаких ошибок, но он не запускается и продолжает удаляться

"2014.09.20 19:56:40.262 Пользовательский индикатор Trend_Imperator_V2e GBPUSDe,M5: удален

2014.09.20 19:56:38.901 Пользовательский индикатор Trend_Imperator_V2e GBPUSDe,M5: успешно загружен"

всегда происходит, нужно ли мне обновлять коды?

forexeaexpert

Эта ошибка обычно возникает, когда индикатор вызывается с неправильными параметрами.

Проверьте параметры в вызове iCustom() этого индикатора.

 

Здравствуйте mladen ,

Я пытался вставить этот индикатор в мою ea.

Но после тестирования он получил только сигнал на покупку.

Пожалуйста, помогите мне понять, правильно ли я вставляю код.

MACD = iCustom(NULL,0,"MACD_ColorHist_Alert_EMA 2",FastEMA,SlowEMA,SignalEMA,true,true,true,false,false,false,false,false,false,false,false,0);

Я знаю, что macd>0 и macd<0 - это сигнал пересечения нулевой линии.

Но как я могу получить другой сигнал от направления наклона?

Я очень запутался, после многих попыток.

Файлы:
 
stevenpun:
Здравствуйте mladen ,

Я пытался вставить этот индикатор в мою ea.

Но после тестирования он получил только сигнал на покупку.

Пожалуйста, помогите мне понять, правильно ли я вставляю код.

MACD = iCustom(NULL,0,"MACD_ColorHist_Alert_EMA 2",FastEMA,SlowEMA,SignalEMA,true,true,true,false,false,false,false,false,false,false,false,0);

Я знаю, что macd>0 и macd<0 - это сигнал пересечения нулевой линии.

Но как я могу получить другой сигнал от направления наклона?

Я был очень смущен, после многих попыток .

stevenpun

Для этого проще всего было бы добавить буфер "направления наклона" в этот индикатор или использовать другой MACD, который уже имеет в буфере решение этого наклона.