Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Фракталы и настройка бэктестера Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
OldYoung



Зарегистрирован: 09.10.2016
Сообщения: 6

СообщениеДобавлено: Вт Окт 11, 2016 6:54 pm Ответить с цитатой Вернуться к началу

Уважаемые форумчане, у меня такие вопросы сложились... Если где то ответы уже были - ткните носом пожалуйста...
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.

Пытаемся объявить
Код:
myBuyPrice[0]=0;

или так
Код:
myBuyPrice=High

Это неправильно, но я даже не знаю как тут объявить массив.... по сути без разницы, ибо все значения будут перезаписаны. В результате получаем кашу.... Где у нас фрактал, там значение верное, уже следующее значение неверно, дальше тоже, и так до следующего фрактала.
Цитата:
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

СообщениеДобавлено: Вт Окт 11, 2016 7:46 pm Ответить с цитатой Вернуться к началу

Код:
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

СообщениеДобавлено: Вт Окт 11, 2016 8:36 pm Ответить с цитатой Вернуться к началу

Черт.... так просто вроде, а не дошел сам....
Не пойму зачем это?
Код:
Plot(C, "", colorBlack, styleCandle);

_________________
Учусь потихоньку.....
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Окт 11, 2016 8:53 pm Ответить с цитатой Вернуться к началу

OldYoung писал(а):

Не пойму зачем это?
Код:
Plot(C, "", colorBlack, styleCandle);

Вставил код в Formula Editor, нажал Apply и сразу смотришь линию myBuyPrice относительно цены.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
OldYoung



Зарегистрирован: 09.10.2016
Сообщения: 6

СообщениеДобавлено: Ср Окт 12, 2016 8:49 am Ответить с цитатой Вернуться к началу

000 писал(а):

Вставил код в Formula Editor, нажал Apply и сразу смотришь линию myBuyPrice относительно цены.

А я думаю почему ничего не меняется, если я закомментил эту строку..... У меня в коде уже прописано построение графика котировок, потому эта строка и не меняла ничего, что и ввело в заблуждение.
Спасибо огромное!

_________________
Учусь потихоньку.....
Посмотреть профиль Отправить личное сообщение
OldYoung



Зарегистрирован: 09.10.2016
Сообщения: 6

СообщениеДобавлено: Пн Окт 17, 2016 3:09 pm Ответить с цитатой Вернуться к началу

Олег, еще вопросы....
1. Гоняю тестер на фьючерсах нефти. Там по минимальная позиция - 10 лотов. При этом в самом квике указывается размер позиции, например 1, то есть куплено (продано) 10 лотов. В тестере же у меня он считает именно 10, и указывает в отчете тоже 10. Где настройки надо поправить?
2. Как определить находится система на конкретном баре в позиции или нет? Чую, вопросы банальны и задавались уже не раз, но ничего внятного найти не могу....
Спасибо

_________________
Учусь потихоньку.....
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Окт 17, 2016 3:52 pm Ответить с цитатой Вернуться к началу

1. В настройках символа
http://www.amisite.ru/begin/bd_info.php
установи размер лота Round Lot Size

Хотя какая разница?
2. В общем никак. Тоесть есть пара способов но оба не простые. А зачем?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
OldYoung



Зарегистрирован: 09.10.2016
Сообщения: 6

СообщениеДобавлено: Вт Окт 18, 2016 12:21 am Ответить с цитатой Вернуться к началу

000 писал(а):
1. В настройках символа
http://www.amisite.ru/begin/bd_info.php
установи размер лота Round Lot Size

Хотя какая разница?
2. В общем никак. Тоесть есть пара способов но оба не простые. А зачем?


1. Это сразу делал. Все равно по 10 считает. Разницы в общем нет, просто для изучения....

2. Скользящий стоп хочу попробовать реализовать. Попробую тогда именно по стопам поискать.....

_________________
Учусь потихоньку.....
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen