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


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

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

В функции ATR() нельзя использовать переменный период. Только константа.

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



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

СообщениеДобавлено: Чт Сен 24, 2015 12:02 pm Ответить с цитатой Вернуться к началу

000 писал(а):
В функции ATR() нельзя использовать переменный период. Только константа.


If you are referring to my previous post... look carefully! The function by TJ uses AMA together with ATR(1)!!

And it does allow array period!

Код:
// variable period ATR
function vpATR( period )
{ // by T. Janeczko
    TrueRange = ATR( 1 );
    return IIf( Cum(1) > period, AMA( TrueRange, 1 / period ), Null );
}

newday = DateNum() != Ref( DateNum(), -1 );

Plot( vpATR( BarsSince( newday ) + 1 ), "vpATR with variable period", colorRed );

Plot( vpATR( 10 ), "vpATR with constant 10", colorYellow );

Plot( ATR( 10 ), "built-in ATR with constant 10", colorOrange );
Посмотреть профиль Отправить личное сообщение
home30



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

СообщениеДобавлено: Чт Сен 24, 2015 2:33 pm Ответить с цитатой Вернуться к началу

А в функцию ROC () можно подсунуть переменный период ?
Посмотреть профиль Отправить личное сообщение
trashfx



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

СообщениеДобавлено: Чт Сен 24, 2015 9:28 pm Ответить с цитатой Вернуться к началу

home30 писал(а):
А в функцию ROC () можно подсунуть переменный период ?


Код:
function vpROC( array, period )
{
    Refarray = Ref( array, -period );
    diff = array - Refarray;
    return 100 * Nz( diff / Refarray );
}
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Сен 24, 2015 9:47 pm Ответить с цитатой Вернуться к началу

Вот список функций куда можно засунуть переменный период
Цитата:
AMA
AMA2
DEMA
HHV
HHVBars
LinRegSlope
LinearReg
LinRegIntercept
LLV
LLVBars
MA
Ref
StdErr
Sum
TEMA
TSF
WMA

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



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

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

Олег, а как закодить такую ситуацию, как на картинке. Цена под параболиком.Первый раз лоу свечи пересекает боллинджер, тут не входим. Далее следует отскок от боллинджера. Под отскоком понимаем закрытие свечи лоу свечи выше боллинджера. А вот когда в следущий раз лоу свечи пересечет боллинджер, то входим в лонг.
Вобщем, пока нет отскока, то не входим.
Соответственно для шорта, наоборот. Как только цена перескочила параболик, ждем пересечения хая с боллинджерем, потом ждем отскока (хай свечи ниже боллинджера) и на следующем пересечении входим в щорт.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Окт 06, 2015 1:05 am Ответить с цитатой Вернуться к началу

Типа так
Код:
BBBot = ...;
parab = ...;
BuyCond = Flip(Ref(L < BBBot AND C > BBot, -1) AND C < parab AND Ref(C < parab, -1), Cross(C, parab));
Buy = BuyCond AND L < BBBot;
BuyPrice = BBBot;

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



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

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

000 писал(а):
Типа так
Код:
BBBot = ...;
parab = ...;
BuyCond = Flip(Ref(L < BBBot AND C > BBot, -1) AND C < parab AND Ref(C < parab, -1), Cross(C, parab));
Buy = BuyCond AND L < BBBot;
BuyPrice = BBBot;

Спасибо. Для случая как на картинке работает. Т.е. если отскок от боллинджера происходит сразу после одной свечи.
Но вот если лоу двух или более свечей подряд стоят ниже боллинджера, тогда входит сразу на второй свече, не дожидаясь отскока вот по этому условию из твоего кода:
Код:

...(Ref(L < BBBot AND C > BBot, -1)...

Что тут еще то добавить ? Мы же не знаем, сколько свечей подряд будет прокалывать боллинджер и у скольких свечей будет рисоваться отскок, т.е. лоу будет выше боллинджера.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

А надо обязательно чтобы после касания была свечка у которой лой не касается болинджера? Я этого не понял.

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


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

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

Тогда так

Код:
BuyCond = Flip( Ref(L < BBBot, -1) AND L > BBot AND C < parab AND Ref(C < parab, -1), Cross(C, parab) );

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



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

СообщениеДобавлено: Чт Окт 08, 2015 10:55 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Тогда так

Код:
BuyCond = Flip( Ref(L < BBBot, -1) AND L > BBot AND C < parab AND Ref(C < parab, -1), Cross(C, parab) );

Немного изменил условия входа, потому как в реале боллинджер рисуется по другому. На картинке условие. Первый перелой болинжера, потом отскок. Когда второй перелой, то запоминаем лой это свечи как уровень входа BuyLevel. Если на следующих свечах происходит пересечение этого уровня входа, тогда покупаем. Если пересечения с BuyLevel не было, то на перескоке параболика, BuyLevel обнуляем и ждем, когда выполнится следующее условие. И т.д.
Написал так
Код:

...
BuyLevel = ValueWhen(Flip( Ref(L < BBB, -1) AND L > BBB AND C < parab AND Ref(C < parab, -1), Cross(C, parab)),L);
Buy=Cross(BuyLevel,L);
BuyPrice=BuyLevel;
...

Уровень вроде запоминает, но не пойму, как на ближайшем параболике его обнулить ? Что нужно добавить ? А то он держит BuyLevel до тех пора, пока в лонг не войдет и не важно, сколько раз уже параболик переворачивался.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Код:
BuyCond = Flip( Ref(L < BBBot, -1) AND L > BBot AND C < parab AND Ref(C < parab, -1), Cross(C, parab) );
BuyLevel = ValueWhen( Ref(L < BBB, -1) AND L > BBB AND C < parab AND Ref(C < parab, -1), L );
BuyLevel = BuyLevel*BuyCond;

Buy=Cross(BuyLevel,L);
BuyPrice=BuyLevel;

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



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

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

000 писал(а):
Код:
BuyCond = Flip( Ref(L < BBBot, -1) AND L > BBot AND C < parab AND Ref(C < parab, -1), Cross(C, parab) );
BuyLevel = ValueWhen( Ref(L < BBB, -1) AND L > BBB AND C < parab AND Ref(C < parab, -1), L );
BuyLevel = BuyLevel*BuyCond;

Buy=Cross(BuyLevel,L);
BuyPrice=BuyLevel;

Да,спасибо. Только по условию BuyLevel - это у нас лоу свечи на втором перелое болинжера. Исправил на такое
Код:

BuyLevel = ValueWhen( L > BBB AND C < parab AND Ref(C < parab, -1), L );

Для лонга работает. С шортом что-то туплю. Опишу еще раз условия. После перескока параболика (цена стала выше параболика) ждем перехая болинжера (хай свечи нарисовался выше болинжера). Далее отскок. Хай свечи или свечей ниже болинжера. Когда происходит второй перехай болинжера, запоминаем хай это свечи в качестве ShortLevel. Когда цена пересекает ShortLevel, то входим шорт. Все это пока цена выше параболика. Как только цена ушла под параболик, все отменяем, считаем условия для лонга. Потом перескок и снова считаем для шорта. Написал так
Код:

BBT=BBandTop...; // это верхний болинжера
Parab=...;
ShortCond=Flip(Ref(H > BBT, -1) AND H < BBT AND C > parab AND Ref(C > parab, -1), Cross(parab,C) );
ShortLevel=ValueWhen(H> BBT AND C > parab AND Ref(C > parab, -1), H );
ShortLevel=ShortCond*ShortLevel;
Short = Cross(H,ShortLevel) AND TradeTime;
ShortPrice= ShortLevel;

Считает фигню для шорта, не пойму в чем дело.
Посмотрел еще раз. Лонг тоже неправильно. Запоминает BuyLevel на первом перелоу болинжера, для шорта на первом перехае.
Посмотреть профиль Отправить личное сообщение
home30



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

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

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


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

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

Наверное как то так
Код:
ShortCond1 = Flip( Ref( H > BBT, -1 ) AND H < BBT AND C > parab AND Ref(C > parab, -1), Cross(parab, C) );
ShortCond2 = Ref( ShortCond1, -1 ) AND ShortCond1 AND Ref( H > BBT, -1 ) AND H < BBT;
ShortCond2On = Flip( ShortCond2, Cross(parab, C) );
ShortLevel = ValueWhen( ShortCond2, H );
Short = Cross(H, ShortLevel) AND TradeTime AND ShortCond2On;
ShortPrice= ShortLevel;

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen