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



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

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

Всем привет!
подскажите код для простого алгоритма:

Buy если первый час торгов отторговали в плюс. Вход по уровню закрытия этого часа;
Short если первый час торгов отторговали в минус. Вход по уровню закрытия этого часа;

Выход по Close дня. или по стопу на уровне Open дня.


Вот нашел уже составляющие части кода:

Sell = Cover = Day() != Ref(Day(), 1); // выход на последнем баре дня
SellPrice = CoverPrice = C; // выход по цене закрытия

DOpen = TimeFrameGetPrice( "O", inDaily, 0, expandFirst); // сегодняшнее открытие

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


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

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

Всетаки есть вопросы.
1. Определяем отторговали в + или - от сегодняшнего открытия или от вчерашнего закрытия
2. Какой фрейм?

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



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

СообщениеДобавлено: Вт Май 04, 2010 6:43 am Ответить с цитатой Вернуться к началу

Олег здравствуй!
Не важно закрытие предыдущего дня. Важно как прошел первый час торгов.
Допустим, Открытие 1ого часа торгов (а значит открытие дня)по 100 рублей а его закрытие 98.
Значит шорт по 98 со стопом 100. и наоборот, если закрытие 102 то лонг по 102 со стопом 100.

Закрытие позиции в конце дня.

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


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

СообщениеДобавлено: Вт Май 04, 2010 7:31 am Ответить с цитатой Вернуться к началу

Код:

FirstBarInDay = Day() != Ref(Day(), -1);
Buy = C > O AND FirstBarInDay;
Short= C < O AND FirstBarInDay;
BuyPrice = ShortPrice = C;
Sell = Cover = Day() != Ref(Day(), 1);
SellPrice = CoverPrice = C;
ApplyStop(stopTypeLoss, stopModePoint, 100, ExitAtStop = 1, Volatile = False);

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



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

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

Олег спасибо! Но есть проблемка и видимо в первой строчке.

Тест покупает на последнем часе предыдущего дня. И определение направления рынка определяется по нему же


Вернее, он считает что последний час дня это час который закончился в 23-30, соответственно он берет следущий час (якобы первый час следущего дня), который расчитывает с 23-30 до 00-30...а он конечно дает в итоге закрытие предыдщего дня (по последним 20 минутам)

Где-то настройки нужно может поменять?


Последний раз редактировалось: Orange2000 (Вт Май 04, 2010 8:54 am), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Проверяй настройки тестера. У меня все нормально
Цитата:

Ticker,Trade,Date,Price,Ex. date,Ex. Price,% chg,Profit,% Profit,Shares,Position value,Cum. Profit,# bars,Profit/bar,MAE,MFE,Scale In/Out,
GAZP,Long,11.01.2010 10:00:00,193.64,11.01.2010 18:00:00,194.5,0.44%,265.74,0.44%,309,59834.76,265.74,9,29.53,-1.36%,1.68%,0/0
GAZP,Long,12.01.2010 10:00:00,194.45,12.01.2010 18:00:00,191.8,-1.36%,-824.15,-1.36%,311,60473.95,-558.41,9,-91.57,-2.01%,0.69%,0/0
GAZP,Long,13.01.2010 10:00:00,189.87,13.01.2010 18:00:00,189.3,-0.30%,-176.70,-0.30%,310,58859.70,-735.11,9,-19.63,-0.33%,1.05%,0/0
GAZP,Short,14.01.2010 10:00:00,191.02,14.01.2010 18:00:00,190.83,-0.10%,58.14,0.10%,306,58452.12,-676.97,9,6.46,-0.23%,1.12%,0/0
GAZP,Long,15.01.2010 10:00:00,190.06,15.01.2010 18:00:00,187.86,-1.16%,-677.60,-1.16%,308,58538.48,-1354.57,9,-75.29,-1.16%,1.07%,0/0
GAZP,Long,18.01.2010 10:00:00,188.3,18.01.2010 18:00:00,190.4,1.12%,638.40,1.12%,304,57243.20,-716.17,9,70.93,-0.90%,1.12%,0/0
GAZP,Short,19.01.2010 10:00:00,189.67,19.01.2010 18:00:00,189.76,0.05%,-27.72,-0.05%,308,58418.36,-743.89,9,-3.08,-0.33%,1.22%,0/0
GAZP,Short,20.01.2010 10:00:00,188.6,20.01.2010 18:00:00,185.98,-1.39%,812.20,1.39%,310,58466.00,68.31,9,90.24,-0.69%,1.39%,0/0
GAZP,Short,21.01.2010 10:00:00,186.34,21.01.2010 18:00:00,182.76,-1.92%,1152.76,1.92%,322,60001.48,1221.07,9,128.08,-0.46%,1.92%,0/0
GAZP,Long,22.01.2010 10:00:00,181.51,22.01.2010 18:00:00,181.5,-0.01%,-3.44,-0.01%,344,62439.44,1217.63,9,-0.38,-1.65%,0.82%,0/0
GAZP,Long,25.01.2010 10:00:00,180.2,25.01.2010 18:00:00,182.85,1.47%,916.90,1.47%,346,62349.20,2134.53,9,101.88,-0.70%,2.33%,0/0

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



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

СообщениеДобавлено: Вт Май 04, 2010 9:19 am Ответить с цитатой Вернуться к началу

Нашел причину.
В preferences на вкладке Intraday убрал галочку с Align minute bars.... и все считает теперь правильно!
Еще раз спасибо!
Посмотреть профиль Отправить личное сообщение
Orange2000



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

СообщениеДобавлено: Вт Май 04, 2010 9:29 am Ответить с цитатой Вернуться к началу

А еще про стоп. В коде я так понял просто стоп 100 пунктов. а как сделать что бы стопом был Open дня?

использовать:
DOpen = TimeFrameGetPrice( "O", inDaily, 0, expandFirst); ?
Посмотреть профиль Отправить личное сообщение
настырный



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

СообщениеДобавлено: Вт Май 04, 2010 9:58 am Ответить с цитатой Вернуться к началу

Orange2000 писал(а):
А еще про стоп. В коде я так понял просто стоп 100 пунктов. а как сделать что бы стопом был Open дня?

использовать:
DOpen = TimeFrameGetPrice( "O", inDaily, 0, expandFirst); ?


Скорее всего так:
Код:

FirstBarInDay = Day() != Ref(Day(), -1);
Buy = C > O AND FirstBarInDay;
Short= C < O AND FirstBarInDay;
BuyPrice = ShortPrice = C;
DOpen = TimeFrameGetPrice( "O", inDaily);
Sell =  Day() != Ref(Day(), -1) OR L<=DOpen;
Cover = Day() != Ref(Day(), -1) OR H>=DOpen;
SellPrice = IIF(L<=DOpen, DOpen, C);
CoverPrice = IIF(H>=DOpen, DOpen, C);
Посмотреть профиль Отправить личное сообщение
Orange2000



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

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

Все работает, только видимо опечатка в
Код:
Sell =  Day() != Ref(Day(), -1) OR L<=DOpen;
Cover = Day() != Ref(Day(), -1) OR H>=DOpen;


нужно "-1" на "1" поменять!

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


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

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

Orange2000 писал(а):
А еще про стоп. В коде я так понял просто стоп 100 пунктов. а как сделать что бы стопом был Open дня?

использовать:
DOpen = TimeFrameGetPrice( "O", inDaily, 0, expandFirst); ?

Проще всего так
Код:

FirstBarInDay = Day() != Ref(Day(), -1);
Buy = C > O AND FirstBarInDay;
Short= C < O AND FirstBarInDay;
BuyPrice = ShortPrice = C;
Sell = Cover = Day() != Ref(Day(), 1);
SellPrice = CoverPrice = C;
ApplyStop(stopTypeLoss, stopModePoint, abs(C - O), ExitAtStop = 1, Volatile = False);

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


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

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

Тут вот в чем тонкость. Если в ApplyStop Volatile = False то размер стопа "фиксируется" в момент сделки и в дальнейшем, пока стоп не сработает или пока сделка не закроется по другой причине не меняется.

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



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

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

000 писал(а):
Тут вот в чем тонкость. Если в ApplyStop Volatile = False то размер стопа "фиксируется" в момент сделки и в дальнейшем, пока стоп не сработает или пока сделка не закроется по другой причине не меняется.


Ну так и должно быть вроде!? Работает как и ожидалось, спасибо.

Сорри, не сразу заметил, что первый вариант написал НастырныйSmileПривык, что только Олег тут помогаетSmile В том первом коде неудобно лишь что в ходе теста не видно в сделках когда по стопу выход был.
Посмотреть профиль Отправить личное сообщение
настырный



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

СообщениеДобавлено: Ср Май 05, 2010 6:25 pm Ответить с цитатой Вернуться к началу

Orange2000 писал(а):
000 писал(а):
Тут вот в чем тонкость. Если в ApplyStop Volatile = False то размер стопа "фиксируется" в момент сделки и в дальнейшем, пока стоп не сработает или пока сделка не закроется по другой причине не меняется.


Ну так и должно быть вроде!? Работает как и ожидалось, спасибо.

Сорри, не сразу заметил, что первый вариант написал НастырныйSmileПривык, что только Олег тут помогаетSmile В том первом коде неудобно лишь что в ходе теста не видно в сделках когда по стопу выход был.


Я просто сразу старался без ApplyStop сделать код. Т.к. наверняка Вы потом робота будете писать. А на сколько я понял, в роботах ApplyStop не применяется. (Я их еще не писал и не эксплуатировал, увы).

Я тут бываю набегами, да и знаний афл у меня по-меньше, чем у Олега. Wink

Как говорится, чем могу, тем помогу. Wink
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

ApplyStop можно в роботе использовать. Только надо обязательно функцию Equity() потом вставлять. И желательно в коде установить минимальный сайз позиции и следить чтобы денег хватало.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen