Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
функция IIf лажается при работе с массивами у которых есть элементы Null. Ты сперва вместо null сделай 0, выбери ближайший, а потом превращай 0 в null. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
понял тебя спасибо уже все исправил.
Олег, а не мог бы ты объяснить для чего функции
StaticVarSet
StaticVarGet
Если не сложно с небольшим примерчиком. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Пример писать не охот, но в двух словах чтобы передавать данные между разными подокнами.
В одном подокне скрипт создает переменную, а в другом читает.
Например можно меняя период функции в одном подокне передавать этот период в другое.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
что значит подокне???? не понятно совсем .......
Блин даже и не спросишь где почитать, потому что читать негде (((( |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
pane |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Создаешь такой индикатор
Код: |
x = Param("period", 5, 3, 15, 1 );
StaticVarSet("p", x);
Plot(RSI(x), "", colorRed);
|
Пихаешь в отдельное pane
Потом создаешь такой индикатор
Код: |
Plot(StochK(StaticVarGet("p"), 3), "", colorBlue);
|
Пихаешь его в другое pane
Потом меняешь период первого индикатора, щелкаешь на графике и период второго тоже изменяется |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
а для чего SelectedValue????
вроде как я понял для того чтобы из массива выделить переменную!!! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
selectedvalue( ARRAY )
Получает значение массива ARRAY на выбраном баре. Основное применение: коды коментариев и интерпретаций
...
SelectedValue получает значения массива на баре выбранном вертикальной линией
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
Как подсчитать сколько элементов принимают значение истина?
например
Код: |
Var4 = Ref(L, -2) < Ref(L, -1) AND Ref(L, -1) < L;
|
как узнать сколько раз var4 был истинным? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
qqq = Sum(Var4, period); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
Опять я со своими вопросами
есть массив (masiv) и есть значение (znach )
Имеется ли функция чтобы узнать есть ли элемент в массиве равный значению.
Или это нужно проверять циклом? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В принципе можно проверить так
Код: |
ValueWhen(masiv == znach, BarIndex())
|
Если значение не пустое, то такой элемент есть. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
Да что же это такое.
Решил написать вот такую задачку. Есть некий фрактал по нему определяется уровень. Теперь мне нужно найти был ли такой же уровень или почти такой же в прошлом. Если был то этому уровню присвоить истину.
Эту задачу я выполнил вот так:
Код: |
// находим фрактал
f_down =
(Ref(L,2) > Ref(L,0) AND Ref(L,1) >= Ref(L,0) AND Ref(L,0) < Ref(L,-1) AND Ref(L,0) <= Ref(L,-2));
// теперь ищем был ли в прошлом за последние 50 баров уровень разница между
// которыми составляет 0.03 единицы.
for(i=50; i<BarCount; i++ )
{
if (f_down[i]==1)
{
i1=i-50;
do
{
if (f_down[i1]==1 AND abs(L[i]-L[i1])<=0.03)
{dsr_u[i]=1;
} else {dsr_u[i]=0;}
i1++;
}
while ((i1 < i-1) AND dsr_u[i] <1); // i-1 потому что самого себя не нужно проверять
}
}
// рисуем пунктирные линии от этих баров
Plot(ValueWhen(dsr_u,L,1), "", 29, 128 | 16 );
|
Это все работает! Не знаю правильно или нет я написал код. Но работает!
Теперь я хотел бы чтобы эти линии рисовались на 5-и минутном графике из 15-и минутного ТФ.
делаю так:
Код: |
TimeFrameSet(in15Minute);
f_down =
(Ref(L,2) > Ref(L,0) AND Ref(L,1) >= Ref(L,0) AND Ref(L,0) < Ref(L,-1) AND Ref(L,0) <= Ref(L,-2));
for(i=50; i<BarCount; i++ )
{
if (f_down[i]==1)
{
i1=i-50;
do
{
if (f_down[i1]==1 AND abs(L[i]-L[i1])<=0.03)
{dsr_u[i]=1;
} else {dsr_u[i]=0;}
i1++;
}
while ((i1 < i-1) AND dsr_u[i] <1); // i-1 потому что самого себя не нужно проверять
}
}
TimeFrameRestore();
Plot(TimeFrameExpand(ValueWhen(dsr_u,L,1), in15Minute), "", 29, 128 | 16 );
|
Но этот гад рисует мне все что угодно только не то что нужно! (((((((((
Помогите, где я ошибся? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Почти правильно у тебя было.
я 15 мин переделал на часовки потому, что мне так удобнее разбираться было.
Код: |
SetBarsRequired(sbrAll, 0);
TimeFrameSet(inHourly);
// находим фрактал
f_down =
(Ref(L,2) > Ref(L,0) AND Ref(L,1) >= Ref(L,0) AND Ref(L,0) < Ref(L,-1) AND Ref(L,0) <= Ref(L,-2));
// теперь ищем был ли в прошлом за последние 50 баров уровень разница между
// которыми составляет 0.03 единицы.
for(i = 50; i < BarCount; i++ )
{
if (f_down[i] == 1)
{
i1 = i-50;
do
{
if(f_down[i1] == 1 AND abs(L[i]-L[i1]) <= 0.03)
dsr_u[i] = 1;
else
{
dsr_u[i] = 0;
i1++;
}
} while((i1 < i-1) AND dsr_u[i] < 1); // i-1 потому что самого себя не нужно проверять
}
}
Lev1 = ValueWhen(dsr_u, L);
Lev2 = ValueWhen(f_down, L);
TimeFrameRestore();
Lev1 = TimeFrameExpand(Lev1, inHourly);
Lev2 = TimeFrameExpand(Lev2, inHourly);
Plot(C, "", colorBlack, styleCandle);
Plot(Lev1, "", colorRed);
Plot(Lev2, "", colorBlue);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
а что такое ?
Код: |
SetBarsRequired(sbrAll, 0);
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
|