Автор |
Сообщение |
Shark77
Зарегистрирован: 24.02.2018
Сообщения: 12
|
Только начал изучать Ами, хочу провести исследование по дням недели, т.е. например, если понед. клоуз, меньше клоуз пятницы, а клоуз вторника меньше понедельника, то среда будет растущей или падающей. Приер есть в книге Кауфмана, а так же код для омеги. Код прикрепляю.
[LegacyColorValue = true];
{Weekday Study }
{ Copyright 1985-1999, 2011. PJ Kaufman. All rights reserved. }
vars: dow(0), dir(0), ix(0),iy(0), error(0), Mon(0), day2(0), day3(0), day4(0),
day5(0),div(0), pc(0);
arrays:Tues[2](0), Wed[4](0), Thurs[8](0), Fri[16](0), pattern[5](0),
n2[2](0), n3[4](0), n4[8](0), n5[16](0);
{ create full pattern for week before entered values in case incomplete }
dow = dayofweek(date);
if currentbar = 1 then begin
Tues[1] = 10; Tues[2] = 11;
Wed[1] = 101; Wed[2] = 100; Wed[3] = 111; Wed[4] = 110;
Thurs[1] = 1011; Thurs[2] = 1010; Thurs[3] = 1001; Thurs[4] = 1000;
Thurs[5] = 1111; Thurs[6] = 1110; Thurs[7] = 1101; Thurs[8] = 1100;
Fri[1] = 10111; Fri[2] = 10110; Fri[3] = 10101; Fri[4] = 10100;
Fri[5] = 10011; Fri[6] = 10010; Fri[7] = 10001; Fri[8] = 10000;
Fri[9] = 11111; Fri[10] = 11110; Fri[11] = 11101; Fri[12] = 11100;
Fri[13] = 11011; Fri[14] = 11010; Fri[15] = 11001; Fri[16] = 11000;
end;
{ Monday }
if dow = 1 then begin
for ix = 1 to 5 begin
pattern[ix] = 0;
end;
if close > close[1] then pattern[1] = 1 else pattern[1] = -1;
end;
{ Tuesday }
if dow = 2 then begin
if close > close[1] then pattern[2] = 1 else pattern[2] = -1;
end;
{ Wednesday }
if dow = 3 then begin
if close > close[1] then pattern[3] = 1 else pattern[3] = -1;
end;
{ Thursday }
if dow = 4 then begin
if close > close[1] then pattern[4] = 1 else pattern[4] = -1;
end;
{ Friday }
if dow = 5 then begin
if close > close[1] then pattern[5] = 1 else pattern[5] = -1;
error = 0;
{ process pattern for entire week, convert to pattern beginning with 1 }
{ print (pattern[1]:3:3, pattern[2]:3:3, pattern[3]:3:3, pattern[4]:3:3, pattern[5]:3:3); }
for ix = 2 to 5 begin
if pattern[ix] = 0 then error = 1;
if error = 0 then begin
if pattern[ix] * pattern[1] > 0 then pattern[ix] = 1 else pattern[ix] = 0;
end;
end;
pattern[1] = 1;
{ print (pattern[1]:3:0, pattern[2]:3:0, pattern[3]:3:0, pattern[4]:3:0, pattern[5]:3:0); }
if error = 0 then begin
{ create a value for each day }
Mon = Mon + 1;
day2 = 10 + pattern[2];
day3 = 100 + pattern[2]*10 + pattern[3];
day4 = 1000 + pattern[2]*100 + pattern[3]*10 + pattern[4];
day5 = 10000 + pattern[2]*1000 + pattern[3]*100 +
pattern[4]*10 + pattern[5];
{ match each pattern and add to number of cases }
if day2 = Tues[1] then n2[1] = n2[1] + 1 else n2[2] = n2[2] + 1;
for ix = 1 to 4 begin
if day3 = Wed[ix] then n3[ix] = n3[ix] + 1;
end;
for ix = 1 to 8 begin
if day4 = Thurs[ix] then n4[ix] = n4[ix] + 1;
end;
for ix = 1 to 16 begin
if day5 = Fri[ix] then n5[ix] = n5[ix] + 1;
end;
end;
{ print (pattern[1]:3:0, pattern[2]:3:0, pattern[3]:3:0, pattern[4]:3:0, pattern[5]:3:0,
Mon:4:0, day2:3:0, day3:4:0, day4:5:0, day5:6:0); }
end;
if lastbaronchart then begin
print (file("c:\TSM5\Weekday study.csv")," Monday =, 1, 100%, cases =,", mon:5:0);
print (file("c:\TSM5\Weekday study.csv"),"Tuesday");
for ix = 1 to 2 begin
div = intportion((ix+1)/2);
pc = n2[ix]*100/Mon;
print (file("c:\TSM5\Weekday study.csv"),Tues[ix]:5:0, ",", n2[ix]:4:0, ",", pc:4:0);
end;
print (file("c:\TSM5\Weekday study.csv"),"Wednesday");
for ix = 1 to 4 begin
div = intportion((ix+1)/2);
pc = n3[ix]*100/n2[div];
print (file("c:\TSM5\Weekday study.csv"),Wed[ix]:5:0, ",", n3[ix]:4:0, ",", pc:4:0);
end;
print (file("c:\TSM5\Weekday study.csv"),"Thursday");
for ix = 1 to 8 begin
div = intportion((ix+1)/2);
pc = n4[ix]*100/n3[div];
print (file("c:\TSM5\Weekday study.csv"),Thurs[ix]:5:0, ",", n4[ix]:4:0, ",", pc:4:0);
end;
print (file("c:\TSM5\Weekday study.csv"),"Friday");
for ix = 1 to 16 begin
div = intportion((ix+1)/2);
pc = n5[ix]*100/n4[div];
print (file("c:\TSM5\Weekday study.csv"),Fri[ix]:5:0, ",", n5[ix]:4:0, ",", pc:4:0);
end;
end; |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А можешь сюда из Кауфмана описание скопировать? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shark77
Зарегистрирован: 24.02.2018
Сообщения: 12
|
000 писал(а): |
А можешь сюда из Кауфмана описание скопировать? |
Спасибо большое за столь быстрый ответ.
Описание: Первый шаг состоит в определении модели для рабочей недели. Это делается с точки зрения движения от пятницы к понедельнику (от закрытия до закрытия). Понедельнику всегда присваивается Х независимо от того , куда направленно движение после пятницы, вверх или вниз. Каждый день закрывающийся в направлении пятница - понедельник, так же обозначается символом Х. Если при закрытии направление меняется, для обозначения используется О. Следовательно, ХОХХО означает, что вторник и пятница обозначенные символом О, закрылись против направления пятница - понедельник, а среда и четверг - в том же направлении.
Хотелось бы построить исследование. МОжно конечно пойти простым путем С>REF (C-1 ) и т.д. но получается очень много вариантов, хотелось бы как-то проще сделать.
P.S.Может в личку лучше писать, тема то рабочая? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ок. Вот получили мы эти ХОХХО для каждой недели. Их вывести в файл? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shark77
Зарегистрирован: 24.02.2018
Сообщения: 12
|
000 писал(а): |
Ок. Вот получили мы эти ХОХХО для каждой недели. Их вывести в файл? |
Да именно так. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Как то вот так. Код плохой. Я накидал побыстрому, смотрю если день недели пропущен (торгов не было) т косяк... Я давай лепить заплатки...
Код надо засунуть в АА и сделать Explore. В настройках АА поставить дневки. Код создаст .csv файлы имя_тикера.csv
Код: |
DT = DateTime();
DW = DayOfWeek();
CHANGE = IIf(C - Ref(C, -1) > 0, 1, 0);
str = si = "";
ch = count = 0;
for(i = 1; i < BarCount; i++)
{
if(i == 1)
fdelete( Name() + ".csv" );
if(DW[i] == 1)
{
ch = CHANGE[i];
fh = fopen( Name() + ".csv", "a");
if( fh )
{
fputs(str + "\n", fh);
fclose( fh );
}
str = DateTimeToStr( DT[i], mode = 1 ) + ", " + "X";
count = 1;
}
else
{
count++;
if(count <= 5)
{
if(DW[i] == count)
{
if( CHANGE[i] == ch)
si = "X";
else
si = "0";
str = str + si;
}
else
{
if(count <= DW[i])
{
si = "";
if(DW[i] - count == 1)
si = "_";
if(DW[i] - count == 2)
si = "__";
if( CHANGE[i] == ch)
si = si + "X";
else
si = si + "0";
str = str + si;
count = Max(DW[i], count);
}
if(DW[i] < count)
count = 6;
}
}
}
}
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shark77
Зарегистрирован: 24.02.2018
Сообщения: 12
|
000 писал(а): |
Как то вот так. Код плохой. Я накидал побыстрому, смотрю если день недели пропущен (торгов не было) т косяк... Я давай лепить заплатки...
Код надо засунуть в АА и сделать Explore. В настройках АА поставить дневки. Код создаст .csv файлы имя_тикера.csv
Код: |
DT = DateTime();
DW = DayOfWeek();
CHANGE = IIf(C - Ref(C, -1) > 0, 1, 0);
str = si = "";
ch = count = 0;
for(i = 1; i < BarCount; i++)
{
if(i == 1)
fdelete( Name() + ".csv" );
if(DW[i] == 1)
{
ch = CHANGE[i];
fh = fopen( Name() + ".csv", "a");
if( fh )
{
fputs(str + "\n", fh);
fclose( fh );
}
str = DateTimeToStr( DT[i], mode = 1 ) + ", " + "X";
count = 1;
}
else
{
count++;
if(count <= 5)
{
if(DW[i] == count)
{
if( CHANGE[i] == ch)
si = "X";
else
si = "0";
str = str + si;
}
else
{
if(count <= DW[i])
{
si = "";
if(DW[i] - count == 1)
si = "_";
if(DW[i] - count == 2)
si = "__";
if( CHANGE[i] == ch)
si = si + "X";
else
si = si + "0";
str = str + si;
count = Max(DW[i], count);
}
if(DW[i] < count)
count = 6;
}
}
}
}
|
|
Буду проверять, большое спасибо. Отпишусь |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Shark77
Зарегистрирован: 24.02.2018
Сообщения: 12
|
000 писал(а): |
Как то вот так. Код плохой. Я накидал побыстрому, смотрю если день недели пропущен (торгов не было) т косяк... Я давай лепить заплатки...
Код надо засунуть в АА и сделать Explore. В настройках АА поставить дневки. Код создаст .csv файлы имя_тикера.csv
Олег, сам не разберусь, выделил ошибку в строке, что может быть? Заранее спасибо.
Код: |
DT = DateTime();
DW = DayOfWeek();
CHANGE = IIf(C - Ref(C, -1) > 0, 1, 0);
str = si = "";
ch = count = 0;
for(i = 1; i < BarCount; i++)
{
if(i == 1)
fdelete( Name() + ".csv" );
if(DW[i] == 1)
{
ch = CHANGE[i];
fh = fopen( Name() + ".csv", "a");
if( fh )
{
fputs(str + "\n", fh);
fclose( fh );
}
[str = DateTimeToStr( DT[i], mode = 1 ) + ", " + "X"; // ОШИБКА
count = 1;
}
else
{
count++;
if(count <= 5)
{
if(DW[i] == count)
{
if( CHANGE[i] == ch)
si = "X";
else
si = "0";
str = str + si;
}
else
{
if(count <= DW[i])
{
si = "";
if(DW[i] - count == 1)
si = "_";
if(DW[i] - count == 2)
si = "__";
if( CHANGE[i] == ch)
si = si + "X";
else
si = si + "0";
str = str + si;
count = Max(DW[i], count);
}
if(DW[i] < count)
count = 6;
}
}
}
}
|
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Какая версия Ами? На что конкретно ругается? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shark77
Зарегистрирован: 24.02.2018
Сообщения: 12
|
000 писал(а): |
Какая версия Ами? На что конкретно ругается? |
Версия 5.7 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Блин. Попробуй заменить строку на str = DateTimeToStr( DT[i] ) + ", " + "X"; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shark77
Зарегистрирован: 24.02.2018
Сообщения: 12
|
000 писал(а): |
Блин. Попробуй заменить строку на str = DateTimeToStr( DT[i] ) + ", " + "X"; |
Спасибо, все работает. Только не пойму где теперь файл искать? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В папке куда установлен Ами. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shark77
Зарегистрирован: 24.02.2018
Сообщения: 12
|
000 писал(а): |
В папке куда установлен Ами. |
Спасибо Вам огромное Олег. жму руку!!! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|