Автор |
Сообщение |
nemoy
Зарегистрирован: 05.10.2014
Сообщения: 29
|
оживлю темку.
есть мм стратегия озвученая в первом посте топикстартера(правда он переделал ее). после покупке, продажа происводится на уровень выше(при доливках производится отливка на уровень выше) я переделал только нулевую линию, сделав её зоной. страта на фото. лонг и шорт. доливки и отливки показаны на фото. то есть при падении цены на один уровень ниже покупаем, продаем если цена отрастает на уровень обратно вверх. если падает на уровень ниже покупки то доливка и тд
все работает кроме реализации отливки после доливок. ни как не написать условие (изображено на фото), когда после доливки цена подымается на уровень вверх, отливается и снова падает на уровень вниз уже произошедшей доливки |
|
|
Посмотреть профиль Отправить личное сообщение |
|
nemoy
Зарегистрирован: 05.10.2014
Сообщения: 29
|
вот код без отливок
Код: |
// изменил торговлю от нулевой цены , уменьшил коэф шага step = 0.01 * NullPrice
//удвоил отступ шага EntryPrice = EntryPrice - 2 * step
SetPositionSize(100, spsShares);// лот сделки 100 акций
NullPrice = 140 ;// нулевая цена газпрома
step = 0.01 * NullPrice;// шаг доливки
pos = EntryPrice = 0;
Buy = Sell =Short= Cover =0;
Buy = C <= (NullPrice - step); // если отвалились более чем на шаг
Sell = C >= (NullPrice + step) ;//если вернулись к NullPrice или выше
Short = C >= (NullPrice + step) ;
Cover= C <= (NullPrice - step);
for( i = 1; i < BarCount; i++ )
{
if(pos == 0) //если не в позиции
{
if(Buy[i] == 1) // если сигнал на лонг
{
pos = 1;
EntryPrice = BuyPrice[i]; // запоминаем цену входа, от нее будет следущая доливка
}
if(Short[i] == 1) //если сигнал на шорт
{
pos = -1;
EntryPrice1 = ShortPrice[i]; // запоминаем цену шорта и от нее доливаем
}
// с каждым шагом вниз от NullPrice добавляем позицию (доливка)
// с шортом тоже самое но наоборот
}
if(pos == 1 ) // если поза в лонге
{
Buy[i] = 0;
if(Sell[i] == 1)
{
pos = 0;
}
else if(C [i] <= EntryPrice - 2 * step ) // долить, если цена ниже предыдущего лонга на шаг
{
Buy[i] = sigScaleIn;
EntryPrice = EntryPrice - 2 * step; // запоминаем цену последней доливки
}
}
if(pos == -1)
{
Short[i] = 0;
if(Cover[i] == 1)
{
pos = 0;
}
else if(C [i] >= EntryPrice1 + 2 * step ) // долить, если цена выше предыдущего шорта на шаг
{
Short[i] = sigScaleIn;
EntryPrice1 = EntryPrice1 + 2 * step; // запоминаем цену последней доливки
}
}
// при повышении на уровень от последней доливки отливаем
} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А есть просто выход из позиции? Ну без оливок, типа сигнал и закрыли всю позу.
Я почему спрашиваю. Напишу, а потом окажется, что не так.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
nemoy
Зарегистрирован: 05.10.2014
Сообщения: 29
|
000 писал(а): |
А есть просто выход из позиции? Ну без оливок, типа сигнал и закрыли всю позу.
Я почему спрашиваю. Напишу, а потом окажется, что не так.... |
проблемка решилась добавкой конструкции сразу за доливкой в несовсем для меня логичное место
коли уж я зарегился и написал сюда, поблагодарю тебя/вас за сайт и проделанную разъяснительную работу с участниками форума. это огромный труд. не имея никакого опыта я разобрался в коде за неделю благодаря именно ресурсу
ну и тогда легкие вопросы. как реализовать доливку/отливку (первичные бай и шорт я знаю)не по закрытию свечи, а по касанию уровня
и насколько это нормально будет работать в реале?
можно как нибудь добавить доливки на график? все что не пробовал добавляет только множественные сигналы for all raw signals |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Как добавлял на график? Напиши. Подскажу, что не так. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
nemoy
Зарегистрирован: 05.10.2014
Сообщения: 29
|
000 писал(а): |
Как добавлял на график? Напиши. Подскажу, что не так. |
да уже всех способов и не вспомнить. plotshapes вставлял в цикл где доливки и отливки |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не надо ничего в цикл вставлять.
Все делается в конце.
Просто надо знать, что там где позиция добавляется (SigScaleIn) Buy и Short == 99998
А там где сокращается (SigScaleOut) == 99999
Думаю тебе этих сведений будет достаточно. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Apple
Зарегистрирован: 24.09.2014
Сообщения: 39
|
Я тоже для этой системы код пишу. Это похоже на обычную mean reversion систему.
У меня вопрос по использованию sigScale. Он же на выходе дает усреденную цену. Может в этой системе лучше юзать обычные sell,cover? Отливаем ведь мы ориентируясь на уровни. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Apple
Зарегистрирован: 24.09.2014
Сообщения: 39
|
а как правильнее в этой стратегии через sigscale или обычные сигналы:
Код: |
else
if ( C[i] >= priceatbuy + step )
{
Sell[i] = 1 ;
priceatbuy = SellPrice[i];
}
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
sigscale наращивают или сокращают позицию, а обычные сигналы ее полностью закрывают или открывают. Это разные действия. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Apple
Зарегистрирован: 24.09.2014
Сообщения: 39
|
000 писал(а): |
sigscale наращивают или сокращают позицию, а обычные сигналы ее полностью закрывают или открывают. Это разные действия. |
Олег, а цена какая записывается в массив? Усредненная с предыщими ценами или по которой отливали доливали? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
nemoy
Зарегистрирован: 05.10.2014
Сообщения: 29
|
Apple писал(а): |
000 писал(а): |
sigscale наращивают или сокращают позицию, а обычные сигналы ее полностью закрывают или открывают. Это разные действия. |
Олег, а цена какая записывается в массив? Усредненная с предыщими ценами или по которой отливали доливали? |
я выше почти готовый код написал. надо только отливку доливок туда вставить |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Apple писал(а): |
000 писал(а): |
sigscale наращивают или сокращают позицию, а обычные сигналы ее полностью закрывают или открывают. Это разные действия. |
Олег, а цена какая записывается в массив? Усредненная с предыщими ценами или по которой отливали доливали? |
В какой массив? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
nemoy
Зарегистрирован: 05.10.2014
Сообщения: 29
|
тут такая проблема
это кусок цикла начинает косячит когда кончается денюжка
Код: |
else if(L [i] <= EntryPrice - 2 * step ) // долить, если цена ниже предыдущего лонга на шаг
{
Buy[i] = sigScaleIn;
EntryPrice = EntryPrice - 2 * step; // запоминаем цену последней доливки
}
/////////////////отливка лонгов
else if (H [i] >= EntryPrice + 2 * step)
{
Buy[i] = sigScaleOut;
EntryPrice = EntryPrice + 2 * step; // запоминаем цену последней отливки
}
|
то есть он не доливает позу когда мани кончаются . но пройдя например ещё 10 ступеней дальше начинает отливать при возврате хотя бы на одну ступень . то есть отливает долитые ступени в убыток
в роботе этой проблемы нет, но в тестере мне не оценить истиную прибыльность и лучшие параметры. вопрос в том как остановить этот беспредел. видимо надо что то сунуть в условие цикла связанное с наличкой |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну можно например поставить счетчик доливок и после нескольких доливок прекращать доливать. Однако если цена пойдет против позы дальше, то убытки будут.....
А может так случиться, что цена никогда больше не вернется на прежние уровни и никогда не сократит позицию.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|