Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нифига не могу понять в чем дело. Вот моя эмуляция торгов по фьючу сбера на 6/04/2009г
Код: |
TRANS_ID=021034591; PRICE=2375; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021034594; PRICE=2375; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021714592; PRICE=2287; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021719591; PRICE=2332; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021724592; PRICE=2280; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021729591; PRICE=2343; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021734592; PRICE=2287; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021734593; PRICE=2277; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021739591; PRICE=2346; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021739594; PRICE=2346; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021744592; PRICE=2283; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021804591; PRICE=2347; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021834592; PRICE=2288; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021839591; PRICE=2335; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021844592; PRICE=2280; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021849591; PRICE=2334; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
TRANS_ID=021859592; PRICE=2287; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBER; ACCOUNT=SPBFUT00508; CLIENT_CODE=508;
|
Вроде все ок. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
У меня время отображается немного по другому. В данных время начала интервала, а в настройках включено "конец интервала" поэтому так. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sas55
Зарегистрирован: 15.03.2009
Сообщения: 61
Откуда: Омск
|
Цитата: |
x =Optimize("x", 0.6, 0.1, 1, 0.1);//определяет уровень buy/short, дефолт 60% от вчерашнего диапазона
DH = TimeFrameGetPrice( "H", inDaily,-1,expandFirst);//Максимум вчерашнего дня
DL = TimeFrameGetPrice( "L", inDaily,-1,expandFirst);//минимум вчерашнего для
DOpen = TimeFrameGetPrice( "O", inDaily, 0, expandFirst); // сегодняшнее открытие
Range = DH - DL; // вчерашний диапазон
BuyLevel = DOpen + Range*x;//уровень покупки
ShortLevel = DOpen -Range*x;//уровень шорта
Buy = H >= BuyLevel & L<BuyLevel;// покупка если максимум выше уровня покупки
BuyPrice = BuyLevel; // по цене уровня покупки
Short = L <=ShortLevel& B>ShortLevel;
ShortPrice = ShortLevel;
Sell = Cover = 0;
ApplyStop(stopTypeLoss, stopModePoint, Range/2, ExitAtStop = 1); // стоп 50% вчерашнего диаппазона
ApplyStop(stopTypeProfit, stopModePoint, Range/2, ExitAtStop = 1); |
как в условии правильно прописать : если я в лонге и стопов не достиг
и срабатывает сигнал шорт = надо перевернутся?
Если не в условии прописывать ,то где |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если для робота, то напиши после
Equity(1);
Sell = Sell OR Short; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sas55
Зарегистрирован: 15.03.2009
Сообщения: 61
Откуда: Омск
|
Цитата: |
Если для робота, то напиши после
Equity(1);
Sell = Sell OR Short; |
Да это для робота с этим условием
Цитата: |
x =Optimize("x", 0.6, 0.1, 1, 0.1);//определяет уровень buy/short, дефолт 60% от вчерашнего диапазона
DH = TimeFrameGetPrice( "H", inDaily,-1,expandFirst);//Максимум вчерашнего дня
DL = TimeFrameGetPrice( "L", inDaily,-1,expandFirst);//минимум вчерашнего для
DOpen = TimeFrameGetPrice( "O", inDaily, 0, expandFirst); // сегодняшнее открытие
Range = DH - DL; // вчерашний диапазон
BuyLevel = DOpen + Range*x;//уровень покупки
ShortLevel = DOpen -Range*x;//уровень шорта
Buy = H >= BuyLevel & L<BuyLevel;// покупка если максимум выше уровня покупки
BuyPrice = BuyLevel; // по цене уровня покупки
Short = L <=ShortLevel& B>ShortLevel;
ShortPrice = ShortLevel;
Sell = Cover = 0;
ApplyStop(stopTypeLoss, stopModePoint, Range/2, ExitAtStop = 1); // стоп 50% вчерашнего диаппазона
ApplyStop(stopTypeProfit, stopModePoint, Range/2, ExitAtStop = 1);
Equity(1);
Sell = Sell OR Short; |
Так
А как робот воспримет условие Sell = Cover = 0; и не надо прописывать увеличение позиции была 1,(-1,-1) стала -1
Lots = 1; // сколько лотов желаете торговать |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
sas55 писал(а): |
Да это для робота с этим условием
Цитата: |
x =Optimize("x", 0.6, 0.1, 1, 0.1);//определяет уровень buy/short, дефолт 60% от вчерашнего диапазона
DH = TimeFrameGetPrice( "H", inDaily,-1,expandFirst);//Максимум вчерашнего дня
DL = TimeFrameGetPrice( "L", inDaily,-1,expandFirst);//минимум вчерашнего для
DOpen = TimeFrameGetPrice( "O", inDaily, 0, expandFirst); // сегодняшнее открытие
Range = DH - DL; // вчерашний диапазон
BuyLevel = DOpen + Range*x;//уровень покупки
ShortLevel = DOpen -Range*x;//уровень шорта
Buy = H >= BuyLevel & L<BuyLevel;// покупка если максимум выше уровня покупки
BuyPrice = BuyLevel; // по цене уровня покупки
Short = L <=ShortLevel& B>ShortLevel;
ShortPrice = ShortLevel;
Sell = Cover = 0;
ApplyStop(stopTypeLoss, stopModePoint, Range/2, ExitAtStop = 1); // стоп 50% вчерашнего диаппазона
ApplyStop(stopTypeProfit, stopModePoint, Range/2, ExitAtStop = 1);
Equity(1);
Sell = Sell OR Short; |
Так
|
Да.
sas55 писал(а): |
А как робот воспримет условие Sell = Cover = 0; и не надо прописывать увеличение позиции была 1,(-1,-1) стала -1
Lots = 1; // сколько лотов желаете торговать |
Код AFL выполняется последовательно, по мтрокам сверху вниз. Спера был Sell такой, потом стал другой.
Увеличение позиции прописывать не надо. Просто станет 2 сделки обычным размером. Одна закроет позу, а вторая откроет противоположную. ID же у них разный. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Только вероятно такую- же фигню надо сделать и для Cover |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sas55
Зарегистрирован: 15.03.2009
Сообщения: 61
Откуда: Омск
|
Цитата: |
Только вероятно такую- же фигню надо сделать и для Cover |
Да сделал спасибо,но вылезла другая фигня- быть как если позиции нет |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
sas55 писал(а): |
Цитата: |
Только вероятно такую- же фигню надо сделать и для Cover |
Да сделал спасибо,но вылезла другая фигня- быть как если позиции нет |
Во я балбес. Ведь чуствую, что не дописал чего то.
После Sell = Sell OR Short;
надо опять Equity(1);
Тогда лишний Sell (когда лонга не было) не пройдет, потому, что Ами решит, что селить нечего. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sas55
Зарегистрирован: 15.03.2009
Сообщения: 61
Откуда: Омск
|
Цитата: |
Во я балбес. Ведь чуствую, что не дописал чего то.
После Sell = Sell OR Short;
надо опять Equity(1);
Тогда лишний Sell (когда лонга не было) не пройдет, потому, что Ами решит, что селить нечего. |
Балбес это я - ты Сансей (ОС)
Всё работает как часы (китайские) |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Только не Китайские а Польские |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Амиброкеровец
Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия
|
А как можно подравить код, чтобы смотреть пробитие только диапазона первого часа 10:30-11:30? |
_________________ Антон |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Сначала находим бар время которого 11:30 и бар начала дня
bar = TimeNum() == 113000;
begin = Data() != Ref(Data(), -1);
Потом находим максимум и минимум с начала дня
maxim = highestsince(begin, H);
minimum = lowestsince(begin, L);
потом находим значения максимума/минимума с начала дня в 11:30
max1130 = valuewhen(bar, maxim);
min1130 = valuewhen(bar, minimum);
Собственно все. экстремумы достигнутые к 11:30 найдены. Можно смотреть пробитие...
Ничего не проверял. Все писал по памяти. Возможно и ошибся где. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sas55
Зарегистрирован: 15.03.2009
Сообщения: 61
Откуда: Омск
|
И снова здравствуйте
Код: |
x =Optimize("x", 0.6, 0.1, 1, 0.1);//определяет уровень buy/short, дефолт 60% от вчерашнего диапазона
DH = TimeFrameGetPrice( "H", inDaily,-1,expandFirst);//Максимум вчерашнего дня
DL = TimeFrameGetPrice( "L", inDaily,-1,expandFirst);//минимум вчерашнего для
DOpen = TimeFrameGetPrice( "O", inDaily, 0, expandFirst); // сегодняшнее открытие
Range = DH - DL; // вчерашний диапазон
BuyLevel = DOpen + Range*x;//уровень покупки
ShortLevel = DOpen -Range*x;//уровень шорта
Buy = H >= BuyLevel & L<BuyLevel;// покупка если максимум выше уровня покупки
BuyPrice = BuyLevel; // по цене уровня покупки
Short = L <=ShortLevel& B>ShortLevel;
ShortPrice = ShortLevel;
Sell = Cover = 0;
ApplyStop(stopTypeLoss, stopModePoint, Range/2, ExitAtStop = 1); // стоп 50% вчерашнего диаппазона
ApplyStop(stopTypeProfit, stopModePoint, Range/2, ExitAtStop = 1);
Equity(1);
Sell = Sell OR Short; |
периодически возникает проблема,что после срабатывания стопа система
не входит в позу, т.е. у меня сегодня сработало условие BuyLevel=DOpen+Range*x; Buy=H>=BuyLevel&L<BuyLevel затем стоп ApplyStop(stopTypeLoss,stopModePoint,Range*y,1),далее цена пошла вверх и день закончился
При открытии следующего дня должна сработать покупка согласно условию:
BuyLevel=DOpen+Range*x;
Buy=H>=BuyLevel&L<BuyLevel
но нет
Видимо система ориентируется на прошлое пересечение
BuyLevel=DOpen+Range*x; и т.к. не было перечения сверху вниз
и не делает покупки считая,что не было нового пересечения
Надо сделать так,что если позы нет должно быть действие согласно условию на каждом новом открытии дня.
И ещё не могу понять разницу действия
BuyPrice=BuyLevel OR ShortPrice=ShortLevel;
и
BuyPrice=BuyLevel ;
ShortPrice=ShortLevel;
Помогите понять спс |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sas55
Зарегистрирован: 15.03.2009
Сообщения: 61
Откуда: Омск
|
Цитата: |
периодически возникает проблема,что после срабатывания стопа система
не входит в позу, т.е. у меня сегодня сработало условие BuyLevel=DOpen+Range*x; Buy=H>=BuyLevel&L<BuyLevel>=BuyLevel&L<BuyLevel
но нет
Видимо система ориентируется на прошлое пересечение
BuyLevel=DOpen+Range*x; и т.к. не было перечения сверху вниз
и не делает покупки считая,что не было нового пересечения
Надо сделать так,что если позы нет должно быть действие согласно условию на каждом новом открытии дня.
И ещё не могу понять разницу действия
BuyPrice=BuyLevel OR ShortPrice=ShortLevel;
и
BuyPrice=BuyLevel ;
ShortPrice=ShortLevel;
Question Помогите понять спс Embarassed |
это к проблеме |
_________________ "Если мы выиграем на финансовом фронте, то мы выиграем всё" В.И.Ленин |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|