Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 След. |
Автор |
Сообщение |
yser
Зарегистрирован: 30.11.2011
Сообщения: 76
|
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); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
icebraiker
Зарегистрирован: 19.05.2011
Сообщения: 15
|
Ну, не знаю... Я кинул эту формулу в редактор, потом на индикатор - pricel красным нигде не отрисовывается. Да и так, глядя на код, видно что тут что-то не так. И ещё, само начало цикла for (i=1;i<BarCount;i++) говорит о том, что цикл идёт с левого края до текущего бара. (Из инструкции по AFL я понял, что BarCount-1 это текущий бар.) Здесь нужна какая-то другая запись. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
yser
Зарегистрирован: 30.11.2011
Сообщения: 76
|
icebraiker писал(а): |
Ну, не знаю... Я кинул эту формулу в редактор, потом на индикатор - pricel красным нигде не отрисовывается. Да и так, глядя на код, видно что тут что-то не так. И ещё, само начало цикла for (i=1;i<BarCount;i++) говорит о том, что цикл идёт с левого края до текущего бара. (Из инструкции по AFL я понял, что BarCount-1 это текущий бар.) Здесь нужна какая-то другая запись. |
price1 можно увидеть если сильно-сильно присмотреться, там ведь 1 точка.
встань курсором на пересечение двух средних где получается сигнал на покупку и посмотри на строку где отображаются значения увидишь значение цены соответствующее цене продажи |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
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
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
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
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
X-Story
Зарегистрирован: 29.01.2008
Сообщения: 158
|
000 писал(а): |
Я с алертами так и не разобрался. То работают, то нет. Не знаю от чего зависит. |
Жаль, конечно! Но я все понимаю! Тут явный глюк разработчиков. Ладно! как есть. ЧТо нибудь придумаю. В любом случае, спасибо!
У меня есть еще одна серьезная проблема с АА. Я тебе, Олег, по почте скинул. Заманался торкаться.... Может чего я туплю? Но не понимаю в чем! Или все же глюк Ами! Хотя если глюк, то мне не легче.
Не хочется писать код через одно место. Тем более, что я программер никакой. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
icebraiker
Зарегистрирован: 19.05.2011
Сообщения: 15
|
Спасибо всем за помощь. Только я и хотел сделать замену valuewhen. Цикл позволяет менять параметры внутри себя, а функция нет. Видимо язык AFL не позволяет этого сделать. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А зачем надо в данном случае менять параметр функции?
Вообще старайся циклами не пользоваться. Функции работают ГОРАЗДО быстрее.
Если объяснишь зачем менять параметр и какой, то покажу как это сделать цикле. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
ID
Советник
![](images/avatars/72733707748b3577003dcb.gif)
Зарегистрирован: 07.01.2008
Сообщения: 370
|
Привет!
Написал простейший код:
Код: |
// Перехожу на недельки
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 . Подскажите плизз почему? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
// Ухожу назад на дневки
TimeFrameRestore();
// Покупать, когда цена пересекает недельный максимум снизу
Buy = Cross(H,HMAx); |
А экспандить HMAx кто за тебя будет? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
ID
Советник
![](images/avatars/72733707748b3577003dcb.gif)
Зарегистрирован: 07.01.2008
Сообщения: 370
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Пожалуйста. ![Laughing](images/smiles/icon_lol.gif) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
Помогите разобраться. Необходим сильно сглаженный ATR с неким множителем, но заметил, что значения различаются
Код: |
Mn= Param("step", 2, 1,3, 0.1);
X = Param("x", 425, 200,500, 25);
step = Mn* ATR(X); |
Специально сделал отрисовку, и значения не совпадают. Думал из-за того, что большой период, но на маленьких то же самое(( |
_________________ Деда Мороза не существует!!! |
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не понял, что значит значения не совпадают???? Не совпадают с чем? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
ATR не равен удвоенному ATR по этой формуле |
_________________ Деда Мороза не существует!!! |
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|