Transaq

СБО "Transaq" => Подсистема ATF => Topic started by: AndreyD on 16.03.2011, 19:58:04

Title: Вопрос по ATF
Post by: AndreyD on 16.03.2011, 19:58:04
Добрый день, подскажите пожалуйста.
Есть ли команды, позволяющие индикатору входить в сделку по среди свечи, т.е. не ждать её закрытия?
Например если цена пересекает среднюю скользящую
Title: Re: Вопрос по ATF
Post by: nikolz on 16.03.2011, 21:33:05
по-моему ничто не ждет закрытия свечи.
calc() вызывается на каждой сделке.
команда buyMultiple и sellMultiple
позволяют многократно исполнить куплю/продажу внутри свечи.
Title: Re: Вопрос по ATF
Post by: AndreyD on 16.03.2011, 21:50:07
Да я немного ошибся, закрытия программа не ждет. Но другой вопрос возник, я решит потестировать один скрипт из руководства, т.к. он отдаленно напоминает мой алгоритм, который я хочу реализовать :

#samewindow
#line 0 solid red

extern period = 9;

function init()
{
   setInitCandles(1);
}


function calc()
{
   line[0] = MovAvg(ind_ema, period, pt_close);
   
   if (close >= line[0] and close[-1] < line[0][-1]) {
      signal::alert("Покупай!");
   }
   
   if (close <= line[0] and close[-1] > line[0][-1]) {
      signal::alert("Продавай!");
   }
}

В этом случае сигнал появляется лишь единожды, при пересечении средней. Т.е. если одна свеча пересекает среднюю снизу вверх, то появляется сигнал "покупай", но если это же свеча опускается ниже этой средней, то уже сигнала "продавай" нет.
Какой код можно использовать, чтобы сигнал подавался при каждом пересечении средней линии ценой?  ???
Title: Re: Вопрос по ATF
Post by: Олег on 16.03.2011, 21:53:10
signal::alertMultipe(message)
Title: Re: Вопрос по ATF
Post by: AlexandrBK on 16.03.2011, 22:29:26
Внутри свечи работать не очень удобно, лучше таймфрейм поменьше взять, имхо.
Да и если цена будет колебаться вокруг средней, сколько сигналов на продажу и покупку увидите?
Брокер, конечно, спасибо скажет за такую активность, только Вам оно надо?
И последнее.
В Вашем примере сигнала "продавай", если текущая свеча опустится ниже средней, и не должно появиться, поскольку у Вас еще используется предыдущая свеча, которая отработала на покупку и на продажу уже никак не сможет сработать
Title: Re: Вопрос по ATF
Post by: Олег on 16.03.2011, 22:57:56
В Вашем примере сигнала "продавай", если текущая свеча опустится ниже средней, и не должно появиться, поскольку у Вас еще используется предыдущая свеча, которая отработала на покупку и на продажу уже никак не сможет сработать
А по-моему всё должно у него работать правильно. Там же конструкция if... if, а не if... else if.
Только надо поменять сигналы на Multiple.
Title: Re: Вопрос по ATF
Post by: AlexandrBK on 16.03.2011, 23:02:13
Сигнал продавай возникает если предыдущая свеча закрылась ВЫШЕ средней.
Если на текущей свечке появился сигнал "покупай", значит, закрытие предыдущей свечи было НИЖЕ средней!
Даже если сейчас цена упала ниже средней, второе условие станется на покупку! И как тогда должен появиться сигнал на продажу???
Title: Re: Вопрос по ATF
Post by: Олег on 16.03.2011, 23:30:06
Сигнал продавай возникает если предыдущая свеча закрылась ВЫШЕ средней.
Если на текущей свечке появился сигнал "покупай", значит, закрытие предыдущей свечи было НИЖЕ средней!
Даже если сейчас цена упала ниже средней, второе условие станется на покупку! И как тогда должен появиться сигнал на продажу???

Ну так он и не должен появляться. Нас же интересует ПЕРЕСЕЧЕНИЕ двух линий.
Было ниже - стало выше - сигнал.
Было выше - стало ниже - сигнал.

Если использовать Multiple-сигналы, то это будет выглядеть так:
1) если предыдущая свеча закрылась выше средней и
 текущая свеча опускается ниже средней - сигнал на продажу, поднимается выше средней - "молчание" (пересечения-то нет!), снова опускается ниже - снова сигнал на продажу и т.д.

2) если предыдущая свеча закрылась ниже средней и
 текущая свеча поднимается выше средней - сигнал на покупку, опускается ниже средней - "молчание" (пересечения-то нет!), снова поднимается выше - снова сигнал на покупку и т.д.
Title: Re: Вопрос по ATF
Post by: AlexandrBK on 16.03.2011, 23:37:51
В Вашем случае при внутри свечи может возникнуть несколько сигналов на покупку, а товарищ сетовал
что "если одна свеча пересекает среднюю снизу вверх, то появляется сигнал "покупай", но если это же свеча опускается ниже этой средней, то уже сигнала "продавай" нет. " 
Т.е. ему надо сначала сигнал "покупай", а как только цена вниз уползла, внутри этой же свечи должен появиться сигнал "продавай".
На что я сказал - при таких узначальных условиях, когда в формировании сигнала задействована предыдущая свеча, получить сигнал "продавай" нереально. А Ваш мульти-алерт только несколько раз за свечу призовет его к покупкам :)
Title: Re: Вопрос по ATF
Post by: AlexandrBK on 16.03.2011, 23:40:17
Хотя, возможно, я неправ - его вроде интересует именно пересечение...
Тогда в чем смысл фразы, которую я привел?  ???
Title: Re: Вопрос по ATF
Post by: AlexandrBK on 16.03.2011, 23:43:18
ага, я понял - уползание цены вниз внутри свечи тоже считается пересечением и должен возникнуть сигнал на продажу.
Но он не возникнет! Надо поменять таймфрейм.
Извините за  много букв :)
Title: Re: Вопрос по ATF
Post by: Олег on 16.03.2011, 23:45:54
Хотя, возможно, я неправ - его вроде интересует именно пересечение...
Тогда в чем смысл фразы, которую я привел?  ???

Наверно, он просто неточно сформулировал свой замысел :)
Title: Re: Вопрос по ATF
Post by: Олег on 17.03.2011, 00:08:49
ага, я понял - уползание цены вниз внутри свечи тоже считается пересечением и должен возникнуть сигнал на продажу.
Но он не возникнет!

Не считается! :)  Внутри ОДНОЙ свечи пересечений быть не может! Только относительно предыдущих!
Title: Re: Вопрос по ATF
Post by: AndreyD on 17.03.2011, 01:35:55
Внутри свечи работать не очень удобно, лучше таймфрейм поменьше взять, имхо.
Да и если цена будет колебаться вокруг средней, сколько сигналов на продажу и покупку увидите?
Брокер, конечно, спасибо скажет за такую активность, только Вам оно надо?
И последнее.
В Вашем примере сигнала "продавай", если текущая свеча опустится ниже средней, и не должно появиться, поскольку у Вас еще используется предыдущая свеча, которая отработала на покупку и на продажу уже никак не сможет сработать

Да, вы правы, сигналов иногда может быть многовато, но к сожалению идеальных пока торговый систем нет (во всяком случае я не придумал), и во всех есть минусы я думаю. В данной системе основной минус будет только в этом.  :)
Так же зависит ещё с каким периодом использовать среднюю..)

Quote
Т.е. ему надо сначала сигнал "покупай", а как только цена вниз уползла, внутри этой же свечи должен появиться сигнал "продавай".
На что я сказал - при таких узначальных условиях, когда в формировании сигнала задействована предыдущая свеча, получить сигнал "продавай" нереально.

Верно, я просто сам пока не особо силен в программирование, поэтому не могу так сразу определить, что в этом коде не так.

Возможно есть другие условия, при которых, одна свеча может формировать разные сигнала при пересечении вверх и вниз...?

Title: Re: Вопрос по ATF
Post by: nikolz on 17.03.2011, 08:00:58

добавьте
глобальную переменную
var flag;
в Init установите ее в ноль:
flag=0;

 в функцию function calc()

добавьте следующие операторы:   
   if (flag==0 and close >= line[0] and line[0]>low) {
      signal::alertMultipe("Покупай внутри свечи!"); flag=1;
   }
   
   if (flag==1 and close <= line[0] and high > line[0]) {
      signal::alert("Продавай внутри свечи!"); flag=0;
   }
Успехов
Title: Re: Вопрос по ATF
Post by: Олег on 17.03.2011, 10:05:50
Т.е. ему надо сначала сигнал "покупай", а как только цена вниз уползла, внутри этой же свечи должен появиться сигнал "продавай".
На что я сказал - при таких узначальных условиях, когда в формировании сигнала задействована предыдущая свеча, получить сигнал "продавай" нереально.

Верно, я просто сам пока не особо силен в программирование, поэтому не могу так сразу определить, что в этом коде не так.

Здесь программирование ни при чём. Сначала надо чётко сформулировать задачу, которую Вы хотите поставить перед программой, а уже потом пытаться понять, что в коде так, а что не так.
Если Вас интересуют пересечения внутри одной свечи, зачем вообще нужно сравнивать с предыдущей?