Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нашел хорошего программиста? Ставь адресную заявку!
kira36
181
kira36 2013.11.26 16:31 

Хочу вызывать функцию сразу при инициализации советника, а потом повторно вызывать её же, но только после нескольких тиков или некоторого времени. Как можно реализовать такое?

TarasBY
1744
TarasBY 2013.11.26 16:41  
kira36:

Хочу вызывать функцию сразу при инициализации советника, а потом повторно вызывать её же, но только после нескольких тиков или некоторого времени. Как можно реализовать такое?

Чтобы функция сработала при инициализации советника, запустите её в init() или в start() через флаг (переключатель). Время можно измерять в барах или в миллисекундах - разная реализация. В чём нужно?
kira36
181
kira36 2013.11.26 16:51  

Хочу увидеть разные примеры, интересно очень :)
Суть в чем. Пример кода:

string Func1Res = Func1(param1);
bool Access = Func2(Func1Res);

IF (Access)
{
советник работает, все функции вызываются и тд;
}
else
{
Alert("ошибка");
}


Я хочу вызывать при инициализации первые две функции, чтобы произошла ошибка или же советник заработал, далее в течение N времени не делать проверку (но при этом значение Access сохраняется), а потом снова повторить.

Так же если допустим выводится ошибка, то хочу делать TimeOut (сколько времени ждать после неудачной попытки и снова повторять попытку проверки).
Заранее спасибо!

kira36
181
kira36 2013.11.26 18:08  

Т.е. я могу сделать таким образом:

Вопрос: будет ли передаваться значение Access из init() в start() ?

int max=500;
int min=0;

init()
{

string Func1Res = Func1(param1);

bool Access = Func2(Func1Res);

}

start()
{
while(max=>min)
{
max--;
}

if(max=0)
{
Func1Res = Func1(param1);
Access = Func2(Func1Res);
max=500;
}

IF (Access)
{
советник работает, все функции вызываются и тд;
}
else
{
Alert("ошибка");
}

}

Artyom Trishkin
69103
Artyom Trishkin 2013.11.26 18:28  
Область видимости Access - функция init()
Alexander
2441
Alexander 2013.11.27 02:42  
artmedia70:
Область видимости Access - функция init()


Что, тяжело было добавить, что надо инициализировать переменную там же, где min и max? -))
TarasBY
1744
TarasBY 2013.11.27 06:50  
kira36:

Хочу увидеть разные примеры, интересно очень :)
Суть в чем. Пример кода:

Я хочу вызывать при инициализации первые две функции, чтобы произошла ошибка или же советник заработал, далее в течение N времени не делать проверку (но при этом значение Access сохраняется), а потом снова повторить.

Так же если допустим выводится ошибка, то хочу делать TimeOut (сколько времени ждать после неудачной попытки и снова повторять попытку проверки).
Заранее спасибо!

Что-то мне подсказывает, что "не туды гребёте"... Может так:

bool gb_first = true;

void start()
{
    //---- проверка по времени (СХЕМАТИЧНО)
    if (!gb_first)
    {
        if (!time) return;
        if (!FuncAccess (param1)) return;
    }
    else
    {
        if (!FuncAccess (param1)) return;        
        gb_first = false;
    }
    //---- советник работает, все функции вызываются и тд;
}
bool FuncAccess (param1)
{
    string Func1Res = Func1 (param1);
    if (!Func2 (Func1Res))
    {
        Alert ("ошибка");
        return (false);
    }
    return (true);
}
??? ;)
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий