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



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

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

попробовал написать простую системку, но с ней что то не то
открывает сделку шорт, при незакрытой сделке лонг.
Это так показывает индикатор. На самом деле, если смотреть в списке сделок, позиция лонг закрывается на баре открытия позиции Short.

Открытие позиции Buy при пересечении ценой открытия бара простой средней вверх.
Закрытие при первом прибыльном открытии.

открытие позиции Short при пересечении ценой открытия бара скользящей средней вниз.
закрытие при первом прибыльном открытии.

Код:

SetTradeDelays(0,0,0,0);
SetOption("InitialEquity",10000);
SetOption("AllowSameBarExit",1);
SetOption("ActivateStopsImmediately",1);
SetOption("FuturesMode",1);
MarginDeposit=1;
PositionSize=1;
PointValue=10000;
//=====================================
t1=Optimize("per1", 23, 3, 70, 5);//

C1=Ref(C,-1);
m1=MA(C1,t1);

Buy=Cross(O,m1);
BuyPrice=Ref(O,-BarsSince(Buy));
SellPrice=O;
Sell= O-BuyPrice>0;

Short=Cross(m1,O);
ShortPrice=Ref(O,-BarsSince(Short));
CoverPrice=O;
Cover= ShortPrice-O>0;

Buy=ExRem(Buy, Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);

Plot(C,"c",1,64);
Plot(m1,"m1",colorBlue,1);

PlotShapes( IIf(Buy,shapeDigit1, shapeNone), colorGreen, 0,H,12);
PlotShapes( IIf(Sell,shapeDigit1, shapeNone), colorRed, 0,L,12);
PlotShapes( IIf(Short,shapeDigit2, shapeNone), colorGreen, 0,H,12);
PlotShapes( IIf(Cover,shapeDigit2, shapeNone), colorRed, 0,L,12);


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


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

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

1. Есть нехорошая ошибочка в коде.
Не надо бы тебе использовать в BuyPrice=Ref(O,-BarsSince(Buy));
массив BuyPrice. Это зарезервированное слово обозначающее цену исполнения сделок. Возможно, что в данном случае все хорошо, но лучше так не делать.
2. Почему так рисует стрелки.
Это просто индикатор.
Он не считает открыта поза - закрыта. Есть сигнальчик - он рисует стрелочку. Нет - он не рисует.
А в коде индикатора нет никакой связи между sell и short. Вот поэтому иногда и получается, что прибыль по сделке не достигнута (другого правила выхода там нет) а сигнал на шорт поступил. Рисуем стрелку.

Тестер считает немного иначе. Он учитывает открытые позиции и не может быть такого, чтобы был открыт одновременно лонг и шорт. Вот поэтому разница.

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



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

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

Код:

Buy=Cross(O,m1);
BuyLevel=Ref(O,-BarsSince(Buy));
BuyPrice=BuyLevel;
SellPrice=O;
Sell= O-BuyPrice>0 OR Cross(m1,O);

Short=Cross(m1,O);
ShortLevel=Ref(O,-BarsSince(Short));
ShortPrice=ShortLevel;
CoverPrice=O;
Cover= ShortPrice-O>0 OR Cross(O,m1);


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


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

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

Нет.
Так нормально
Код:

Buy = Cross(O, m1);
BuyLevel = Ref(O, -BarsSince(Buy));
BuyPrice = O;
SellPrice = O;
Sell = O > BuyLevel OR Cross(m1, O);

Short = Cross(m1, O);
ShortLevel = Ref(O,-BarsSince(Short));
ShortPrice = O;
CoverPrice = O;
Cover = O > ShortLevel OR Cross(O,m1);

При этом имей ввиду, что исполная сделку по Open нельзя при расчете m1 использовать текущую Close. У тебя там стоит Ref(, -1); так, что все нормально.

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



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

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

спасибо за помощь =) замечания принял к сведению
Посмотреть профиль Отправить личное сообщение
reciffoksir



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

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

000 писал(а):

2. Почему так рисует стрелки.
Это просто индикатор.
Он не считает открыта поза - закрыта. Есть сигнальчик - он рисует стрелочку. Нет - он не рисует.

вот этот вопрос меня очень волнует, теряется наглядность, система вошла в позу (уж такая система, с этим ничего не поделать), а бар уехал и индикатор пропал, как его заставить там остаться?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Ноя 24, 2009 1:22 pm Ответить с цитатой Вернуться к началу

Чёта вопрос не понял.

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



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

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

000 писал(а):
Чёта вопрос не понял.

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


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

СообщениеДобавлено: Вт Ноя 24, 2009 3:00 pm Ответить с цитатой Вернуться к началу

Теперь понятно. Код заглядывает в будущее. Выкини его в мусорку. Больше ничего сделать нельзя.

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



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

СообщениеДобавлено: Вт Ноя 24, 2009 3:44 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Теперь понятно. Код заглядывает в будущее. Выкини его в мусорку. Больше ничего сделать нельзя.

нет, не заглядывает.

вот пример:
Код:
Buy=Cross( myprice,C );


5-минутки

рисуется 5-ти минутный бар, close пересек myprice, ушел сигнал на покупку, система в позе

тем временем close обратно ушел ниже myprice, индюк пропал, а система то осталась в позе
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Вт Ноя 24, 2009 3:50 pm Ответить с цитатой Вернуться к началу

reciffoksir писал(а):
000 писал(а):
Теперь понятно. Код заглядывает в будущее. Выкини его в мусорку. Больше ничего сделать нельзя.

нет, не заглядывает.

вот пример:
Код:
Buy=Cross( myprice,C );


5-минутки

рисуется 5-ти минутный бар, close пересек myprice, ушел сигнал на покупку, система в позе

тем временем close обратно ушел ниже myprice, индюк пропал, а система то осталась в позе

http://www.russian-trader.ru/forum/viewtopic.php?p=389156#389156

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
reciffoksir



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

СообщениеДобавлено: Вт Ноя 24, 2009 4:05 pm Ответить с цитатой Вернуться к началу

Цитата:

http://www.russian-trader.ru/forum/viewtopic.php?p=389156#389156


да, спасибо, пытаюсь обойти эту проблему, пока безуспешно,

хочу ввести переменную, которая бы помнила состояние системы,

то есть зашел в лонг, строго присвоил ей 1, пока система не вышла из лонга, что-то вроде

Код:

IIf (Buy, BScount=1, Levaki++);
Sell=Cross( myprice,C ) AND BScount==1;


мне нужен именно C, а не ref(c,-1)
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Вт Ноя 24, 2009 4:37 pm Ответить с цитатой Вернуться к началу

reciffoksir писал(а):
Цитата:

http://www.russian-trader.ru/forum/viewtopic.php?p=389156#389156


да, спасибо, пытаюсь обойти эту проблему, пока безуспешно,

хочу ввести переменную, которая бы помнила состояние системы,

то есть зашел в лонг, строго присвоил ей 1, пока система не вышла из лонга, что-то вроде

Код:

IIf (Buy, BScount=1, Levaki++);
Sell=Cross( myprice,C ) AND BScount==1;


мне нужен именно C, а не ref(c,-1)


Перейди на тики, в них строй уровни со старшего тайма и отслеживай обратное пересечение уровня, но в реале это тебе ничего не даст, проскальзывание убьет систему.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

СообщениеДобавлено: Вт Ноя 24, 2009 5:45 pm Ответить с цитатой Вернуться к началу

Еще вариант.
Вместо Close используй High, Low.
Цитата:

5-минутки

рисуется 5-ти минутный бар, close пересек myprice, ушел сигнал на покупку, система в позе

тем временем close обратно ушел ниже myprice, индюк пропал, а система то осталась в позе

Это как раз оно и есть (заглядывание) При тесте у тебя будет сделка по цене myprice при том, что тестер заранее знает, что закрытие выше этой цены.

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



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

СообщениеДобавлено: Вс Ноя 29, 2009 7:42 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Еще вариант.
Вместо Close используй High, Low.
Цитата:

5-минутки

рисуется 5-ти минутный бар, close пересек myprice, ушел сигнал на покупку, система в позе

тем временем close обратно ушел ниже myprice, индюк пропал, а система то осталась в позе

Это как раз оно и есть (заглядывание) При тесте у тебя будет сделка по цене myprice при том, что тестер заранее знает, что закрытие выше этой цены.

спасибо, начал пользовать High, Low
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen