Автор |
Сообщение |
fujis84
Зарегистрирован: 07.01.2014
Сообщения: 56
|
moextrader писал(а): |
Код: |
BuyPrice = O;
SellPrice = O;
ShortPrice = O;
CoverPrice = O;
|
Ну во первых вот так нельзя делать, у тебя будет в тестере фуфлогон.
|
Ref( .., -1)
Trade delay!!!!!!!!!!!!!!!!!!!!!!!!!!!!
fujis84 писал(а): |
Код: |
// http://www.amibroker.com/guide/afl/applystop.html
SetOption( "ActivateStopsImmediately", True );
Buy = Ref( Cross( C, MA( C, 50 ) ), - 1 );
Short = Ref( Cross( MA( C, 50 ), C ), - 1 );
Cover = Buy;
Sell = Short;
BuyPrice = O;
SellPrice = O;
ShortPrice = O;
CoverPrice = O;
.
.
.. |
|
пойдите на кухню!
держаться подальше от программирования |
|
|
Посмотреть профиль Отправить личное сообщение |
|
moextrader
Зарегистрирован: 27.04.2014
Сообщения: 62
|
возможно я не прав, не хотел вас обидеть... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
moextrader
Зарегистрирован: 27.04.2014
Сообщения: 62
|
Код: |
//http://www.amibroker.com/guide/afl/applystop.html
Scenario 4:
you trade on today's close and want to exit only when today's close price hits the stop level
Correct settings:
ActivateStopsImmediately turned OFF
ExitAtStop = 0
Trade delays set to zero
Trade price set to close
|
По вашей же ссылке указано!
в ходе тестирования пока не подтвердилось, так что ... Вы судя по всему работаете по другому сценарию! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
fujis84 писал(а): |
неправильно. ApplyStop() работает!
ApplyStop -> Equity() -> evaluate Stops -> Plot ApplyStop |
ApplyStop() как не курил доки, не захотел у меня в реале работать.
Да и Олег не советовал на реале юзать. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
ApplyStop() при работе использует тестер. В случае любого глюка или некорректных настроек тестера стоп не сработает. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
moextrader
Зарегистрирован: 27.04.2014
Сообщения: 62
|
Я сделал чтобы все работало...
Код: |
Buy = buyCond1 AND buyCond2;
Short = shortCond1 AND shortCond2;
Cover = Buy;
Sell = Short;
BuyPrice=O;
SellPrice=C;
ShortPrice=O;
CoverPrice=C;
ApplyStop( stopTypeLoss, stopModePoint, 250, 0, False,1);
ApplyStop( stopTypeProfit, stopModePoint, 250, 0,False,1);
BuySignal = LastValue(Buy);
SellSignal = LastValue(Ref(Sell,-1));
ShortSignal = LastValue(Short);
CoverSignal = LastValue(Ref(Cover,-1));
|
Срабатывает идентично с тестером на закрытии следующего бара, если он пересек линию стопа.
Это опять же под сценарий 4 - ExitAtStop = 0
Насчет сбоев, это да, если инет даст сбой будет не очень...
Но можно ставить просто жесткий стоп от краха... и работать по ApplyStop() |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если это для робота, то так не пойдет.
Не уверен как в роботе будет работать вот это
Код: |
BuyPrice=O;
SellPrice=C;
ShortPrice=O;
CoverPrice=C;
|
Не вижу функцию Equity()
По моему лучше сделать так http://www.amisite.ru/afl/exp/0003.htm |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Astrobiolog
Зарегистрирован: 27.01.2013
Сообщения: 66
|
MrDrJOKER писал(а): |
fujis84 писал(а): |
неправильно. ApplyStop() работает!
ApplyStop -> Equity() -> evaluate Stops -> Plot ApplyStop |
ApplyStop() как не курил доки, не захотел у меня в реале работать.
Да и Олег не советовал на реале юзать. |
ApplyStop прекрасно всегда работает. Логика Амиброкера НИКОГДА не ошибается. Никаких глюков там нет. Если не работает - ищите ошибки в человеческом факторе (в голове кодера)) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
moextrader
Зарегистрирован: 27.04.2014
Сообщения: 62
|
000 писал(а): |
Если это для робота, то так не пойдет.
Не уверен как в роботе будет работать вот это
|
Код: |
BuyPrice=O;
SellPrice=C;
ShortPrice=O;
CoverPrice=C;
|
робот вот это не использует.... это использует тестер, чтобы открывать позы по цене О а крыть по цене С через ApplyStop(), а так же эти значения использует PlotShapes
Робот просто считывает сигналы Buy,Sell,Short,Cover и входит или выходит по рынку.
кстати, АА запускать нельзя когда работает такой код, иначе он перестает работать
Я сегодня весь день тестировал, все работает.
Просто я через Quik не торгую... мне было легче написать свою конструкцию.
Equity() там тоже есть, вот так для точности..
Код: |
SetOption("ActivateStopsImmediately", False);
ApplyStop( stopTypeLoss, stopModePoint, stoploss, 0,False,1);
ApplyStop( stopTypeProfit, stopModePoint, takeprofit, 0,False,1);
Equity(1);
|
Стрелки рисуются, сделки совпадают... Может это и не правильно, но я пока только начал разбираться |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это не неправильно. Просто так надо внимательнее следить.
Пример возможного косяка.
Не установил размер позиции для тестера. Тестер вызываемый функцией Equity() в любом случае прогонит доступную историю. Может так получиться, что она даст убыточный результат, при этом, если не указан сайз, то тестер будет "торговать" на все. В итоге, когда поступит сигнал на открытие сделки у тестера не хватит денег даже на одну бумагу и он заблокирует сигнал.
Да,
это маловероятный сценарий, но он возможен. Я могу еще напридумывать...
Вот поэтому. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
moextrader
Зарегистрирован: 27.04.2014
Сообщения: 62
|
Да, я в общем понял что в Ами из за косвенной связи между разными функциями и настройками можно очень легко
накосячить. Я вроде с тестером разобрался кажется он показывает все как надо, и похоже что сделки совпадают
с реалом, но точно сказать пока не могу, надо хотя бы пару недель откатать. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
moextrader
Зарегистрирован: 27.04.2014
Сообщения: 62
|
Я наконец понял как сделать правильно, и тогда любая система гарантом льет
Код: |
//adjusted for slippage
BuyPrice=BuyPrice+20;
SellPrice=SellPrice-20;
ShortPrice=ShortPrice-20;
CoverPrice=CoverPrice+20;
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
moextrader
Зарегистрирован: 27.04.2014
Сообщения: 62
|
Слушай Олег, а я правильно понял что этого робота надо в данной конфигурации
Код: |
if(Name() == "LKOH") { // Символ как он называется в Ами
SecCode = "LKOH";
Class = "EQBR";
Lots = 5;
TickS = 0.1; // Минимальный шаг цены торгуемой бумаги
Stop = 1; // стоп в %
Otstup = 20; // Заявка будет выставлена хуже текущей цены на Otstup рублей }
else if(Name() == "SBER") { // Символ как он называется в Ами
SecCode = "SBER03";
Class = "EQBR";
Lots = 2;
TickS = 0.01; // Минимальный шаг цены торгуемой бумаги Stop = 2; // стоп в %
Otstup = 1; // Заявка будет выставлена хуже текущей цены на Otstup рублей
}
|
надевать на два графика одновременно? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нет. Не правильно. Его надо использовать вот так |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
moextrader
Зарегистрирован: 27.04.2014
Сообщения: 62
|
А в чем преимущество работы через Scan? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|