Автор |
Сообщение |
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Привет. Подскажите плз почему переменная Х отображается в виде уходящей влево линии и можно ли сделать чтобы она появлялась только там где надо?
Код: |
Up = C > MA(C,5);
y = LLV(L,3);
x = 0;
for(i = 1; i < BarCount; i++)
{
if(Up[i])
x = y[i];
else
x = Null;
}
Plot(C,"",colorBlack,styleCandle);
Plot(MA(C,5),"",colorRed,styleLine);
Plot(x,"",colorRed,styleLine); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
x[i] |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
|
Посмотреть профиль Отправить личное сообщение |
|
GREEN_X5
Зарегистрирован: 13.04.2012
Сообщения: 136
|
Блин, застрял, нифига не понимаю... (
Хочу посчитать сумму разниц C-ref(C,-1) для последних пяти свечек для всей БД по тикеру. В итоге рисуется статичная хрень, номер бара на всём графике всегда постоянный - последний. Т.е. на всём протяжении подсчет только пяти последних на графике свечей. Хэлп!
Код: |
SetBarsRequired(sbrAll, sbrAll);
y = LastValue(BarIndex());
// y=BarCount; - та же хрень...
Summ=0;
for( x = 0; x < 5; x++ ) {
Summ = Summ + C[y-x-1]-C[y-x-2];
} |
Или, проще - как получить последнего бара для текущей итерации? LastValue(BarIndex()) и BarCount у меня дают номер последнего бара на графике, хоть ты тресни... ( Может быть что-то в настройках Ами нажал?.. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А нафига для этого вообще цикл городить?
Код: |
SSS = Sum(C-Ref(C,-1), 5); |
А LastValue(BarIndex()) и BarCount и должны давать номер последнего бара. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
GREEN_X5
Зарегистрирован: 13.04.2012
Сообщения: 136
|
Ай, шайтан, работает всё опять! ))) Олег, спасибо тебе большое!!! )
Скажи, а что, реально, не получить номер последнего бара для текущей итерации?
Ну, вроде, просчитывает Ами 100-ую из 200 котировок, вот и выдал бы цифру 100?... Или я не понимаю как он прогоняет формулу по барам... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если в коде нет цикла, то ами не просчитывает котировки последовательно. Он сразу считает весь массив. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Enhema
Зарегистрирован: 25.12.2014
Сообщения: 36
|
Подскажите пожалуйста, что здесь неправильно:
Код: |
s1 = 1.2;
s2 = 1;
MyAtr = IIf(Ref(ATR(14),-1)>30,1,2);
for( i = 0; i < BarCount; i++ )
{
if( MyATR[ i ] == 1 )
div = s1;
else
div = s2;
} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
div[i] = s1; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Enhema
Зарегистрирован: 25.12.2014
Сообщения: 36
|
000 писал(а): |
div[i] = s1; |
Вот блин..
А как мне результат использовать в МАшке?
Пробовал её засунуть в цикл...Не дождался конца бэктеста....
s1 = 1.2;
s2 = 1;
MyAtr = IIf(Ref(ATR(14),-1)>30,1,2);
for( i = 0; i < BarCount; i++ )
{
if( MyATR[ i ] == 1 )
div[i] = s1;
else
div[i] = s2;
}
MyMA = EMA( Ref(AV,-1),250/div); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Да тут цикл нафиг не нужен.
Код: |
s1 = 1.2;
s2 = 1;
div = IIf(Ref(ATR(14),-1)>30, s1, s2); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Enhema
Зарегистрирован: 25.12.2014
Сообщения: 36
|
000 писал(а): |
Да тут цикл нафиг не нужен.
Код: |
s1 = 1.2;
s2 = 1;
div = IIf(Ref(ATR(14),-1)>30, s1, s2); |
|
Изначально пробовал так. Тогда EMA ругается:
Error 5. Argument #1 has incorrect type (the function expects different argument type here) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну правильно. В EMA вообще нельзя использовать переменный период.
Можно только
Цитата: |
AMA
AMA2
DEMA
HHV
HHVBars
LinRegSlope
LinearReg
LinRegIntercept
LLV
LLVBars
MA
Ref
StdErr
Sum
TEMA
TSF
WMA
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MrDzenLi
Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN
|
Я реально отдуплиться не могу, индикаторы с циклами хороши, но как???
Самый простой пример:
do - приказ
while - выражение
x=100;
do
{
y = sin( x );
x--;
} while ( x > 0 );
Выполняется до тех пор, пока "x" не приравняется нулю.
Но, что такое "x" ? "x" может быть индикатором ?
Или это просто сто приказов - вычисления "sin" от "x"? |
_________________ Нам не дано знать всего. |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нет. Х это просто число, а индикатор это массив. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|