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



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

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

Всем привет.
Написал код, согласно которому покупка совершается на Open бара, если ему предшествует последовательность из Х баров закрытых вверх и (Х-1) бар - вниз, закрывается сделка на Close этого же бара.
По итогам хочу получить в исследованиях таблицу.

Приведенный ниже код последовательно добавляет столбцы вправо:
Кол-во баров/ Кол-во сделок/ и т.д./Кол-во баров/ Кол-во сделок/ и т.д./Кол-во баров/ Кол-во сделок/ и т.д.

А хочется, чтобы получилась полноценнная таблица такого вида:
Кол-во баров/ Кол-во сделок/ и т.д.
Кол-во баров/ Кол-во сделок/ и т.д.
Кол-во баров/ Кол-во сделок/ и т.д.

Вот код, который я написал:

a = 3; // Задаю начальное условие. Предыдущие два бара вверх/вниз, третий - наоборот.

for ( y = (a-1); y = 6; y++) // Начинаю Главный цикл, здесь указываю кол-во баров в последовательности

{

SumPUB = SumPUS = 0; // Внутренний цикл. Начинаю исследовать последовательность баров
for( i = 1; i < y; i++ )
{
Diap = Ref (O, -i) - Ref (C, -i);
SumPUB = IIf (Diap<0, SumPUB+1, SumPUB);
SumPUS = IIf (Diap>0, SumPUS+1, SumPUS);
}

UslBuy = SumPUB == (y-1) AND (Ref(O,-y) - Ref(C, -y))>0; // Покупаю, если (а-1) свечей подряд цена идет вверх, а (а) - вниз

UslShort = SumPUS == (y-1) AND (Ref(O,-y) - Ref(C, -y))<0; // Продаю, если (а-1) свечей подряд цена идет вниз, а (а) - вверх

Buy = UslBuy;
BuyPrice = O;
BuyPrice0 = ValueWhen (Buy, BuyPrice); // Запоминаю цену открытия сделки на покупку

Sell = UslBuy;
SellPrice = C;
SellPrice0 = ValueWhen (Sell, SellPrice); // Запоминаю цену закрытия сделки на покупку

Short = UslShort;
ShortPrice = O;
ShortPrice0 = ValueWhen (Short, ShortPrice); // Запоминаю цену открытия сделки на продажу

Cover = UslShort;
CoverPrice = C;
CoverPrice0 = ValueWhen (Cover, CoverPrice); // Запоминаю цену закрытия сделки на продажу

SdelkaBuy = (SellPrice0 - BuyPrice0)*10000-4; // Определяю сделку на покупку в пунктах, с учетом спрэда 4 пункта
SdelkaShort = (ShortPrice0 - CoverPrice0)*10000-4; //Определяю сделку на продажу в пунктах, с учетом спрэда 4 пункта

SdelkaBuy = IIf (Buy, SdelkaBuy, 0);
SumSdelkaBuy = Cum (SdelkaBuy); //Считаю сумму пунктов по покупке
SdelkaShort = IIf (Short, SdelkaShort, 0);
SumSdelkaShort = Cum (SdelkaShort); //Считаю сумму пунктов по продаже

PosBuy = IIf (Buy, 1, 0);
SumPosBuy = Cum (PosBuy); //Считаю кол-во сделок на покупку

PosShort = IIf (Short, 1, 0);
SumPosShort = Cum (PosShort); //Считаю кол-во сделок на продажу

SumPos = SumPosBuy + SumPosShort;
TipPosl = y-1;

}

Filter = DateNum() == 1121130 AND TimeNum() == 235500;;

AddColumn (TipPosl, "Тип последовательности", format = 1, textColor = colorDefault, bkgndColor = colorDefault);
AddColumn (SumPos, "Всего сделок", format = 1, textColor = colorDefault, bkgndColor = colorDefault);
AddColumn (SumPosBuy, "Кол-во сделок покупка", format = 1, textColor = colorDefault, bkgndColor = colorDefault);
AddColumn (SumPosShort, "Кол-во сделок продажа", format = 1, textColor = colorDefault, bkgndColor = colorDefault);
AddColumn (SumSdelkaBuy, "Сумма пунктов покупка", format = 1, textColor = colorDefault, bkgndColor = colorDefault);
AddColumn (SumSdelkaShort, "Сумма пунктов продажа", format = 1, textColor = colorDefault, bkgndColor = colorDefault);

Просьба оказать помощь.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Нарисуй как выводит и как надо.
Ну как выводит я и сам могу посмотреть, а вот как надо я не понял.

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



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

СообщениеДобавлено: Ср Дек 26, 2012 6:35 am Ответить с цитатой Вернуться к началу

000 писал(а):
Нарисуй как выводит и как надо.
Ну как выводит я и сам могу посмотреть, а вот как надо я не понял.

Понял.
Пусть надо выводить 5 итого (1,2,3,4,5).
На данный момент выводит так:
123451234512345, то есть одна строка и множество столбцов.
А хочется:
12345
12345
12345
То есть, чтобы кол-во строк соответствовало кол-ву баров в основном условии. Например, исследую последовательность баров длиной от 3 до 6: должна получиться таблица из 4 строк и 5 столбцов.
Блин, сложно изложить на бумаге то, что крутиться в голове.
Но вроде все верно объяснил.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Дек 26, 2012 2:39 pm Ответить с цитатой Вернуться к началу

В общем не очень понял.
Давай опишу как оно работает и что возможно сделать со строками.
Одна строка это один символ и один бар. Т.е. Если исследуется один символ (Apply to) и только один бар, то строка полюбому будет только одна.
Соответственно если символов 2 и бар только один, то и строк 2 и т.д.
Может быть один символ и много баров (зависит от Range)

В разных строках не может быть разное кол-во столбцов.
В одном столбце во всех строках пишется то, что идет под одним заголовком.

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



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

СообщениеДобавлено: Ср Дек 26, 2012 3:30 pm Ответить с цитатой Вернуться к началу

Олег, извини, замучил тебя.
Попробую по другому.
Есть исследуемая последовательность (Y) от 3 до 20 бар. Первый столбец в отчете.
По итогам исследования получаю кол-во сделок Х. Второй столбец в отчете.
Хочу получить вот такой вид:
Y X
3 50
4 65
5 30
------
20 150

На данный момент вот так:
Y X Y X Y X ----------- Y X
3 50 4 65 5 30 20 150

Я написал код, указанный выше, он вообще выдает только последний результат (Y=20), но если перенести действие цикла (вторая скобка }) ниже строчек AddColumn, тогда будет выдавать как я написал на данный момент.
Заранее спасибо.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Дек 26, 2012 4:51 pm Ответить с цитатой Вернуться к началу

Понял. Один вариант.
Делать для каждого количества баров свою строкув одном прогоне.
типа один раз прогнать для 3 и получить строку для Y = 3, в следующий раз для Y = 4 и т.д.

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



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

СообщениеДобавлено: Ср Дек 26, 2012 5:23 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Понял. Один вариант.
Делать для каждого количества баров свою строкув одном прогоне.
типа один раз прогнать для 3 и получить строку для Y = 3, в следующий раз для Y = 4 и т.д.

Понял. Очень жаль.
А через оператор индекса [] никак нельзя?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Ну в принципе можно конечно.
Надо формировать массивы.
[BarCount - 1] одна строка
[BarCount - 2] вторая
и т.д.
Тогда выводим исследование на n последних баров и получаем соответствующую таблицу.
Только вот...
Мы же пишем скрипты чтобы сэкономить время.
По моему Времени на написание уйдет больше, чем в ручную составить такую таблицу из готовых строк.

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



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

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

000 писал(а):
Ну в принципе можно конечно.
Надо формировать массивы.
[BarCount - 1] одна строка
[BarCount - 2] вторая
и т.д.
Тогда выводим исследование на n последних баров и получаем соответствующую таблицу.
Только вот...
Мы же пишем скрипты чтобы сэкономить время.
По моему Времени на написание уйдет больше, чем в ручную составить такую таблицу из готовых строк.

Спасибо за помощь.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen