Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
ФХЪРСап 13, 2024, 11:57:38 pm
Начало Помощь Поиск Войти Регистрация
Новости:

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: как??? « предыдущая тема следующая тема »
Страниц: [1] 2 Печать
Автор Тема: как???  (Прочитано 9341 раз)
LyonSorel
Newbie
*
Сообщений: 22


Просмотр профиля Email
« : пЭТРап 26, 2014, 12:02:13 pm »

Как нарисовать индикатор, например, с 10 минутного графика для 30 минутного.
Никак не могу въехать, читал на форуме что это возможно, но каким образом не нашел ни тут, ни в руководстве.
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #1 : пЭТРап 27, 2014, 11:49:17 am »

Лёгким способом никак не нарисуешь (если я правильно понял, что вы хотите использовать данные 10-минутных графиков в скрипте, привязанном к 30-ти минутным свечкам).

Можно придумать какие-то обходные пути вроде экспорта из одного графика данных файл и последующего его чтения в другом графике, кто-то такое даже делал, но это путь тяжелый и вряд ли он того стоит.
Записан
LyonSorel
Newbie
*
Сообщений: 22


Просмотр профиля Email
« Ответ #2 : пЭТРап 27, 2014, 11:53:54 am »

нет, как раз наоборот на 10 минутном получать данные с 30 минутного. Вот этот пример "Максимум/минимум в конкретный интервал времени" вроде подходит но рисует он что-то не понятное
Записан
LyonSorel
Newbie
*
Сообщений: 22


Просмотр профиля Email
« Ответ #3 : пЭТРап 27, 2014, 12:04:12 pm »

я понимаю что на 10-ти мин. графике есть все данные для 30-ти мин. но вот как правильно ими воспользоваться, конкретно нужны high и low для 30-ти мин свечи
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #4 : пЭТРап 27, 2014, 12:14:53 pm »

Если такой вариант, то проблемы запрограммировать такое нет, хотя готового скрипта, насколько я помню, не было.

Общая идея заключается в том, чтобы для каждой свечки искать минимум и максимум руками за интервал в 30-минут, но используя данные 10-ти минутной свечки. Это можно сделать за счет функций getCandleTime и setCandlePosition. Можно так же использовать синтаксис high[from, to] и low[from,to], сложность только в том, чтобы найти вот эти from и to учитывая все пограничные случаи, но это всё решаемо.
Записан
LyonSorel
Newbie
*
Сообщений: 22


Просмотр профиля Email
« Ответ #5 : пЭТРап 27, 2014, 12:18:17 pm »

Это я уже прочувствовал, так сказать, но как выстроить логику, что и в каком порядке использовать, вот в чем вопрос. Я не большой спец в ATF потому и спрашиваю.
Записан
LyonSorel
Newbie
*
Сообщений: 22


Просмотр профиля Email
« Ответ #6 : пЭТРап 27, 2014, 12:20:41 pm »

#line 0 colored_hist
#line 1 nodraw blue
#line 2 nodraw red
#line 3 nodraw green
#line 4 nodraw green
extern period1 = 5;
extern period2 = 34;
extern period3 = 13;
extern period4 = 8;
extern period5 = 5;
extern lag1 = 8;
extern lag2 = 5;
extern lag3 = 3;

var buffer = 0;
static position = "";
 
function init(){
   var max = period1;
   if (period2 > max) {max = period2;}
   setBounds(0, max - 1, 0);
   setBounds(1, lag1, lag1);
   setBounds(2, lag2, lag2);
   setBounds(3, lag3, lag3);
   buffer = new_object("linebuffer");
    setInitCandles(2);
}
 
function checkLong(){
   if(open > line[3]) {return buffer[2] < buffer[1] and buffer[1] < buffer[0];}
}
function checkShort(){
   if(close > line[1]) {return buffer[2] > buffer[1] and buffer[1] > buffer[0];}
}
function checkExitLong(){
   if(close < line[1]) {return noCandle() > 0 + 5 and buffer[2] > buffer[1] and buffer[1] > buffer[0];}
}
function checkExitShort(){
   if(open > line[3]) {return noCandle() > 0 + 5 and buffer[2] < buffer[1] and buffer[1] < buffer[0];}
}

function enterLong(){trade_action::buy(1, ::lots, open);}
function enterShort(){trade_action::sell(1, ::lots, open);}
function exitLong(){trade_action::sell(1, ::lots, open);}
function exitShort(){trade_action::buy(1, ::lots, open);}

function check()
{
  if (not position and checkLong()) {
    enterLong();
    position = "long";
    return;
  }
  if (not position and checkShort()) {
    enterShort();
    position = "short";
    return;
  }
  if (position == "long" and checkExitLong()) {
    exitLong();
    position = "";
    return;
  }
  if (position == "short" and checkExitShort()) {
    exitShort();
    position = "";
    return;
  }
}
function calc()
{
   buffer[0] = MovAvg(ind_sma, period1, pt_med) - MovAvg(ind_sma, period2, pt_med);
   buffer[1] = buffer[-1];
   buffer[2] = buffer[-2];
   buffer[3] = MovAvg(ind_sma, period3, pt_med);
   buffer[4] = MovAvg(ind_sma, period4, pt_med);
   buffer[5] = MovAvg(ind_sma, period5, pt_med);
   line[0] = buffer[0];
   line[1][lag1] = buffer[3];
   line[2][lag2] = buffer[4];
   line[3][lag3] = buffer[5];
   check();
}

Вот полный текущий код робота, для полного счастья нужно получить "подтверждения" сигналов с индикаторов 30-ти мин. графика
Записан
LyonSorel
Newbie
*
Сообщений: 22


Просмотр профиля Email
« Ответ #7 : пЭТРап 27, 2014, 04:26:28 pm »

попробовал выгружать данные 30-ти мин. индикатора в файл, выгружать то он их выгружает, но еще и какие-то левые цифры заносит:(
#line 0 solid red
extern period1 = 5;
extern period2 = 34;
extern "string" filename = "c:\\export.txt";
var f;

function init()
{
   var max = period1;
   if (period2 > max) {max = period2;}
   setBounds(0, max - 1, 0);
   f = new_object("file");
   f.wopen(filename);
}
 
function calc()
{
   line[0] = MovAvg(ind_sma, period1, pt_med) -
      MovAvg(ind_sma, period2, pt_med);
   f.writeLn(line[0]);
}
« Последнее редактирование: пЭТРап 27, 2014, 04:30:21 pm от LyonSorel » Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #8 : пЭТРап 28, 2014, 07:56:39 am »

Решение:

Первый скрипт стоит на 30 минутном графике:
 
//----------------------------------------------------------------------------------------------------------------------------------------------------

  function init() {setEnvVariable("high",0); setEnvVariable("low",0);   }

  function onNewCandle() {setEnvVariable("high",high); setEnvVariable("low",low);  }   

если хотите сдвиги , используйте high[1] , low[1], хотите скорость обновления - вместо onNewCandle() поставьте Calc() .......

//----------------------------------------------------------------------------------------------------------------------------------------------------


Второй скрипт стоит на 10 минутном графике :

//----------------------------------------------------------------------------------------------------------------------------------------------------
  function calc() {   line[0] = getEnvVariable("high");  line[1] = getEnvVariable("low");                   }      - ну и вывод и цвет линий добавьте
//----------------------------------------------------------------------------------------------------------------------------------------------------

Итог : Как минимум будет показывать блоки 30-минутки на 10-минутке.

Записан
LyonSorel
Newbie
*
Сообщений: 22


Просмотр профиля Email
« Ответ #9 : пЭТРап 28, 2014, 08:00:57 am »

Спасибо за ответ, уже так сделал, вполне себе не плохо получилось. Вот только проблем возник, другого плана, в тестировщике уже не прогнать стратегию:(
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #10 : пЭТРап 28, 2014, 08:14:16 am »

Тут да, не прогнать,...ну остается только через файл, скорее всего через XML
Записан
LyonSorel
Newbie
*
Сообщений: 22


Просмотр профиля Email
« Ответ #11 : пЭТРап 28, 2014, 08:18:44 am »

Решил таки глянуть, что такое INTRA, глаз вывалился напрочь :( печальное зрелище
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #12 : пЭТРап 28, 2014, 08:21:41 am »

Это в 10 - минутке.

var xml = new_object("xmlarchive");  xml.loadfile("file");   line[0] = xml.loadvar("high");  line[1] = xml.loadvar("low");

30-минутка:

var xml = new_object("xmlarchive");  xml.newdocument("file"); xml.savevar("high", high);  xml.savevar("low", low);


но эти штуки лучше прикрутить в НьюКэндл
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #13 : пЭТРап 28, 2014, 08:24:44 am »

Спасибо за ответ, уже так сделал, вполне себе не плохо получилось. Вот только проблем возник, другого плана, в тестировщике уже не прогнать стратегию:(

Стоп, так если внедрить в ваш скрипт - то прогнать по тестировщику.
Записан
LyonSorel
Newbie
*
Сообщений: 22


Просмотр профиля Email
« Ответ #14 : пЭТРап 28, 2014, 08:50:52 am »

30-минутка:

var xml = new_object("xmlarchive");  xml.newdocument("file"); xml.savevar("high", high);  xml.savevar("low", low);

но эти штуки лучше прикрутить в НьюКэндл
это в  xml занесет значения последней свечи, ньюкэндл тут тоже не помошник
Записан
Страниц: [1] 2 Печать 
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!