Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я в том примере показал просто метод и как его по простому можно использовать.
Разумеется под каждую конкретную задачу требуется доработка. При чем часто серьезная. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
moextrader
Зарегистрирован: 27.04.2014
Сообщения: 62
|
Я сделал как на Финлабе, этот Д.Власов реально очень крут...
Спред формула в ютубе грааль!
Завтра буду добивать тестер, график строится просто загляденье. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
VladVol
Зарегистрирован: 27.12.2016
Сообщения: 10
|
Всем привет!!!
Хочу реанимировать тему!!!
есть ряд вопросов, который сходу как-то не удается решить
вот часть кода
if (TimeNum() > 060000 AND TimeNum() < 220000)
{
if (Name() == "BZ")
{
SetPositionSize(1, spsShares);
Buy = DwSig1;
Buy = DwSig2;
Sell = CloseDw;
Short = UpSig1;
Short = UpSig2;
Cover = CloseUp;
}
if (Name() == "CL")
{
SetPositionSize(1, spsShares);
Short = DwSig1;
Short = DwSig2;
Cover = CloseDw;
Buy = UpSig1;
Buy = UpSig2;
Sell = CloseUp;
}
}
1. как правильно прописать торговое время?! задача - пара открывается и закрывается в течении торговой сессии или в течении дня. В коде выше выдает во такую ошибку в первой строке
http://prntscr.com/dv4yah
2. как проверить наличие активной Лонг или Шорт позиции по инструменту? это нужно для того, чтобы в конце сессии закрыть принудительно позицию
3. открытие парной позиции предполагает дооткрытие (доливка) по следующему, более высокому уровню индикатора... как прописать это вариант!?
спасибо большое за помощь!! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
1. Функция If не может работать с массивами а TimeNum() это массив.
Надо сделать типа так
Код: |
Condition1 = imeNum() > 060000 AND TimeNum() < 220000;
Buy = DwSig2 AND Condition1; |
Дальше.
Почему у тебя 2 раза задается Buy и Short?
Код: |
Buy = DwSig1;
Buy = DwSig2;
Sell = CloseDw;
Short = UpSig1;
Short = UpSig2; |
Второй раз полностью анулирует первый.
2. Не надо проверять наличие позиции. Закрывай ее и все. Если позиции не было, то закрытие будет проигнорировано.
3. Тут очень много про это писали. Воспользуйся поиском по слову SigScaleIn можно и в хелпере посмотреть. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VladVol
Зарегистрирован: 27.12.2016
Сообщения: 10
|
Спасибо за помощь!
Buy и Short двоятся, поскольку открітие позиции предполагается не на одном уровне осцилятора, а на 2-х. Как тогда прописать доливку по другому уровню??
вот полный код
Код: |
BZoil = Foreign("BZ", "Close");
CLoil = Foreign("CL", "Close");
//Indicator constraction
Spred = BZoil / CLoil;
//Plot(Spred, "Spread BZoil/CLoil", colorAqua, style = styleLine, width = 2);
periodEMA = 20;
emaSpred = EMA(Spred,20);
//Plot(emaSpred, "EMASpread BZoil/CLoil", colorGreen, style = styleLine, width = 1);
DeltaSpredEMA = Spred - emaSpred;
//Plot(DeltaSpredEMA, "DeltaSpread BZoil/CLoil", colorAqua, style = styleLine, width = 2);
periodStDev = 20;
b = StDev( Spred, 20);
//Plot(b, "StDev BZoil/CLoil", colorAqua, style = styleLine, width = 2);
MainDeltaInd = DeltaSpredEMA/b;
Plot(MainDeltaInd, "MainDeltaInd BZoil/CLoil", colorAqua, style = styleLine, width = 2);
MainDeltaIndLevelUP1 = 1;
MainDeltaIndLevelUP2 = 2;
MainDeltaIndLevelDOWN1 = -1;
MainDeltaIndLevelDOWN2 = -2;
Plot(MainDeltaIndLevelUP1, "MainDeltaInd BZoil/CLoil", colorGold, style = styleLine, width = 1);
Plot(MainDeltaIndLevelUP2, "MainDeltaInd BZoil/CLoil", colorGold, style = styleLine, width = 1);
Plot(MainDeltaIndLevelDOWN1, "MainDeltaInd BZoil/CLoil", colorGold, style = styleLine, width = 1);
Plot(MainDeltaIndLevelDOWN2, "MainDeltaInd BZoil/CLoil", colorGold, style = styleLine, width = 1);
Plot(0, "MainDeltaInd BZoil/CLoil", colorGold, style = styleLine, width = 1);
//Trade signals
UpSig1 = Cross(MainDeltaInd, MainDeltaIndLevelUP1);
UpSig2 = Cross(MainDeltaInd, MainDeltaIndLevelUP2);
CloseUp = Cross(0, MainDeltaInd);
DwSig1 = Cross(MainDeltaIndLevelDOWN1, MainDeltaInd);
DwSig2 = Cross(MainDeltaIndLevelDOWN2, MainDeltaInd);
CloseDw = Cross(spred, 0);
//Remove signals
UpSig1 = ExRem(UpSig1, CloseUp);
UpSig2 = ExRem(UpSig2, CloseUp);
CloseUp = ExRem(CloseUp, UpSig1);
CloseUp = ExRem(CloseUp, UpSig2);
DwSig1 = ExRem(DwSig1, CloseDw);
DwSig2 = ExRem(DwSig2, CloseDw);
CloseDw = ExRem(CloseDw, DwSig1);
CloseDw = ExRem(CloseDw, DwSig2);
//Time Condition
//TimeCond = TimeNum() > 060000 AND TimeNum() < 220000;
if (TimeNum() > 060000 AND TimeNum() < 220000)
{
if (Name() == "BZ")
{
SetPositionSize(1, spsShares);
Buy = DwSig1;
Buy = DwSig2;
Sell = CloseDw;
Short = UpSig1;
Short = UpSig2;
Cover = CloseUp;
}
if (Name() == "CL")
{
SetPositionSize(1, spsShares);
Short = DwSig1;
Short = DwSig2;
Cover = CloseDw;
Buy = UpSig1;
Buy = UpSig2;
Sell = CloseUp;
}
} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
Buy = DwSig1;
Buy = IIf(DwSig2, SigScaleIn, Buy); |
Код: |
Short = UpSig1;
Short = IIf(UpSig2, SigScaleIn, Short); |
Вот в таком ключе. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VladVol
Зарегистрирован: 27.12.2016
Сообщения: 10
|
Спасибо за подсказки!
Пока решил пойти простым путем: по одному сигналу в каждую сторону без доливок ( с ними еще нужно разбираться, не очень понимаю, сробатывают ли они или нет)
для чистоты эксперимента хотелось бы нанести данные о сделках на график. В других ветках, подсмотрел код, который должен публиковать значки. Но пристроить к своему скрипту не удалось корректно.. если есть возможность, подскажите, как правильно нужно выставить PlotShapes, чтобы публиковались сделки по двум рядам
Код: |
//Time Condition
Condition1 = TimeNum() > 160000 AND TimeNum() < 220000;
Condition2 = TimeNum() > 220000;
// trade on next bar open
SetTradeDelays( 1, 1, 1, 1 );
if (Name() == "BZ")
{
SetPositionSize(1, spsShares);
Buy = DwSig1 AND Condition1;
Sell = CloseDw OR Condition2;
Short = UpSig1 AND Condition1 ;
Cover = CloseUp OR Condition2;
}
if (Name() == "CL")
{
SetPositionSize(1, spsShares);
Buy = UpSig1 AND Condition1;
Sell = CloseUp OR Condition2;
Short = DwSig1 AND Condition1;
Cover = CloseDw OR Condition2;
}
PlotShapes(Buy * shapeUpArrow, colorGreen, 0, Open, -8);
PlotShapes(Sell * shapeHollowDownArrow, colorAqua, 0, Open, -24);
PlotShapes(Short * shapeDownArrow, colorRed, 0, Open, -8);
PlotShapes(Cover * shapeHollowUpArrow, colorYellow, 0, Open, -24);
|
Спасибо! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если решил пойти простым путем, то просто прогони тест этой системы и выведи стрелки сделок по результатам теста на график из анализатора.
Вот тут http://www.amisite.ru/begin/bk_test1sumb.php, ближе к концу написано как это сделать. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VladVol
Зарегистрирован: 27.12.2016
Сообщения: 10
|
000 писал(а): |
Если решил пойти простым путем, то просто прогони тест этой системы и выведи стрелки сделок по результатам теста на график из анализатора.
Вот тут http://www.amisite.ru/begin/bk_test1sumb.php, ближе к концу написано как это сделать. |
Спасибо!
Но пишет, что ссылка не рабочая http://prntscr.com/dx34lp
ЗЫ: если зайти через сайт, то на указанную страницу запускает...
Выбрать то выбрал нужное (как рассказано в статье), но не очень понятно, на какой график запускаются сделки!?
Рабочий ТФ с двумя инструментами открыт в соседнем окне |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|