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





СообщениеДобавлено: Ср Май 21, 2008 8:36 am Ответить с цитатой Вернуться к началу

Несколько вопросов...

1. можно ли в Ами сделать двумерный массив, если нет как это обойти?
2. как в Массив записать свои данные, например последовательность единиц и нулей? ( метатрйдере например так: array[] = {0,1,0,0,1}Wink

3. если пишу так, то тестер находит такие ситуации:

Код:
Buy = (High[1]>High[2]);
Sell=0;
SetTradeDelays( 1, 1, 1, 1 );
BuyPrice =  Open[0];


а если так, то нет ни одной сделки.
Код:

Buy = (High[2]>High[3]);
Sell=0;
SetTradeDelays( 1, 1, 1, 1 );
BuyPrice =  Open[0];


хочу потестить свечные камбинации...
000
Site Admin


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

СообщениеДобавлено: Ср Май 21, 2008 12:20 pm Ответить с цитатой Вернуться к началу

Цитата:
1. можно ли в Ами сделать двумерный массив, если нет как это обойти?

Нельзя. Придется создать много одномерных массивов. Посмотри функции VarSet() и VarGet(). Имей ввиду, что в Ами практически нет разницы между массивом и переменной.

Цитата:
2. как в Массив записать свои данные, например последовательность единиц и нулей? ( метатрйдере например так: array[] = {0,1,0,0,1}

Так нельзя. Если массив не длинный, то напиши
array[0] = 1;
array[1] = 0;
.....
Или через цикл если есть закономерность значения элементов

Цитата:

3. если пишу так, то тестер находит такие ситуации:
Код:

Buy = (High[1]>High[2]);
Sell=0;
SetTradeDelays( 1, 1, 1, 1 );
BuyPrice =  Open[0];


Неправильно пишешь.
Указывая в квадратных скобках цифру ты задаешь конкретный элемент массива (Open[0] это открытие самого первого бара на графике)
Надо так
Код:

SetTradeDelays( 1, 1, 1, 1 );
Buy = H > Ref(H, -1);
Sell = 0;
BuyPrice =  Open;

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





СообщениеДобавлено: Ср Май 21, 2008 3:13 pm Ответить с цитатой Вернуться к началу

спасибо за ответ, всего пару дней разбираюсь.

Мне бы такую штуку нужно соорудить.


Код:

// тут функции сравнивающие хай, клоузи и пр. например
function HH(pos, massiv) // тут сравниваем соседние хаи.
{
result=False;

if (massiv==0)
 if (Ref(H,pos) < Ref(H,pos-1)) result = True; else result =False;// тут знаю что ошибка, незнаю как правильно.

return result;
}

// А условие для входа собираем из функций например;
// если комбинация напр. из 3х свечек и нам нужно сравнить только их хаи

Buy = HH(i,pattern_code[0])==True  AND  HH(i-1,pattern_code[1])==True;

Sell=0;



Т.е. функция должна получить номер бара сравнить его хай (или лоу и пр.) с соседним (предыдущим) и выдать true\false.
Так мне не нужно будет для каждой комбинации писать отдельный код.
000
Site Admin


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

СообщениеДобавлено: Ср Май 21, 2008 4:38 pm Ответить с цитатой Вернуться к началу

Мы с тобой думаем на разных языках. Smile
1. Сразу имей в виду что AFL работает иначе чем MQL. MQL последовательно пробегает по всем свечкам от начала и до конца чарта, а AFL так не делает. Он сразу генерит массив результатов строки на весь график.

Если напишешь
Код:

HighUp = H > Ref(H, -1);

То в результате получится массив HighUp который будет равен True на всех свечках у которых максимум выше предыдущего.
...

Глянь вот этот код, может будет понятнее http://www.amibroker.com/library/formula.php?id=423

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





СообщениеДобавлено: Чт Май 22, 2008 1:21 pm Ответить с цитатой Вернуться к началу

Начинаю понимать как нужно думать Very Happy
RimiDr
Гость





СообщениеДобавлено: Пт Май 23, 2008 4:09 pm Ответить с цитатой Вернуться к началу

Что это за ошибка такая? Кто знает?

Код:

pattern_code[1] = Optimize( "pattern_code[1]", 1, 1, 2, 1);
pattern_code[2
-------------^

Error 10.
Subscript out of range.
You must not access array elements outside 0..(BarCount-1) range.
000
Site Admin


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

СообщениеДобавлено: Пт Май 23, 2008 4:39 pm Ответить с цитатой Вернуться к началу

Точно не уверен, но скорее всего оптимизируемый параметр не может быть массивом.

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


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

СообщениеДобавлено: Пт Май 23, 2008 4:43 pm Ответить с цитатой Вернуться к началу

Если очень надо сделай так
Код:
pattern_code_1 = Optimize( "pattern_code[1]", 1, 1, 2, 1);
pattern_code_2 = Optimize( "pattern_code[2]", 1, 1, 2, 1);

pattern_code[1] = pattern_code_1;
pattern_code[2] = pattern_code_2;

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





СообщениеДобавлено: Пт Май 23, 2008 9:34 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Если очень надо сделай так
Код:
pattern_code_1 = Optimize( "pattern_code[1]", 1, 1, 2, 1);
pattern_code_2 = Optimize( "pattern_code[2]", 1, 1, 2, 1);

pattern_code[1] = pattern_code_1;
pattern_code[2] = pattern_code_2;


Спасибо, теперь работает.
ID
Советник


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

СообщениеДобавлено: Вт Май 27, 2008 10:17 am Ответить с цитатой Вернуться к началу

Привет!....

В метасе была такая штука: функция FLV по-моему. Она позволяла обращаться к переменным кода без прописывания этого кода в текущем. Ну... кто метас юзал в курсе.

Вопрос: есть ли такой прибамбас в Ами?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Май 27, 2008 8:57 pm Ответить с цитатой Вернуться к началу

В метасе fmlvar( "FORMULA_NAME", "VARIABLE_NAME")

В ами аналога нет. Только #include

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



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

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

Привет господа!

Как написать вот такой стоп?
— выходить на прибыльном открытии с задержкой N дней.
Т. е. после покупки ждем несколько дней, если есть прибыль выходим по open. Если нет, проверяем следующий бар.
Так на первом прибыльном открытии
Код:
ApplyStop( stopTypeProfit, stopModePoint, 1, ExitAtStop = 0,
volatile = True );
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

К сожалению простого способа вроде нет.
В этой ветке http://amisite.ru/phpBB2/viewtopic.php?t=5&postdays=0&postorder=asc&start=60 начиная с 22 мая разбирается похожая идея.

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



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

СообщениеДобавлено: Пт Май 30, 2008 12:54 am Ответить с цитатой Вернуться к началу

polekoff писал(а):
Привет господа!

Как написать вот такой стоп?
— выходить на прибыльном открытии с задержкой N дней.
Т. е. после покупки ждем несколько дней, если есть прибыль выходим по open. Если нет, проверяем следующий бар.
Так на первом прибыльном открытии
Код:
ApplyStop( stopTypeProfit, stopModePoint, 1, ExitAtStop = 0,
volatile = True );

Чем отличается от долгосрочного вложения непойму. У Вас может цена никода не выйти в +, т.е. через N и 2N и через 3N будет -. Как вы собираетесь фиксировать убыток?
Посмотреть профиль Отправить личное сообщение
ID
Советник


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

СообщениеДобавлено: Пт Май 30, 2008 3:59 am Ответить с цитатой Вернуться к началу

polekoff писал(а):
Привет господа!

Как написать вот такой стоп?...

[/code]


Привет, я как-то тестировал бездоходный выход.
Вот код:


Код:
n1=Param("day",1,0,30,1);

Buy=Cross(MA(C,28),MA(C,35));
BuyPrice=O+0.0005;

rlong=C-ValueWhen(Ref(Buy,-1),O+0.0005,1);

Sell=BarsSince(Buy)==n1 AND rlong<0;
SellPrice=O;

Short=Cross(MA(C,35),MA(C,28));
ShortPrice=O-0.0005;

rshort=ValueWhen(Ref(Short,-1),O-0.0005,1)-C;

Cover=BarsSince(Short)==n1 AND rshort<0;
CoverPrice=O;


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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen