Вопрос по коду советников

 
Уважаемые форумчане, возник вопрос. Установлено несколько терминалов (мой и не мой =) ), работают они на разных серверах. На моем терминале установлен советник. Так вот вопрос - можно ли сделать так, что данный советник будет работать на одном терминале (счете) и не работать на другом (если будет скопирован)? Если такая возможность есть очень прошу помочь.
 

Как вариант, ф-я

int AccountNumber()

)

Возвращает номер текущего счета.

Пропишите в коде условие:

if (AccountNumber() != заданный номер) return(0);

 
Да, и плюс к этому исходник на сервер не загружайте, а только компилянт (.ex4)
 
Большое спасибо за ответы, сейчас попробую!=-)
 

МТ4 не открывает ордера. Почему?


extern double L1=0.01;

extern int magic;
extern int mn1=001;
extern int mn2=002;
int init()
{
return(0);
}

int start()
{
RefreshRates(); // Обновление данных
OrderSend ("AUDCAD", OP_BUY, L1, Ask, 3, 0, 0, mn1, 0, CLR_NONE);
RefreshRates(); // Обновление данных
OrderSend ("AUDCAD", OP_BUY, L1, Ask, 3, 0, 0, mn2, 0, CLR_NONE);
RefreshRates(); // Обновление данных
OrderClose (mn2, L1, Bid, 3);
RefreshRates(); // Обновление данных
OrderClose (mn1, L1, Bid, 3);
return(0);
}
int deinit()
{
return(0);
}
 
Ozero:

МТ4 не открывает ордера. Почему?

......


Цена и лот не нормализованы.

И закрывать не будет - закрытие по тикету (не по меджику) который вы не присвоили после открытия ордера.

 
ktest0:


Цена и лот не нормализованы.

И закрывать не будет - закрытие по тикету (не по меджику) который вы не присвоили после открытия ордера.


Как нормализовать цену и лот?


Тут нашел http://forex.24r.info/index.php?option=com_content&view=article&id=12:---ndprice&catid=2:1&Itemid=12

Функция нормализации цен - NDPrice()

double NDPrice(double InputValue)
{
return (NormalizeDouble(InputValue,Digits));

}



http://forex.24r.info/index.php?option=com_content&view=article&id=13:-init&catid=2:1&Itemid=12

double NDLot(double InputValue)
{
int CommaDidgits;
switch (MarketInfo(Symbol(), MODE_MINLOT))
{
case 0.0001:
CommaDidgits = 4;
break;
case 0.001:
CommaDidgits = 3;
break;
case 0.01:
CommaDidgits = 2;
break;
case 0.1:
CommaDidgits = 1;
break;
case 1.0:
CommaDidgits = 0;
}
return (NormalizeDouble(InputValue,CommaDidgits));
}



В ту ли сторону я стал копать? Что то не совсем понятно.

 

в ту...


NormalizeDouble(Ask,Digits) //для цены

NormalizeDouble(L1,2) //для лота.

Надеюсь понятно почему в первом примере Digits, а во втором цифра 2?

 
Ozero:

МТ4 не открывает ордера. Почему?



Надеюсь, советник стоит на графике AUDCAD?
 
Roger:

Надеюсь, советник стоит на графике AUDCAD?

Да.
 
ktest0:

в ту...


Надеюсь понятно почему в первом примере Digits, а во втором цифра 2?


Digits - определяет количество знаков после запятой, которое комьютер должен сам определить, ведь бывают 2 (на йене-доллар), 4 и даже в некоторых ДЦ 5 цифр после запятой.

2 - это количество знаков после запятой в лоте. :)

Забавный язык программирования МТ4. В других языках программирования подобной замороченности с переменными не возникало.

С вопросом закрытия ордеров по мейджику я постараюсь разобраться в понедельник (сейчас форекс не работает, выходные). Не помолучться - сильно не пинайте, спрошу в этой ветке. :)
Roger:

Надеюсь, советник стоит на графике AUDCAD?
Причина обращения: