Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нет. Совсем не правильно.
Надо так
Цитата: |
SetTradeDelays(0, 0, 0, 0);
PeriodEMA = Optimize("Period EMA", 10, 1, 200, 1); //оптимизировать EMA10 от 1 до 200 с шагом 1
BuyCond1 = C > Ref(C, -1);
BuyCond2 = Ref(L > EMA(C, PeriodEMA), -1);
Buy = BuyCond1 AND BuyCond2;
BuyPrice = C;
ShortCond1 = C < Ref(C, -1);
ShortCond2 = Ref(H < EMA(C, PeriodEMA), -1);
Short = ShortCond1 AND ShortCond2;
ShortPrice = C;
Sell = Short;
Cover = Buy;
stopPercent = Optimize("stop Percent", 2, 0,5, 4, 0,5); //Оптимизировать StopLoss 2% от 0,5 до 4 с шагом 0,5%
ApplyStop( stopTypeLoss, stopModePercent, stopPercent, ExitAtStop = 1, volatile = False, ReEntryDelay = 0); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shara
Зарегистрирован: 11.02.2013
Сообщения: 30
Откуда: местный
|
Всем привет. Олег не знаешь почему в твоем коде пишет что в этой строчке ошибка:
stopPercent = Optimize("stop Percent", 2, 0,5, 4, 0,5); //Оптимизировать StopLoss 2% от 0,5 до 4 с шагом 0,5%
Ln: 13, Col: 53: Error 16. Too many arguments |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Optimize("stop Percent", 2, 0.5, 4, 0.5) |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Shara
Зарегистрирован: 11.02.2013
Сообщения: 30
Откуда: местный
|
А как в код вставить индикатор RSI с оптимизируемыми параметрами: линии перекупленности 70, линии перепроданности 30 и период RSI 5.
Линиии от 100 до 50 и от 50 до 0 с шагом 5. А сам RSI от 1 до 100 с шагом 2. Допустим с низу вверх пересекает покупаем, с верху в низ продаем. Как на картинке:
Можно прямо в в это код, т.к. его уже изучил.
SetTradeDelays(0, 0, 0, 0); // Задержка исполнения сигнала
// Например. Если мы дождались закрытия дня и приняли решение купить завтра утром, то это задержка 1 (решили сейчас а купили на следующем баре)
BuyCond1 = C > Ref(C, -1); // Первое условие покупки. Цена закрытия больше цены закрытия предыдущей свечи. Тут вместо BuyCond1 можно использовать любое удобное имя.
BuyCond2 = Ref(L > EMA(C, 10), -1); // Второе условие покупки. EMA по закрытию с периодом 10 ниже минимума. На предыдущей свече.
Buy = BuyCond1 AND BuyCond2; // Покупка. Оба условия вместе
BuyPrice = C; // Цена покупки. В момент закрытия свечи увидели, что есть условия на вход и немедленно вошли.
// Размер сделки не задаем. Будем торговать на все доступные деньги.
ShortCond1 = C < Ref(C, -1);
ShortCond2 = Ref(H < EMA(C, 10), -1);
Short = ShortCond1 AND ShortCond2;
ShortPrice = C;
// Условие выхода не по стопу не задано. Вероятно переворот при противоположном сигнале.
Sell = Short;
Cover = Buy;
// Стоп
ApplyStop( stopTypeLoss, stopModePercent, 2, ExitAtStop = 1, volatile = False, ReEntryDelay = 0);
// Стоп лосс, задается в процентах, 2%, выходить немедленно по цене стопа, пока открыта сделка стоп не двигать,
// после исполнения стопа запретить последующий вход на протяжении 0 баров. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Новые условия которые ты описал будут так
Код: |
perRSI = Optimize("Period RSI", 10, 1, 100, 2);
UpLevel = Optimize("Up Level", 70, 50, 100, 5);
DwLevel = Optimize("Down Level", 30, 0, 50, 5);
BuyCond = Cross(RSI(perRSI), UpLevel);
ShortCond = Cross(DwLevel, RSI(perRSI));
|
А вставить постарайся сам. Если будут вопросы - задавай.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shara
Зарегистрирован: 11.02.2013
Сообщения: 30
Откуда: местный
|
Спасибо Олег. В выходные буду кумекать. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Shara
Зарегистрирован: 11.02.2013
Сообщения: 30
Откуда: местный
|
Всем привет. Вот вставил RSI в код, не знаю правильно или нет. Мне нужно что бы при пересечении с низу в верх уровня 30 покупать, а при пересечении с верху в низ уровня 70 продавать. Вобщем я запутался. Там где стоят комментарии, это я добавил RSI в код Олега.
===========================
SetTradeDelays(0, 0, 0, 0);
PeriodEMA = Optimize("Period EMA", 10, 1, 200, 1);
PeriodRSI = Optimize("Period RSI", 10, 1, 100, 2); //оптимизировать RSI 10 от 1 до 100 с шагом 2
UpLevel = Optimize("Up Level", 70, 50, 100, 5); //оптимизировать Up уровень 70 от 50 до 100 с шагом 5
DwLevel = Optimize("Down Level", 30, 1, 50, 5); //оптимизировать Dw уровень 30 от 1 до 50 с шагом 5
BuyCond1 = C > Ref(C, -1);
BuyCond2 = Ref(L > EMA(C, PeriodEMA), -1);
BuyCond3 = Cross(RSI(perRSI), DwLevel); // Третье условие покупки. RSI пересекает Dw уровень с низу в верх.
Buy = BuyCond1 AND BuyCond2 AND BuyCond3; // Покупка. Три условия вместе.
BuyPrice = C;
ShortCond1 = C < Ref(C, -1);
ShortCond2 = Ref(H < EMA(C, PeriodEMA), -1);
ShortCond3 = Cross(UpLevel, RSI(perRSI)); // Третье условие продажи. RSI пересекает Up уровень с верху в низ.
Short = ShortCond1 AND ShortCond2 AND ShortCond3; // Продажа. Три условия вместе
ShortPrice = C;
Sell = Short; Cover = Buy;
stopPercent = Optimize("stop Percent", 2, 0.5, 4, 0.5);
ApplyStop( stopTypeLoss, stopModePercent, stopPercent, ExitAtStop = 1, volatile = False, ReEntryDelay = 0);
=============================
Олег, ты давал код: BuyCond = Cross(RSI(perRSI), UpLevel); - это купить если RSI пересекает Up уровень с низу в верх. ShortCond = Cross(DwLevel, RSI(perRSI)); - это продать если RSI пересекает Dw уровень с верху в низ. Или я ни чего не понял?
Что обозначают буквы "L" - BuyCond2 = Ref(L > EMA(C, 10), -1); и "H" - ShortCond2 = Ref(H < EMA(C, 10), -1); в этих строчках?
А в коде можно писать PerRSI, вместо PeriodRSI ? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Shara писал(а): |
Всем привет. Вот вставил RSI в код, не знаю правильно или нет. Мне нужно что бы при пересечении с низу в верх уровня 30 покупать, а при пересечении с верху в низ уровня 70 продавать. Вобщем я запутался. Там где стоят комментарии, это я добавил RSI в код Олега.
Код: |
SetTradeDelays(0, 0, 0, 0);
PeriodEMA = Optimize("Period EMA", 10, 1, 200, 1);
PeriodRSI = Optimize("Period RSI", 10, 1, 100, 2); //оптимизировать RSI 10 от 1 до 100 с шагом 2
UpLevel = Optimize("Up Level", 70, 50, 100, 5); //оптимизировать Up уровень 70 от 50 до 100 с шагом 5
DwLevel = Optimize("Down Level", 30, 1, 50, 5); //оптимизировать Dw уровень 30 от 1 до 50 с шагом 5
BuyCond1 = C > Ref(C, -1);
BuyCond2 = Ref(L > EMA(C, PeriodEMA), -1);
BuyCond3 = Cross(RSI(perRSI), DwLevel); // Третье условие покупки. RSI пересекает Dw уровень с низу в верх.
Buy = BuyCond1 AND BuyCond2 AND BuyCond3; // Покупка. Три условия вместе.
BuyPrice = C;
ShortCond1 = C < Ref(C, -1);
ShortCond2 = Ref(H < EMA(C, PeriodEMA), -1);
ShortCond3 = Cross(UpLevel, RSI(perRSI)); // Третье условие продажи. RSI пересекает Up уровень с верху в низ.
Short = ShortCond1 AND ShortCond2 AND ShortCond3; // Продажа. Три условия вместе
ShortPrice = C;
Sell = Short; Cover = Buy;
stopPercent = Optimize("stop Percent", 2, 0.5, 4, 0.5);
ApplyStop( stopTypeLoss, stopModePercent, stopPercent, ExitAtStop = 1, volatile = False, ReEntryDelay = 0); |
|
Почти правильно.
Только ты обозвал оптимизируемый период RSI - PeriodRSI
Тут
PeriodRSI = Optimize("Period RSI", 10, 1, 100, 2); //оптимизировать RSI 10 от 1 до 100 с шагом 2
А потом подставляешь perRSI
тут
ShortCond3 = Cross(UpLevel, RSI(perRSI));
Можно обзывать как хочешь, но должно быть одинаково.
Shara писал(а): |
Олег, ты давал код: BuyCond = Cross(RSI(perRSI), UpLevel); - это купить если RSI пересекает Up уровень с низу в верх. ShortCond = Cross(DwLevel, RSI(perRSI)); - это продать если RSI пересекает Dw уровень с верху в низ. Или я ни чего не понял?
|
Да.
Shara писал(а): |
Что обозначают буквы "L" - BuyCond2 = Ref(L > EMA(C, 10), -1); и "H" - ShortCond2 = Ref(H < EMA(C, 10), -1); в этих строчках?
|
L - Low (минимум бара или свечи)
H - High (максимум бара или свечи) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shara
Зарегистрирован: 11.02.2013
Сообщения: 30
Откуда: местный
|
Спасибо Олег большое. Значит ставлю везде одинаково PeriodRSI, и все заработает. Щас попробую в ами этот код вставить, схавает или нет, а то мне даже не верится, что сам почти, допетрил. Был бы пример кода с коментариями, было бы легче. А стохастик примерно также? |
Последний раз редактировалось: Shara (Вс Мар 17, 2013 6:07 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
|
Shara
Зарегистрирован: 11.02.2013
Сообщения: 30
Откуда: местный
|
А что обозначает: Error 701. Missing buy/sell variable assignments.
Исправил все perRSI, нажимаю бактест, или Оптимизе. Выдает эту ошибку.
Код такой:
SetTradeDelays(0, 0, 0, 0);
PeriodEMA = Optimize("Period EMA", 10, 1, 200, 1);
PeriodRSI = Optimize("Period RSI", 10, 1, 100, 2); //оптимизировать RSI 10 от 1 до 100 с шагом 2
UpLevel = Optimize("Up Level", 70, 50, 100, 5); //оптимизировать Up уровень 70 от 50 до 100 с шагом 5
DwLevel = Optimize("Down Level", 30, 1, 50, 5); //оптимизировать Dw уровень 30 от 1 до 50 с шагом 5
BuyCond1 = C > Ref(C, -1);
BuyCond2 = Ref(L > EMA(C, PeriodEMA), -1);
BuyCond3 = Cross(RSI(PeriodRSI), DwLevel); // Третье условие покупки. RSI пересекает Dw уровень с низу в верх.
Buy = BuyCond1 AND BuyCond2 AND BuyCond3; // Покупка. Три условия вместе.
BuyPrice = C;
ShortCond1 = C < Ref(C, -1);
ShortCond2 = Ref(H < EMA(C, PeriodEMA), -1);
ShortCond3 = Cross(UpLevel, RSI(PeriodRSI)); // Третье условие продажи. RSI пересекает Up уровень с верху в низ.
Short = ShortCond1 AND ShortCond2 AND ShortCond3; // Продажа. Три условия вместе
ShortPrice = C;
Sell = Short;
Cover = Buy;
stopPercent = Optimize("stop Percent", 2, 0.5, 4, 0.5);
ApplyStop( stopTypeLoss, stopModePercent, stopPercent, ExitAtStop = 1, volatile = False, ReEntryDelay = 0); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Этот код абсолютно правильный. У меня прекрасно работает. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shara
Зарегистрирован: 11.02.2013
Сообщения: 30
Откуда: местный
|
Всем привет.
Олег, у меня не работает. Пишет эту же ошибку. Вставляю этот же код без RSI,работает. Может посмотришь, если время будет. Вот этот работает:
SetTradeDelays(0, 0, 0, 0); // Задержка исполнения сигнала
// Например. Если мы дождались закрытия дня и приняли решение купить завтра утром, то это задержка 1 (решили сейчас а купили на следующем баре)
PeriodEMA = Optimize("Period EMA", 10, 1, 200, 1); //оптимизировать EMA10 от 1 до 200 с шагом 1
BuyCond1 = C > Ref(C, -1); // Первое условие покупки. Цена закрытия больше цены закрытия предыдущей свечи. Тут вместо BuyCond1 можно использовать любое удобное имя.
BuyCond2 = Ref(L > EMA(C, PeriodEMA), -1); // Второе условие покупки. EMA по закрытию с периодом 10 ниже минимума. На предыдущей свече.
Buy = BuyCond1 AND BuyCond2; // Покупка. Оба условия вместе
BuyPrice = C;
// Цена покупки. В момент закрытия свечи увидели, что есть условия на вход и немедленно вошли.
// Размер сделки не задаем. Будем торговать на все доступные деньги.
ShortCond1 = C < Ref(C, -1);
ShortCond2 = Ref(H < EMA(C, PeriodEMA), -1);
Short = ShortCond1 AND ShortCond2;
ShortPrice = C;
// Условие выхода не по стопу не задано. Вероятно переворот при противоположном сигнале.
Sell = Short;
Cover = Buy;
// Стоп
stopPercent = Optimize("stop Percent", 2, 0.5, 4, 0.5); //Оптимизировать StopLoss 2% от 0,5 до 4 с шагом 0,5%
ApplyStop( stopTypeLoss, stopModePercent, stopPercent, ExitAtStop = 1, volatile = False, ReEntryDelay = 0);
// Стоп лосс, задается в процентах, 2%, выходить немедленно по цене стопа, пока открыта сделка стоп не двигать,
// после исполнения стопа запретить последующий вход на протяжении 0 баров. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Только что взял код из сообщения, вставил в АА и сделал бактест на VTB (15 мин). Прекрасно работает.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Shara
Зарегистрирован: 11.02.2013
Сообщения: 30
Откуда: местный
|
У меня без RSI на всех акцмях работает, а с RSI пишет ошибку 701. Missing buy/sell variable assignments. почему то. А ты не знаешь что она означает? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Shara
Зарегистрирован: 11.02.2013
Сообщения: 30
Откуда: местный
|
Переписал весь код вручную, что бы русские буквы не попали, вставил в формулаедитор, пишет ошибку в этой строчке:
Buy = BuyCond1 AND BuyCond2 AND BuyCond3;
error 29. Variable "buycond3" used without having been initialized.
Чето ему не хватает. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|