Transaq
СБО "Transaq" => Подсистема ATF => Topic started by: nikolz on 25.04.2011, 12:17:22
-
Добрый день!
столкнулся со следующей проблемой.
Написал индикатор AMA :
//индикатор АМА nikolz
#samewindow
#line 0 dot red
extern period=10;
extern Slow=30;
extern Fast=2;
var FastSCm; var SlowSC;
var Signal; var ER; var SSC; var Noise;
//~~~~~~~~~~~~~~
function init(){setInitCandles(1); line[0]=close; Signal=0; Noise=0; SlowSC=2/(Slow+1); FastSCm=2/(Fast+1)-SlowSC; }
//~~~~~~~~~~~~~~
function calc() { Noise=Noise+abs(close-close[-1]);
if (period>=noCandle()) { line[0]=close; }
else{ Noise=Noise-abs(close[-period]-close[-period-1]); Signal=abs(close-close[-period]);
if (Noise>0) {SSC=Signal*FastSCm/Noise+SlowSC;}
line[0]=line[0][-1]+SSC*SSC*(close-line[0][-1]);
}
}
Так вот
В ИНТРЕ все работает прекрасно,
а в боевом транзаке нулевая линия.
Что делать?
-
Здесь нет опечатки? У меня этот код даже не компилируется вот здесь: SSC(close-line[0][-1])
-
исправил опечатку
-
Heller!
Какие у Вас рекомендации будут?
-
У меня Ваш индикатор работает и в боевой transaq и в Интре.
-
Heller!
Какие у Вас рекомендации будут?
Не понял что вы имеете ввиду. Я так понял, что не работало оно из-за того, что оно было сохранено с опечаткой в коде? (Вы же просто скопировали код из файла?) Я не вижу у себя никаких проблем с этим кодом.
-
Добрый день,Heller !
Нет, опечатка была лишь на форуме.
В программах в транзак все верно ( иначе проверку не пройдет)
Но в боевом транзаке рисует горизонтальную линию а Интра рисует правильно.
Переношу просто копированием каталога с программами.
Другие мои индикаторы работают.
Как я понял , у Вас тоже все работает.
Возможно, надо что-либо переустановить?
-
Попробуйте открыть этот файл редактором ATF, и нажать "Проверить" на боевом Transaq. Вероятно чего-то напишет по этому поводу.
-
Проверил написал ОК! Но результат тот же - горизонтальная линия
-
Heller!
Если я правильно понял, то поскольку на интра все работает и работает у других пользователей, то проблема очевидно на сервере брокера (финам)
Переустановил транзак обновил но результат все тот же - прямая линия.
Причем на интра все хорошо . копирую каталог sources из каталга транзака для интра в боевой транзак - получаю прямую линию у финам.
-
Heller !
Действительно проблема на сервере.
Если без подключения на график накладываю индикатор то все нормально.
Подключаюсь к серверу -прямая линия
Может что в консерватории надо поправить?
-
, то проблема очевидно на сервере брокера (финам)
Переустановил транзак обновил но результат все тот же - прямая линия.
Причем на интра все хорошо . копирую каталог sources из каталга транзака для интра в боевой транзак - получаю прямую линию у финам.
У меня финам и работает нормально.
-
тогда гипотез нет.
-
Я бы попробовал extern заменить на var, а также занести код на боевой транзак обычным копипастом, а не копированием каталогов (а то вдруг разные версии source или внешние переменные по разному читают)
-
Спасибо. попробую завтра.
Правда, если к серверу не подключаться, то индикатор рисуется нормально.
после подключения - горизонтальная линия.
-
тогда еще один совет. замените все вары на статики. разница между режимами с сервером и без - количество вызовов калк на свече - один , если без сервера - и много с сервером. вары между калками свое значение сбрасывают до исходного состояния начала свечи (я из-за этого их вообще в коде почти не использую, только если как глобальные и неизменные параметры)
-
Благодарю за совет, попробую.
-
Heller!
Глюк я нашел. он Ваш, примите поздравления.
Теперь по порядку.
1) откройте график например сбербанк
2) киньте на него мой АМА
В результате все нормально работает
Продолжаем
3) Добавьте индикатор в новое подокно этого окна ,например , Газпром
4) Киньте туда мой AМА
и получите на графике Сбербанка прямую линию.
Ну вот пожалуй и все
-
Для всех,кто мне пытался помочь,
выкладываю последний вариант фильтра Кауфмана:
//индикатор KАМА nikolz
#samewindow
#line 0 dot red
extern period=10;
extern Slow=30;
extern Fast=2;
var FastSCm; var SlowSC;
var Signal; var SSC; var Noise;
//~~~~~~~~~~~~~~
function init(){ setInitCandles(1); line[0]=close; Signal=0; Noise=0; SlowSC=2/(Slow+1); FastSCm=2/(Fast+1)-SlowSC; }
//~~~~~~~~~~~~~~
function calc() { Noise=Noise+abs(close-close[-1]);
if (period>=noCandle()) { line[0]=close; }
else{ Noise=Noise-abs(close[-period]-close[-period-1]); Signal=abs(close-close[-period]);
if (Noise>0) {SSC=Signal*FastSCm/Noise+SlowSC;}
line[0]=line[0][-1]+SSC*SSC*SSC*(close-line[0][-1]);
}
}
Успехов.
-
У нас не воспроизводится. Подождите обновления версии, насколько я помню, у Финама на боевой системе летает довольно старая версия. Вроде уже скоро должно быть обновление.