Автор |
Сообщение |
OldYoung
Зарегистрирован: 09.10.2016
Сообщения: 6
|
Уважаемые форумчане, у меня такие вопросы сложились... Если где то ответы уже были - ткните носом пожалуйста...
1. Для обучения себя любимого делаю систему на основе фракталов Уильямса (просто под руку подвернулось).
Код выглядит следующим образом
Так считаю фракталы (спер из нета, тут тоже где то было)
Код: |
FractalPeriod = Param("Fractal period",5,3,25,2);
FractalColor = ParamColor("Fractal color",colorBlue);
HighFractal = HHV(Ref(High,int(FractalPeriod/2)),FractalPeriod) == High;
LowFractal = LLV(Ref(Low,int(FractalPeriod/2)),FractalPeriod) == Low; |
На выходе имеем массивы, в которых нули и единицы, единицы соответствуют экстремуму.
Далее хочу создать 2 массива, для каждого фрактального массива соответственно (HighFractal и LowFractal ), в котором будут цены на сделку. Например для HighFractal, будет массив myBuyPrice, в котором будут значения последнего встретившегося фрактала, Значения повторяются до того, как не образуется новый... Запутанно как-то.... Ладно, код будет понятнее.
В общем массив образуется так (для простоты возьмем только HighFractal)
Код: |
myBuyPrice=IIf(HighFractal==True,High,Ref(myBuyPrice,-1)); |
Получаем Error 29: Variable myBuyPrice used without having been intitalized.
Пытаемся объявить
или так
Это неправильно, но я даже не знаю как тут объявить массив.... по сути без разницы, ибо все значения будут перезаписаны. В результате получаем кашу.... Где у нас фрактал, там значение верное, уже следующее значение неверно, дальше тоже, и так до следующего фрактала.
Цитата: |
23.09.2016 16:29:59, 0.000 - 0.000
23.09.2016 17:29:59, 1.000 - 47.850
23.09.2016 18:29:59, 0.000 - 46.250
23.09.2016 19:29:59, 0.000 - 45.720
23.09.2016 20:29:59, 0.000 - 45.650
23.09.2016 21:29:59, 0.000 - 45.650
23.09.2016 22:29:59, 0.000 - 45.650
23.09.2016 23:29:59, 1.000 - 46.270
24.09.2016 0:29:59, 0.000 - 45.650
26.09.2016 10:29:59, 0.000 - 45.750
26.09.2016 11:29:59, 0.000 - 45.750
26.09.2016 12:29:59, 0.000 - 45.750
26.09.2016 13:29:59, 1.000 - 46.750
26.09.2016 14:29:59, 0.000 - 45.750
26.09.2016 15:29:59, 0.000 - 45.770
26.09.2016 16:29:59, 0.000 - 46.110
26.09.2016 17:29:59, 0.000 - 46.400
26.09.2016 18:29:59, 1.000 - 47.650
26.09.2016 19:29:59, 0.000 - 46.480
26.09.2016 20:29:59, 0.000 - 46.650 |
Заменим Immediate If на обычный цикл с условием.
Код: |
myBuyPrice[0]=0; //опять объявляем массив....
for( i = 1; i < BarCount; i++ ) /*цикл приходится делать с 1, но это неважно, так как самый первый элемент все равно не будет фракталом*/
{
if( HighFractal[ i ] ==True)
{
myBuyPrice[i]=High[ i ];
}
else
{
myBuyPrice[i]=myBuyPrice[i-1];
}
} |
В результате получаем абсолютно корректный массив. Что я делаю не так в первом случае?
Для наглядности корректный результат
Цитата: |
05.10.2016 11:29:59, 0.000 - 51.360
05.10.2016 12:29:59, 0.000 - 51.360
05.10.2016 13:29:59, 0.000 - 51.360
05.10.2016 14:29:59, 0.000 - 51.360
05.10.2016 15:29:59, 1.000 - 51.970
05.10.2016 16:29:59, 0.000 - 51.970
05.10.2016 17:29:59, 0.000 - 51.970
05.10.2016 18:29:59, 1.000 - 52.090
05.10.2016 19:29:59, 0.000 - 52.090
05.10.2016 20:29:59, 0.000 - 52.090
05.10.2016 21:29:59, 1.000 - 52.000
05.10.2016 22:29:59, 0.000 - 52.000
05.10.2016 23:29:59, 0.000 - 52.000
06.10.2016 0:29:59, 0.000 - 52.000
06.10.2016 10:29:59, 0.000 - 52.000
06.10.2016 11:29:59, 0.000 - 52.000
06.10.2016 12:29:59, 0.000 - 52.000
06.10.2016 13:29:59, 0.000 - 52.000
06.10.2016 14:29:59, 0.000 - 52.000
06.10.2016 15:29:59, 0.000 - 52.000
06.10.2016 16:29:59, 0.000 - 52.000
06.10.2016 17:29:59, 1.000 - 52.640
06.10.2016 18:29:59, 0.000 - 52.640
06.10.2016 19:29:59, 0.000 - 52.640
06.10.2016 20:29:59, 0.000 - 52.640
06.10.2016 21:29:59, 1.000 - 52.650
06.10.2016 22:29:59, 0.000 - 52.650
06.10.2016 23:29:59, 0.000 - 52.650
07.10.2016 0:29:59, 0.000 - 52.650
07.10.2016 10:29:59, 0.000 - 52.650 |
|
_________________ Учусь потихоньку..... |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
FractalPeriod = Param("Fractal period",5,3,25,2);
FractalColor = ParamColor("Fractal color", colorBlue);
HighFractal = HHV(Ref(High,int(FractalPeriod/2)),FractalPeriod) == High;
LowFractal = LLV(Ref(Low,int(FractalPeriod/2)),FractalPeriod) == Low;
myBuyPrice = ValueWhen(HighFractal, H);
Plot(C, "", colorBlack, styleCandle);
Plot(myBuyPrice, "", ColorRed); |
Вот так. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
OldYoung
Зарегистрирован: 09.10.2016
Сообщения: 6
|
Черт.... так просто вроде, а не дошел сам....
Не пойму зачем это?
Код: |
Plot(C, "", colorBlack, styleCandle); |
|
_________________ Учусь потихоньку..... |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
OldYoung писал(а): |
Не пойму зачем это?
Код: |
Plot(C, "", colorBlack, styleCandle); |
|
Вставил код в Formula Editor, нажал Apply и сразу смотришь линию myBuyPrice относительно цены. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
OldYoung
Зарегистрирован: 09.10.2016
Сообщения: 6
|
000 писал(а): |
Вставил код в Formula Editor, нажал Apply и сразу смотришь линию myBuyPrice относительно цены. |
А я думаю почему ничего не меняется, если я закомментил эту строку..... У меня в коде уже прописано построение графика котировок, потому эта строка и не меняла ничего, что и ввело в заблуждение.
Спасибо огромное! |
_________________ Учусь потихоньку..... |
|
Посмотреть профиль Отправить личное сообщение |
|
OldYoung
Зарегистрирован: 09.10.2016
Сообщения: 6
|
Олег, еще вопросы....
1. Гоняю тестер на фьючерсах нефти. Там по минимальная позиция - 10 лотов. При этом в самом квике указывается размер позиции, например 1, то есть куплено (продано) 10 лотов. В тестере же у меня он считает именно 10, и указывает в отчете тоже 10. Где настройки надо поправить?
2. Как определить находится система на конкретном баре в позиции или нет? Чую, вопросы банальны и задавались уже не раз, но ничего внятного найти не могу....
Спасибо |
_________________ Учусь потихоньку..... |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
1. В настройках символа
http://www.amisite.ru/begin/bd_info.php
установи размер лота Round Lot Size
Хотя какая разница?
2. В общем никак. Тоесть есть пара способов но оба не простые. А зачем? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
OldYoung
Зарегистрирован: 09.10.2016
Сообщения: 6
|
000 писал(а): |
1. В настройках символа
http://www.amisite.ru/begin/bd_info.php
установи размер лота Round Lot Size
Хотя какая разница?
2. В общем никак. Тоесть есть пара способов но оба не простые. А зачем? |
1. Это сразу делал. Все равно по 10 считает. Разницы в общем нет, просто для изучения....
2. Скользящий стоп хочу попробовать реализовать. Попробую тогда именно по стопам поискать..... |
_________________ Учусь потихоньку..... |
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|