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



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

СообщениеДобавлено: Чт Авг 21, 2014 5:53 pm Ответить с цитатой Вернуться к началу

icebraiker писал(а):
Подскажите, пожалуйста, можно ли написать цикл,который будет заглядывать вперёд? Допустим, открыта позиция BUY. Мне нужно, чтобы цикл пошёл вперёд, посмотрел: есть ли дальше SELL. Если есть, то вернул цену SELLPRICE c этого бара, а если нет, то дошёл бы до правого края и вернул NULL.
И ещё желательно, чтобы цикл совершал это действие за одно сканирование одного бара в тестере.


вот один из вариантов, будет работать если покупи и продажи идут последовательно.
Код:
SetBarsRequired(sbrAll);

Buy = Cross(MA(C,3), MA(C, 10));
Sell = Cross(MA(C, 10), MA(C,3));
Plot(MA(C,3), "MA1", colorBlue);
Plot(MA(C,10), "MA2", colorGreen);

Price1 = Null; buy_idx = 0;
for (i=1;i<BarCount;i++) {
  if (Buy[i]) { buy_idx = i; }
  if (Sell[i]) { Price1[buy_idx] = SellPrice[i]; }
}

// в массиве Price1 буду цены первой продажи для покуки
Plot(Price1, "PRICE", colorRed);

PlotShapes(Buy   * shapeSmallUpTriangle,   colorGreen, 0, L);
PlotShapes(Sell  * shapeSmallDownTriangle, colorBlue,  0, H);
Посмотреть профиль Отправить личное сообщение
icebraiker



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

СообщениеДобавлено: Чт Авг 21, 2014 7:04 pm Ответить с цитатой Вернуться к началу

Ну, не знаю... Я кинул эту формулу в редактор, потом на индикатор - pricel красным нигде не отрисовывается. Да и так, глядя на код, видно что тут что-то не так. И ещё, само начало цикла for (i=1;i<BarCount;i++) говорит о том, что цикл идёт с левого края до текущего бара. (Из инструкции по AFL я понял, что BarCount-1 это текущий бар.) Здесь нужна какая-то другая запись.
Посмотреть профиль Отправить личное сообщение
yser



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

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

icebraiker писал(а):
Ну, не знаю... Я кинул эту формулу в редактор, потом на индикатор - pricel красным нигде не отрисовывается. Да и так, глядя на код, видно что тут что-то не так. И ещё, само начало цикла for (i=1;i<BarCount;i++) говорит о том, что цикл идёт с левого края до текущего бара. (Из инструкции по AFL я понял, что BarCount-1 это текущий бар.) Здесь нужна какая-то другая запись.

price1 можно увидеть если сильно-сильно присмотреться, там ведь 1 точка.
встань курсором на пересечение двух средних где получается сигнал на покупку и посмотри на строку где отображаются значения увидишь значение цены соответствующее цене продажи
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Авг 21, 2014 10:28 pm Ответить с цитатой Вернуться к началу

X-Story писал(а):
Всем привет!

ЧТо-то туплю по АЛертам. ВОт к примеру ТФ 10 мин.

Код:
AlertIf(RSIPSV>=50,
"EXEC  D:\\Program Files (x86)\\AmiBroker\\Bunner\\SignalUp10min.jpg", "Вверх", 0,1+2+4+8,1);


Нифига не выводит нарисованную мной картинку с текстом. А как просто рамку с текстом на центр экрана вывести, так и не понял.

Код:
AlertIf(RSIPSV>=50,
"SOUND D:\\Program Files (x86)\\AmiBroker\\Sound\\Signal10min.wav" , "Вверх", 0,1+2+4+8,1);


Звук выводится. но повторы не устраняются. Дербанит каждую минуту.

Я с алертами так и не разобрался. То работают, то нет. Не знаю от чего зависит.

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


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

СообщениеДобавлено: Чт Авг 21, 2014 10:32 pm Ответить с цитатой Вернуться к началу

icebraiker писал(а):
Подскажите, пожалуйста, можно ли написать цикл,который будет заглядывать вперёд? Допустим, открыта позиция BUY. Мне нужно, чтобы цикл пошёл вперёд, посмотрел: есть ли дальше SELL. Если есть, то вернул цену SELLPRICE c этого бара, а если нет, то дошёл бы до правого края и вернул NULL.
И ещё желательно, чтобы цикл совершал это действие за одно сканирование одного бара в тестере.

Ну функция ValueWhen может замечательно смотреть вправо. Только надо там отрицательный параметр использовать.
Код:
ValueWhen(EXPRESSION, ARRAY, n = 1)

Returns the value of the ARRAY when the EXPRESSION was true on the n -th most recent occurrence. Note: this function allows also 0 and negative values for n - this enables referencing future

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



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

СообщениеДобавлено: Пт Авг 22, 2014 12:40 am Ответить с цитатой Вернуться к началу

000 писал(а):

Я с алертами так и не разобрался. То работают, то нет. Не знаю от чего зависит.



Жаль, конечно! Но я все понимаю! Тут явный глюк разработчиков. Ладно! как есть. ЧТо нибудь придумаю. В любом случае, спасибо! Smile

У меня есть еще одна серьезная проблема с АА. Я тебе, Олег, по почте скинул. Заманался торкаться.... Может чего я туплю? Но не понимаю в чем! Или все же глюк Ами! Хотя если глюк, то мне не легче.

Не хочется писать код через одно место. Тем более, что я программер никакой.
Посмотреть профиль Отправить личное сообщение
icebraiker



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

СообщениеДобавлено: Пт Авг 22, 2014 4:56 pm Ответить с цитатой Вернуться к началу

Спасибо всем за помощь. Только я и хотел сделать замену valuewhen. Цикл позволяет менять параметры внутри себя, а функция нет. Видимо язык AFL не позволяет этого сделать.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Авг 22, 2014 8:33 pm Ответить с цитатой Вернуться к началу

А зачем надо в данном случае менять параметр функции?
Вообще старайся циклами не пользоваться. Функции работают ГОРАЗДО быстрее.

Если объяснишь зачем менять параметр и какой, то покажу как это сделать цикле.

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


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

СообщениеДобавлено: Пн Сен 22, 2014 11:37 pm Ответить с цитатой Вернуться к началу

Привет!

Написал простейший код:

Код:
// Перехожу на недельки
TimeFrameSet(inWeekly);

// Определяю максимум
Hmax=IIf(   Ref(H,-1)>H AND Ref(H,-1)>Ref(H,-2),Ref(H,-1),
         ValueWhen(Ref(H,-1)>H AND Ref(H,-1)>Ref(H,-2),Ref(H,-1),1));

// Определяю минимум
Lmin=IIf(   Ref(L,-1)<L AND Ref(L,-1)<Ref(L,-2),Ref(L,-1),
         ValueWhen(Ref(L,-1)<L AND Ref(L,-1)<Ref(L,-2),Ref(L,-1),1));

// Ухожу назад на дневки
TimeFrameRestore();

// Покупать, когда цена пересекает недельный максимум снизу
Buy = Cross(H,HMAx);

// Цена покупки - это уровень экстремума
//BuyPrice = Ref(HMAx,-1);

// Держим позицию один день
//Sell = BarsSince(Buy==1);

// Цена закрытия длинной позиции - это закрытие дня.
//SellPrice = Close;

Short = 0;
Cover = 0;

PlotShapes(shapeUpArrow*Buy,colorGreen,0,L-0.0015);
//PlotShapes(shapeDownArrow*Sell,colorRed,0,H+0.0015);

//PlotShapes(shapeDownArrow*Short,colorOrange,0,H+0.0015);
//PlotShapes(shapeUpArrow*Cover,colorBlue,0,L-0.0015);

Plot(TimeFrameExpand(Hmax,inWeekly),"Hmax",colorGreen,1);
Plot(TimeFrameExpand(Lmin,inWeekly),"Lmin",colorRed,1);


А он не все мне точки покупки показывает. Например, вот тут в месте красной точки покупки нет http://gyazo.com/2ac0fde0e916233e5ee2531f5876880a . Подскажите плизз почему?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Сен 22, 2014 11:44 pm Ответить с цитатой Вернуться к началу

Цитата:
// Ухожу назад на дневки
TimeFrameRestore();

// Покупать, когда цена пересекает недельный максимум снизу
Buy = Cross(H,HMAx);

А экспандить HMAx кто за тебя будет?

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


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

СообщениеДобавлено: Вт Сен 23, 2014 9:53 am Ответить с цитатой Вернуться к началу

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


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

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

Пожалуйста. Laughing

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



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

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

Помогите разобраться. Необходим сильно сглаженный ATR с неким множителем, но заметил, что значения различаются
Код:
Mn= Param("step", 2, 1,3, 0.1);
X = Param("x", 425, 200,500, 25);
step = Mn* ATR(X);

Специально сделал отрисовку, и значения не совпадают. Думал из-за того, что большой период, но на маленьких то же самое((

_________________
Деда Мороза не существует!!!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Не понял, что значит значения не совпадают???? Не совпадают с чем?

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



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

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

ATR не равен удвоенному ATR по этой формуле

_________________
Деда Мороза не существует!!!
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen