Учебная тема

vito

Гераклид упорный
9 Апр 2016
8,221
875
113
Россия

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54
Цитирую:
"Вот тут есть руководство, где рассказывают что значат все эти функции )))
atf:руководство [Документация Transaq]

А еще - это все какой-то псевдокод, который только похож и на js, и на c++, и на arduino ))
Такое ощущение, что он работает внутри какой-нибудь платформы, которая сама является "черным ящиком" и у нас нет к ней доступа. Значит — должно быть АПИ ))
Короче, у него при таком подходе не хватит ни опыта, ни знаний, ни навыков )))
Что реально нужно, чтобы сделать бота:
1) АПИ сервиса, внутри которого бот будет работать. Без этого вообще говорить дальше не о чем )))
2) Реальный набор данных, с которым будет работать бот
3) Что именно хотим получить в итоге: построить график, вывести напоминалку "покупай/продавай" и тп.

По исходной ссылке — обычный псевдокод ))
Что делает вызов функции setInitCandles(); ?? ))))))
Что содержится в массивах low[], line[][] ???
Что это за служебные поля вверху:
#samewindow - типа выполняйся в том же окне?! )))
#line 0 dot maroon - вообще без вариантов )
"
Ответ не мой, я ещё работаю, но больше и я не скажу, без изучения учебника, по крайней мере :)
 

vito

Гераклид упорный
9 Апр 2016
8,221
875
113
Россия
1) АПИ сервиса, внутри которого бот будет работать. Без этого вообще говорить дальше не о чем )))
АПИ встроен в терминал, если я правильно понял о чем речь.
2) Реальный набор данных, с которым будет работать бот
Бот работает с данными индикаторных линий и положения цены.
3) Что именно хотим получить в итоге: построить график, вывести напоминалку "покупай/продавай" и тп.
При сочетании определенных параметров индикаторов отдавать команду на покупку/продажу.
Команды встроены в язык. atf:руководство [Документация Transaq]
По исходной ссылке — обычный псевдокод ))
Я просто сказал, что мне нужно понять с какими переменными работает индикатор.
Что делает вызов функции setInitCandles(); ?? ))))))
Указывает индикатору не рассчитывать значение для заданного количества свечей (начальных).
Что содержится в массивах low[], line[][] ???
Массив low - минимальное значение баров. В скобках номер бара. Line - линия индикатора, первая скобка - номер линии, вторая - смещение относительно формирующегося бара.
Что это за служебные поля вверху:
Они отвечают за стилизацию линий индикатора.
#samewindow - типа выполняйся в том же окне?! )))
Строить индикатор на графике цены. Если не указать, то он строится в отдельном окне.
#line 0 dot maroon - вообще без вариантов )
Что не так? Линия под номером 0 (в коде будет записана line[0]) рисуется точками цвета maroon.
Ответ не мой, я ещё работаю, но больше и я не скажу, без изучения учебника, по крайней мере :)
То, что по ссылке - я это уже читал/читаю. Там, вроде все просто. Нужно только запомнить.
Вам-то это явно не нужно. От меня же - просто мысли вслух.
 
Последнее редактирование:
  • Like
Реакции: dok34.ru

vito

Гераклид упорный
9 Апр 2016
8,221
875
113
Россия
Вот сам терминал. TRANSAQ
Введя логин INTRA1 (и до INTRA8) и пароль transaq, вы попадете в сам терминал, где данные не идут с биржи, а ежедневно повторяются.
Больше отличий он "настоящего" нет, насколько я понял.
Сверху, в меню "графики" (в терминале) есть отдел "скрипты ATF". Вот туда код и записывается.
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54
О, спасибо!
Общими усилиями разберемся :)
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54
Интересно. Я же этого не знаю. Пока не знаю :)
В теории слышал, и от знакомых и от пациентов, а вживую нет :)
Повод есть - посмотрю, с интересом конечно.
 

vito

Гераклид упорный
9 Апр 2016
8,221
875
113
Россия
Вот индикатор, написанный самостоятельно:
Код:
//Индикатор в том же окне
#samewindow
//Стиль линий индикатора
#line 0 solid blue
#line 1 solid red

//Внешняя переменная - период
extern period = 10;

//Внутренняя - тренд
var trend = 0;

//Перед запуском calc()
function init() {
//Не рассчитывать индикатор для первой свечки
  setInitCandles(1);
}


//Пользовательская функция
function defineTrend() {
//Если закрытие предыдущей свечи выше линии 0, тренд = 1
  if (close[-1] > line[0]) {
    trend = 1;
//Если закрытие предыдущей свечи ниже линии 1, тренд = -1
  } else if (close[-1] < line[1]) {
    trend = -1;
  }
}



//Основная функция
function calc() {
//Линия 0 = Скользящей средней(тип средней, период, макс.цена)
  line[0] = MovAvg(ind_sma, period, pt_high);
//Линия 1 = Скользящей средней(тип средней, период, мин.цена)
  line[1] = MovAvg(ind_sma, period, pt_low);

//Определить тренд
  defineTrend();

//Срабатывание алертов
  if (trend ==1) {
    signal::alert("Тренд вверх");
  } else if (trend == -1) {
    signal::alert("Тренд вниз");
  }
}
 
  • Like
Реакции: dok34.ru

vito

Гераклид упорный
9 Апр 2016
8,221
875
113
Россия
Вчерашний индикатор с комментариями:
JavaScript:
//Стиль индикатора
#samewindow
#line 0 dot maroon

//Внешние переменные
extern step = 0.02;                //Шаг индикатора
extern init_step = 0.02;  //Начальный шаг
extern max_step = 0.20;        //Максимальный шаг

//Локальные переменные
var ac;            //Ускорение
var trend;    //Тренд
var ep;            //Точка экстремума (пика)

//Перед calc()
function init()
{
    //Не расчитывать для первой свечи
    setInitCandles(1);
    //Если мин. предыдущей свечи меньше мин.последующей
    if (low < low[1]) {
        //Тренд вверх
        trend = 1;
        //Пик = высшему из двух свечей
        ep = high[0, 1];
        //Линия индикатора = минимуму первой свечи
        line[0] = low;
    }
    //Иначе
    else {
        //Тренд вниз
        trend = -1;
        //Пик = мин из двух
        ep = low[0, 1];
        //Индикатор = максимуму первой
        line[0] = high;
    }
    //Ускорение = нач.шагу
    ac = init_step;
}


//Рассчет
function calc()
{
  //Тренд вверх
    if (trend == 1) {
        //Если макс.свечи > пика
        if (high > ep) {
            //Пик = макс.
            ep = high;
            //Ускорение = ускорение + шаг
            ac += step;
            //если уск больше макс.шага, то вернуть к макс. шагу
            if (ac > max_step) {ac = max_step;}
        }
        //Линия индикаора = предыдущей линии + ускорение * (пик - индикатор предыдущей)
        line[0] = line[0][-1] + ac * (ep - line[0][-1]);
        //Если минимум пересекает линию
        if (low < line[0]) {
            //Смена тренда
            trend = -1;
            //Индикатор = Пику (макс)
            line[0] = ep;
            //Пик становится минимумом
            ep = low;
            //Ускорение = начальному шагу
            ac = init_step;
        }
    }
    //Если тренд вниз
    else {
        //Если минимум меньше пика
        if (low < ep) {
            //Пик = минимум
            ep = low;
            //Ускорение + шаг
            ac += step;
            //Если ускорение больше макс.шага, то приравнять к макс.шагу
            if (ac > max_step) {ac = max_step;}
        }
        //Линия индикаора = предыдущей линии + ускорение * (пик - индикатор предыдущей)
        line[0] = line[0][-1] + ac * (ep - line[0][-1]);
        //Если максимум пересекает линию
        if (high > line[0]) {
            //Тренд вверх
            trend = 1;
            //Индикатор = пику
            line[0] = ep;
            //Пик = максимуму
            ep = high;
            //Ускорение = нач.шагу
            ac = init_step;
        }
    }
}
 
  • Like
Реакции: dok34.ru

vito

Гераклид упорный
9 Апр 2016
8,221
875
113
Россия
Где-то накладывается идеально, где-то нет.
Притом, я вчера сравнивал его с индикатором в другом терминале и он оказался идентичен ему. Т.е может что в родном не так.
 
  • Like
Реакции: dok34.ru

vito

Гераклид упорный
9 Апр 2016
8,221
875
113
Россия
В общем, Док. С параболиками там ерунда серьезная . Все три рисуют по-разному:). Хотя и похожи.
Попробую написать его на данных средней цены. Потом сравню.
 
  • Like
Реакции: dok34.ru

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54
Я ещё не разбирался, только приехал из гостей и пока поработать надо. Хотя интересно :)
Вообще логично поиграть параметрами и понять зависимости. Согласен с подходом :))
 

vito

Гераклид упорный
9 Апр 2016
8,221
875
113
Россия
Вообще логично поиграть параметрами и понять зависимости. Согласен с подходом
Я попробовал и параметры, и менять очередность блоков if...else. Получается что нарисовать можно все что угодно, лишь бы тебе было удобно)))
В принципе, оно так и должно быть. Все равно разные бумаги торгуются с разными параметрами.
 
  • Like
Реакции: dok34.ru

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54
По идее по описанию все понятно и просто...хм, я к сожалению суть не знаю, арифметику так сказать, с алфавитом.
Комповое более-менее. А вот зачем это и то, что это означает...пока туповат я. На выходных или после них попробую выделить время для понимания. Сейчас отдыхать решил. Принудительно :)
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54
1081

Ястреб Брунгильда, сотрудник аэропорта Домодедово :)
 
  • Like
Реакции: vito и Кристина

Кристина

Well-Known Member
17 Ноя 2013
24,853
2,277
113
  • Like
Реакции: dok34.ru

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54
Когда есть ноу хау и есть тонус, решимость развиваться.
Обсуждаемо:))
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54
Док, Биоптрон на глаза можно ставить через веки? Есть опыт?
Вроде по инструкции и делают через веки:
У нас его нет, и личного опыта нет у меня .
На Солнце лучше смотреть для тренировки с закрытыми веками, факт. Тут по сути - аналог.
 
  • Like
Реакции: vito

Кристина

Well-Known Member
17 Ноя 2013
24,853
2,277
113
  • Like
Реакции: vito

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54

vito

Гераклид упорный
9 Апр 2016
8,221
875
113
Россия
И сегодня я узнал всю красоту ввода на Java.
Java:
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String name = bufferedReader.readLine(); //читаем строку с клавиатуры
String sAge = bufferedReader.readLine(); //читаем строку с клавиатуры
int nAge = Integer.parseInt(sAge); //преобразовываем строку в число.
 
  • Like
Реакции: dok34.ru

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
89,404
2,776
113
54
Уточню, ладно?
Красоту, но не всю!:)
Там ещё полно будет нашей прелести :))