Автор |
Сообщение |
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
Доброго времени суток это мое дебютное сообщение на этом форуме. Решил перейти с WLD на amibroker и что-то у меня со скрипом получается
весь код с этого сайта
Пример первый
Код: |
SetTradeDelays(0, 0, 0, 0);
FrUp = H > Ref(H, -1) AND Ref(H, -1) > Ref(H, -2) AND H > Ref(H, 1) AND Ref(H, 1) > Ref(H, 2);
UpLevel = ValueWhen(FrUp, H);
|
получается frup некое условие и если H соответствует этому условию то UpLevel = H.
Но я не пойму в этом условии H > Ref(H, 1) AND Ref(H, 1) > Ref(H, 2) как это получается что амиброкер смотрит в будущее ведь H это настоящие.
Нечего не пойму понять!
Вопрос второй
в WLD все в массиве и чтобы обрабатывать бары применять к ним какието условия я должен делать все в цикле в коде что я написал выше я не вижу никого цикла.
Как это все работает????
И последний вопрос может существуют где нибудь примеры.
к примеру разукрасить на графике потерны, простейшие стратегии и т.д. Очень трудно понять язык имея только справку.
Спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
И вот еще что чем отличается H от High? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Osiris
Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk
|
Привет!
H и Hight - это одно и то же.
Ref(H, 1) - это свеча сдвинутая на один бар вперёд, т.е. подглядывание.
Ref(H, -1) - сдвиг назад на один бар.
В твоём коде цикла нет, да и вообще он не обязателен, простые вещи можно без него закодить.
Коллекция исходных кодов, стянутая с Amibroker online library. Содержит около 580 файлов разной тематики, лежит на пауке:
http://forex.kbpauk.ru/showflat.php/Cat/0/Number/267946/an/0/page/1#Post267946 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
вот еще что не понятно
предположим есть сигнал и нужно после сигнала покупать
buy = Cross(close, UpLevel);
что происходит если цена пересечет уровень с низу вверх и закроется выше уровня. То произойдет покупка. По логике так-как был close значит покупка произойдет по цене открытия следующего бара. Правильно?
А как написать если цена только пересекла с низу вверх а закрытие не произошло?
buy = Cross(high, UpLevel); так будет правильно?
а где и по какой цене произойдет сделка????
И как выставить лимитированную заявку на покупку?
buy = Cross(close, UpLevel);
BuyPrice = XXX; так будет правильно??? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
я почему спрашиваю не могу понять что там тестер выдает.
...
buy = Cross(close, UpLevel);
PlotShapes( shapeUpArrow * Buy + shapeDownArrow * Sell, IIf( Buy, colorGreen, colorRed ) );
Запускаю тестер и он мне все тестирует.
Рисует стрелку сделки где был сигнал
И в отчете пишет что купил он на этом же баре и по цене закрытия.
Как такое может произойти бар уже закрылся????!!!! он должен был купить на следующем баре.
В WLD я бы написал так
if CrossOver( bar, #close, UpLevel)
BuyAtMarker(bar+1,"");
если цена пересекла уровень и закрылась выше уровня значит купить на следующем баре! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
snowkam писал(а): |
вот еще что не понятно
предположим есть сигнал и нужно после сигнала покупать
buy = Cross(close, UpLevel);
что происходит если цена пересечет уровень с низу вверх и закроется выше уровня. То произойдет покупка. По логике так-как был close значит покупка произойдет по цене открытия следующего бара. Правильно?
А как написать если цена только пересекла с низу вверх а закрытие не произошло?
|
Если пишешь Cross(close, UpLevel) то никакие другие цены кроме закрытия код не смотрит и сделка будет осуществлена только если закрытие было ниже UpLevel а на следующем баре стала выше.
snowkam писал(а): |
buy = Cross(high, UpLevel); так будет правильно?
а где и по какой цене произойдет сделка????
|
Эта запись будет обозначать покупку если хай бара превысил UpLevel. Сделка при такой записи будет по ценам сделак установленных в настройках по умолчанию.
snowkam писал(а): |
И как выставить лимитированную заявку на покупку?
buy = Cross(close, UpLevel);
BuyPrice = XXX; так будет правильно??? |
Нет. Правильно так.
Код: |
buy = Cross(High, UpLevel);
BuyPrice = UpLevel;
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
Вот посмотри на скрине Бар который удовлетворил условию
Cross(close, UpLevl);
во втором скрине тестер осуществил сделку. Как он мог купить на этом же баре по цене закрытия. Он должен быть купить по какой угодно но только не по этой цене НА СЛЕДУЮЩЕМ баре.
Цена закрылась все бар в прошлом следующий бар настоящие здесь он должен был купить!!!!
Как сделать чтобы после сигнала покупка произошла по рынку на следующем баре? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
Опять вопрос, вы уж извините но он с картинками
Вот взял код прям от сюда для экскрементов
var1=ValueWhen(
(Ref(H,-2) > Ref(H, -4)) AND
(Ref(H,-2) > Ref(H, -3)) AND
(Ref(H,-2) > Ref(H, -1)) AND
(Ref(H,-2) > H), Ref(H,-2),1);
FractalUp=HighestSince(var1>0,var1,1);
var2=
(Ref(L,-2) <= Ref(L, -1)) AND
(Ref(L,-2) <= Ref(L, 0)) AND
(Ref(L,-2) <= Ref(L, -3)) AND
(Ref(L,-2) <= Ref(L, -4));
FractalDown=ValueWhen( var2,Ref(L,-2),1);
Plot(FractalUp, "FrUp_V", colorWhite, 1);
Plot(FractalDown, "FrDown_V", colorWhite, 1);
Buy = Cross(Close, FractalDown);
Sell = Cross(Close, FractalUp);
PlotShapes( shapeUpArrow * Buy + shapeDownArrow * Sell, IIf( Buy, colorGreen, colorRed ) );
почему сделка произошла не по пересечению уровня а по пересечению линии? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Osiris
Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk
|
Код: |
Buy = Cross(Ref(Close,-1), Ref(UpLevel,-1));
BuyPrice = Open; |
Если прошлый бар закрылся выше прошлого уровня, то на открытии нового бара покупаем. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
snowkam писал(а): |
Вот посмотри на скрине Бар который удовлетворил условию
Cross(close, UpLevl);
во втором скрине тестер осуществил сделку. Как он мог купить на этом же баре по цене закрытия. Он должен быть купить по какой угодно но только не по этой цене НА СЛЕДУЮЩЕМ баре.
Цена закрылась все бар в прошлом следующий бар настоящие здесь он должен был купить!!!!
Как сделать чтобы после сигнала покупка произошла по рынку на следующем баре? |
Тестер не настолько умный чтобы определять когда и почем покупать. По какой цене и когда он совершит сделку ему надо сообщать самостоятельно. Почитай http://www.amisite.ru/begin/bk_set3.htm
Чтобы сделка была на следующем баре по открытию ставь dalay 1, а price Open. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
я все учусь на этих фракталах опять не выходит
вот условие
var1=ValueWhen(
(Ref(H,-2) > Ref(H, -4)) AND
(Ref(H,-2) > Ref(H, -3)) AND
(Ref(H,-2) > Ref(H, -1)) AND
(Ref(H,-2) > H), Ref(H,-2),1);
FractalUp=HighestSince(var1>0,var1,1);
var2=
(Ref(L,-2) <= Ref(L, -1)) AND
(Ref(L,-2) <= Ref(L, 0)) AND
(Ref(L,-2) <= Ref(L, -3)) AND
(Ref(L,-2) <= Ref(L, -4));
FractalDown=ValueWhen( var2,Ref(L,-2),1);
Plot(FractalUp, "FrUp_V", colorWhite, 1);
Plot(FractalDown, "FrDown_V", colorWhite, 1);
Buy = Cross(Close, FractalDown);
Sell = Cross(Close, FractalUp);
ну понятно покупаем если цена пересекает уровень FractalDown
Теперь маленько усложним задачу и вот здесь у меня затор к примеру если фрактал выше предыдущего и цена пересекает последний.
по идеи код должен быть такой
BuyTrendUp = FractalDown > ref(FractalDown, -1);
BuyCrossFractalDown = Cross(Close, FractalDown);
Buy = BuyTrendUp and BuyCrossFractalDown;
Sell = Cross(Close, FractalUp);
И вот эта вещь не работает ни одной сделки может я чтото не правильно сделал. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
ой извините это я запарился вопрос снят. такого не может быть! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
snowkam
Зарегистрирован: 12.07.2010
Сообщения: 62
|
а как написать если выражение верно то купить по цене такой?
Пример
если FractalDown > ref(FractalDown, -1); то выставить заявку на покупку по цене FractalUp |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Osiris
Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk
|
snowkam писал(а): |
а как написать если выражение верно то купить по цене такой?
Пример
если FractalDown > ref(FractalDown, -1); то выставить заявку на покупку по цене FractalUp |
Код: |
Buy = FractalDown > ref(FractalDown, -1);
BuyPrice = FractalUp; |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|