Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
23.01.2025, 20:58:02
Начало Помощь Поиск Войти Регистрация
Новости: ООО «Скрин маркет системз», правообладатель программы «Система брокерского обслуживания «TRANSAQ» официально заявляет, что не ведет никакой деятельности в мессенджерах или социальных сетях. 
Подробности на нашем сайте  WWW.TRANSAQ.RU.

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Помогите решить проблему « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Помогите решить проблему  (Прочитано 8670 раз)
mishgan-gan
Newbie
*
Сообщений: 34


Просмотр профиля Email
« : 01.03.2011, 14:57:21 »

Проблема втом, как добавить скользящую среднюю в MACD В формулу с определённым периудом и превязать её к Line1 , что бы был расчёт и  отрисовка В  MACD всё в одном, это получается третья  линия, напишите пример. а то голова не работает совсем ???
Заранее спасибо!
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #1 : 02.03.2011, 10:30:30 »

Вообще есть удобный вариант без ATF - просто добавляете индикатор MACD, кликаете на нем правой кнопкой и выбираете меню "Скользящая средняя...".

Если все же нужен ATF, то можно поступить так:

Code: [Select]
extern period1 = 12;
extern period2 = 26;
extern period3 = 9;
extern period_ma = 10;

function calc() {
  line[0] = IndRef("macd", period1, period2, period3, ind_ema, ind_ema, ind_ema, pt_close)[0];
  line[1] = IndRef("macd", period1, period2, period3, ind_ema, ind_ema, ind_ema, pt_close)[1];
  line[2] = MovAvg(ind_ema, period_ma, line[0]);
}
Записан
mishgan-gan
Newbie
*
Сообщений: 34


Просмотр профиля Email
« Ответ #2 : 02.03.2011, 11:47:33 »

Спасибо ! у меня вчера вариант получился:
#line 0 solid blue
#line 1 solid red

static trend = 0;

extern period1 =9;
extern period2 = 9;
extern period3 =9;
extern period4 =5;

function init()
{
   setBounds(1, period1, 0);
   setBounds(0, period1, 0);

}

function calc()
{      setInitCandles(-1);   
      line[0]= MovAvg(ind_wma, period1,pt_close) - MovAvg(ind_ema, period2, pt_close);
    line[1]=MovAvg(ind_wma, period4, line[0]);
}
Задумка такая сделать МТС покупала\продоваля по быстрой Line1, и скользяшей средней  в MACD,
Ломая голову  и подбирая значения периудов понял что линии MACD Запаздывают со сдвигом гдето -3 свечи назад что придумать посоветуйте!!!
Реально хочу сделать флетовый МТС!!!
Записан
mishgan-gan
Newbie
*
Сообщений: 34


Просмотр профиля Email
« Ответ #3 : 02.03.2011, 12:33:44 »

А как рисунок добавить ?
Записан
mishgan-gan
Newbie
*
Сообщений: 34


Просмотр профиля Email
« Ответ #4 : 02.03.2011, 13:59:51 »

Вот график с ATF
Записан
mishgan-gan
Newbie
*
Сообщений: 34


Просмотр профиля Email
« Ответ #5 : 02.03.2011, 15:20:31 »

Идея МТС состоит в том что если синяя линяя прересекает красную сверху  "Продажа"
если с низу то покупка. Т.е действия только при пересичении, на графике видно 3 пересечения, а торговых сигналов штук 20 в обе стороны. Можно ли от этого избавиться  и главное сдвиг, можно ли сделать сигнал на покупку\прожажу чуть раньше как реализовать хотя бы примерно.
И правильно ли я понял настройки графика 1 мин, 5мин, влияет только на графическую отрисовку а на действия МТС нет. заранее простите за тупизм !!! ::)
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #6 : 03.03.2011, 11:27:08 »

По поводу картинок на форуме вопрос сложный. Как-то они здесь прикладываются, и некоторые пользователи это делают, но как именно это происходит - мне не известно. Просто не разбирались с этим :)

Что касается МТС, то тут у меня есть такое соображение (этот момент всегда всплывает, когда кто-то начинает писать роботов): дело в том, что по каждому трейду последнее значение индикатора пересчитывается, и возникшее пересечение, которое вызовет совершение сделки, потом при очередном трейде будет пересчитано заново, и пересечения уже может и не быть. С учетом того, что у вас линия MACD и скользящая средняя проходят очень близко друг к другу, таких "ложных" пересечений может быть множество. Как их обрабатывать - это в общем-то уже в зависимости от того, как вы к ним относитесь. Можно, например, всегда их считать как существенные и оставить вашу систему без изменений, а можно напротив выжидать какое-то время, и совершать сделки только в функции onNewCandle(), например. Ну то есть в зависимости от ваших предпочтений - как оно более прибыльно не могу судить :)
Записан
mishgan-gan
Newbie
*
Сообщений: 34


Просмотр профиля Email
« Ответ #7 : 03.03.2011, 12:50:47 »

То есть цена постоянно стучится об линию и и поэтому так много сигналов, тогда как
описать в формуле считать истенным только пиковые соединения кую функцию применить, и как заменить
алерты, символами на графике, например стрелочками или цифрами из меню символов
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #8 : 03.03.2011, 17:04:41 »

Ну тут смотря что вы имеете ввиду под "пиковыми". Каждое из этих пересечений вполне себе законно. Сформулируйте четко условие, которое для вас существенно, тогда будет понятно что с этим делать.
Записан
mishgan-gan
Newbie
*
Сообщений: 34


Просмотр профиля Email
« Ответ #9 : 03.03.2011, 19:31:46 »

Хотелось бы, что бы визуальные пересечения только торговать,  и напишите пожалуйста как выводить  символы на график, какую строку применять, в место Сообщения при пересечении.
Сорри за тупизм, послдений раз программировал на basic лет так 20 назад.
Записан
sova0.08
Newbie
*
Сообщений: 3


Просмотр профиля Email
« Ответ #10 : 03.03.2011, 21:51:56 »

Возникла небольшая проблемка,  нужна Ваша помощь.  Мне нужно, чтобы индикатор начал вычисляться и отрисовываться,  начиная с текущего момента  ( т.е с запуска скрипта )  и до отмены.  Каким образом задать эту начальную точку, потому что все предыдущие значения и график, которые левее начальной точки, мне не нужны и даже вредны.  Что  посоветуете, господа  модераторы ?
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #11 : 04.03.2011, 13:21:35 »

mishgan-gan, тогда вы можете проверять условие пересечения в функции onNewCandle() - когда она вызывается, свеча уже целиком закрыта, и вы точно знаете как визуально будет выглядеть индикатор.

Отметки на графике на данный момент выставлять из ATF нельзя. В планах.

sova0.08, можно использовать функции isHistoryCalculated() или onHistoryCalculated(). Первую например можно вызывать, чтобы удостовериться, что история уже рассчитана, либо во второй можно просто обнулять значения.
Записан
sova0.08
Newbie
*
Сообщений: 3


Просмотр профиля Email
« Ответ #12 : 12.03.2011, 13:53:53 »

Heller,  спасибо за подсказку в отношении  isHistoryCalculated  и  onHistoryCalculated.  Но, поскольку я человек далекий от программирования, мне от названий этих двух функций теплее не стало.  Все основы языка ATF я стараюсь освоить из примеров, а по поводу этих двух функций практически ничего нет ( в т.ч. и в Руководстве).  Поэтому вопросов стало больше, а ответов нет.  Может быть, какой-нибудь небольшой примерчик как их использовать и куда ставить  ( до calc  или после  или встроить в init ).  Извините,  что отрываю от важных дел своими дурацкими вопросами.
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #13 : 16.03.2011, 13:39:26 »

sova0.08, если у вас была функция:

function calc()
{
  ...что-то там...
}

То можно просто заменить ее на


function calc()
{
  if (isHistoryCalculated()) {
    ...что-то там...
  }
}
Записан
Страниц: [1] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Помогите решить проблему « предыдущая тема следующая тема »
Перейти в:  


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!