Transaq
СБО "Transaq" => Подсистема ATF => Topic started by: Makin on РЯаХЫп 09, 2014, 02:18:12 pm
-
Добрый день! Подскажите, пожалуйста, какие изменить данные в коде "Сигнал пересечения ценой МА", чтобы вместо скользящей средней был Parabolic SAR (0,01/0,01/0,1).
Взято с данного сайта:
#samewindow
#line 0 solid red
extern period = 9;
var trend = 0;
function init()
{
setInitCandles(1);
}
function calc()
{
line[0] = MovAvg(ind_ema, period, pt_close);
if (trend == 1 and close < line[0]) {
signal::alert("Продажа: " + getSecName() +
" пересекла сверху вниз скользящую среднюю.");
}
if (trend == -1 and close > line[0]) {
signal::alert("Покупка: " + getSecName() +
" пересекла снизу вверх скользящую среднюю.");
}
if (close > line[0]) {trend = 1;}
else if (close < line[0]) {trend = -1;}
}
-
#samewindow
#line 0 solid red
extern pMax = 0.2;
extern pStep = 0.02;
extern pInit = 0.02;
function init()
{
setInitCandles(1);
}
function calc()
{
line[0] = IndRef("parabolicsar", pMax, pStep, pInit)[0];
if (close < line[0]) {
signal::alert("Продать: по " + getSecName()+"по " + close +
" цена пересекла границу сверху вниз.");
signal::output("-Вр." + getFormattedTime(getServerTime()) + "Прод" + getSecName() + "по=" + close );
}
if (close > line[0]) {
signal::alert("Купить: по " + getSecName()+" по " + close +
" цена пересекла границу снизу вверх.");
signal::output("-Вр." + getFormattedTime(getServerTime()) + "Пок" + getSecName() + "по=" + close );
}
}
-
Спасибо RAMIL! Но только при такой кодировке каждый раз по окончании свечи в терминал выкидывается сигнал о нахождении цены (выше/ниже) показателя Parabolc SAR, т.е. на 5-ти мин. таймфрейме дается 12 сигналов, а мне нужен сигнал только момента пересечении Параболика и цены.
-
#samewindow
#line 0 solid red
extern pMax = 0.2;
extern pStep = 0.02;
extern pInit = 0.02;
static vPar = 0;
static Dir = 0;
static PrevDir = 0;
function init()
{
setInitCandles(1);
}
function calc()
{
vPar = IndRef("parabolicsar", pMax, pStep, pInit)[0];
PrevDir = Dir;
if (high[0] > vPar) { Dir = 1; }
if (low[0] < vPar) { Dir = -1; }
line[0][0] = vPar;
if (Dir < 0 && PrevDir >= 0) {
signal::alert("Продать: " + getSecName()+"по " + close +
" цена пересекла границу сверху вниз.");
signal::output("--Вр." + getFormattedTime(getServerTime()) +
"Прод." + getSecName() + "по= " + close +"-ParabolicSar");
}
if (Dir > 0 && PrevDir <= 0) {
signal::alert("Купить: " + getSecName()+" по " + close +
" цена пересекла границу снизу вверх.");
signal::output("-Вр." + getFormattedTime(getServerTime()) +
"Пок." + getSecName() + "по= " + close+"-ParabolicSar" );
}
}
-
Ramil, спасибо большое, все работает!