Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Ликбез по циклам Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
DMITRY



Зарегистрирован: 18.09.2009
Сообщения: 179

СообщениеДобавлено: Чт Окт 25, 2012 6:34 pm Ответить с цитатой Вернуться к началу

Привет. Подскажите плз почему переменная Х отображается в виде уходящей влево линии и можно ли сделать чтобы она появлялась только там где надо?
Код:
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

СообщениеДобавлено: Чт Окт 25, 2012 8:44 pm Ответить с цитатой Вернуться к началу

x[i]

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
DMITRY



Зарегистрирован: 18.09.2009
Сообщения: 179

СообщениеДобавлено: Чт Окт 25, 2012 8:56 pm Ответить с цитатой Вернуться к началу

Понял, спасиб...
Посмотреть профиль Отправить личное сообщение
GREEN_X5



Зарегистрирован: 13.04.2012
Сообщения: 136

СообщениеДобавлено: Вт Июн 02, 2015 8:55 pm Ответить с цитатой Вернуться к началу

Блин, застрял, нифига не понимаю... (
Хочу посчитать сумму разниц 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

СообщениеДобавлено: Вт Июн 02, 2015 9:38 pm Ответить с цитатой Вернуться к началу

А нафига для этого вообще цикл городить?
Код:
SSS = Sum(C-Ref(C,-1), 5);


А LastValue(BarIndex()) и BarCount и должны давать номер последнего бара.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
GREEN_X5



Зарегистрирован: 13.04.2012
Сообщения: 136

СообщениеДобавлено: Вт Июн 02, 2015 9:53 pm Ответить с цитатой Вернуться к началу

Ай, шайтан, работает всё опять! ))) Олег, спасибо тебе большое!!! )
Скажи, а что, реально, не получить номер последнего бара для текущей итерации?
Ну, вроде, просчитывает Ами 100-ую из 200 котировок, вот и выдал бы цифру 100?... Или я не понимаю как он прогоняет формулу по барам...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Июн 02, 2015 11:36 pm Ответить с цитатой Вернуться к началу

Если в коде нет цикла, то ами не просчитывает котировки последовательно. Он сразу считает весь массив.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Enhema



Зарегистрирован: 25.12.2014
Сообщения: 36

СообщениеДобавлено: Пн Июн 22, 2015 1:40 pm Ответить с цитатой Вернуться к началу

Подскажите пожалуйста, что здесь неправильно:

Код:
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

СообщениеДобавлено: Пн Июн 22, 2015 1:42 pm Ответить с цитатой Вернуться к началу

div[i] = s1;

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Enhema



Зарегистрирован: 25.12.2014
Сообщения: 36

СообщениеДобавлено: Пн Июн 22, 2015 2:25 pm Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Пн Июн 22, 2015 3:15 pm Ответить с цитатой Вернуться к началу

Да тут цикл нафиг не нужен.

Код:

s1 = 1.2;
s2 = 1;
div = IIf(Ref(ATR(14),-1)>30, s1, s2);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Enhema



Зарегистрирован: 25.12.2014
Сообщения: 36

СообщениеДобавлено: Пн Июн 22, 2015 3:24 pm Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Пн Июн 22, 2015 3:59 pm Ответить с цитатой Вернуться к началу

Ну правильно. В 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

СообщениеДобавлено: Вт Июн 30, 2015 9:07 pm Ответить с цитатой Вернуться к началу

Я реально отдуплиться не могу, индикаторы с циклами хороши, но как???
Самый простой пример:
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

СообщениеДобавлено: Чт Июл 02, 2015 8:23 am Ответить с цитатой Вернуться к началу

Нет. Х это просто число, а индикатор это массив.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen