Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Декабря 09, 2021, 06:46:55 am
Начало Помощь Поиск Войти Регистрация
Новости:

Просмотр сообщений

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Termvsrobo

Pages: [1] 2
1
Подсистема ATF / Re: Прекращение поддержки ATF
« on: Апреля 30, 2014, 10:54:58 am »
Есть ли смысл и возможность дать народу возможность развивать ATF? Со многими продуктами были подобные истории. Например, OpenOffice -> LibreOffice после того, как была куплена SunMicroElectroniks

2
Ну я честно говоря не путаю. Согласен, это плохой тон программирования, но просто в голове держу OP_BUY = 1.

3
Ну вы нам дайте знать, когда работа по развитию и поддержке ATF будет остановлена. Чтобы быть в курсе.

4
Я думаю, что в большинстве умов под закрытием проекта понимается пункт №3, поэтому так и реагируем.

6
OP_BUY - это константа, равная 1.

7
Т.е. событие onTrade вызывается несколько раз для одного и того же id? Даже если и так. Почему не запрещается по условию запрета. Ведь еще перед самым выполнением кода выставления заявки стоит обнуление флага, а значит в след раз не должен выполниться код. А он у меня почему то выполняется, когда выставленный стоп-лосс исполняется.

8
Подсистема ATF / Re: Ошибки.
« on: Апреля 28, 2014, 12:36:07 pm »
Тогда выше указанная функция и собственные сигналы сообщений. Сигналы очень полезны для отладки. Поэтому рекомендую их осваивать.

9
Подсистема ATF / Re: Ошибки.
« on: Апреля 28, 2014, 12:23:54 pm »
файл называется Events.log. Либо еще можно пользоваться функцией signal::alertMultiple(getLastErrorMessage). Она будет выводить текст ошибок.

10
Тоже вариант. Но хочется понять как вызывается функция onTrade. Если мою проблему решить выше изложенным способом, то тогда зачем нужен обработчик события onTrade?

11
Подсистема ATF / Re: Ошибки.
« on: Апреля 28, 2014, 12:07:58 pm »
Ну как вариант можно лог файлы смотреть.

12
Вот написал такой код

#line 0 solid red

extern kol_punktov = 15;
extern kol_lotov = 3;
extern step =0.01;

var trend1;
var trend2;
var i = 0;

function init()
{
   setInitCandles(10);
    setBounds(0, 10, 0);
}

function checkAction() //Определяем наличие активных заявок
{
   var NewArray = new_object("array"); //Определяем количество обычных активных заявок
   NewArray = getActiveOrderIDs();
   var NewArray2 = new_object("array"); //Определяем количество активных стоп-заявок
   NewArray2 = getActiveStopOrderIDs();
   var n = NewArray.size()+NewArray2.size();
   return n;
}

function calc()

{
   trend1 = IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0] - IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0][-1]; //Определяем направление тренда
   trend2 = IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0][-1] - IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0][-2];
   line[0] = trend1; //Для графического представления строим линию
   checkAction();
   var t = checkAction();
   line[1] = 0.01;
   line[2] = -0.01;
   line[3] = trend2;
   //i = 0;
   if (t == 0)    {
   if (trend1>0.01 and trend2>0.01)    {   
                                 //signal::outputMultiple(OP_BUY);
                                 //signal::outputMultiple(OP_SELL);
                                 signal::outputMultiple("i="+i);
                                 i = OP_BUY;
                                 signal::outputMultiple("i="+i);
                                 trade_action::buyMultiple(kol_lotov, ::lots, close);
                                 signal::outputMultiple(getLastErrorMessage());
                              }
   else    {
            signal::output("Тренды меньше 0,01. Событие calc()");
         }
               }
}
   
function onTrade(var id)
{
signal::outputMultiple("Событие onTrade");
signal::outputMultiple("i="+i);
if (i==1)   {
            i = 0;
            var order1 = new_object("hash");
            order1["operation"] = OP_SELL;
            order1["tp_activationprice"] = close+kol_punktov*step;
            order1["tp_quantity"] = kol_lotov;
            order1["tp_correction"] = "0.01";
            order1["tp_guardspread"] = "0.01";
            order1["sl_activationprice"] = close-kol_punktov*step;
            order1["sl_quantity"] = kol_lotov;
            order1["sl_orderprice"] = close-kol_punktov*step;
            trade_action::transactMultiple(order1); //Если тренд восходящий, то встаем в лонг
            }

signal::outputMultiple("i="+i);
}   


Сутью данного кода должно быть следующее. По событию сделки на рынке проверяем есть ли у нас активные сделки, ожидающие исполнения. Если таких сделок нет, то можем смело выставлять ордер на покупку. Выставили ордер, соответственно дальнейшие вызовы calc игнорируются, так как работает условие. Когда наш ордер удовлетворяется, то по событию onTrade выставляем нужный стоп лосс. Выставили. Опять ждем его исполнения. Когда удовлетворяется стоп-лосс, то мы должны запретить выполнение того же события onTrade и разрешить работу calc на выставление ордера. Для этого введен флаг i, который вы можете тут видеть. Я все проверил, по логике вещей все должно работать. Но на деле это работает совсем не так. По первому запуску выставляется ордер на покупку как надо. Когда ордер исполняется, то выставляется стоп лосс как я и хотел. Но дальше, когда стоп лосс исполняется и исполняется выставленная стоп лоссом заявка сново почему-то выставляется еще один стоп-лосс по событию onTrade и все (включая calc) перестает работать. И почему то в ошибке пишется о том, что средств не достаточно. Хотя я все проверял, всего хватает. Может быть как-то иначе можно запретить событие onTrade? Кто знает как это сделать?

13
Почему? Какие причины закрытия проекта? Конкуренция?

15
Внутренней ошибки компилятора возникать не должно, здесь где-то наша ошибка. Можете показать код вашего индикатора?

Вставил код:

static order = 0;
.....
function calc()

{   
   ...
   if (trend1>0.01 and trend2>0.01) {   order = trade_action::buy(kol_lotov, ::lots, close);
                            ....
                            } //Если тренд восходящий, то встаем в лонг
}

И ошибка компилятора перестала возникать.

Pages: [1] 2


Войти

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