Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Января 29, 2022, 01:03:32 am
Начало Помощь Поиск Войти Регистрация
Новости:

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


Просмотр профиля Email
« : Декабря 19, 2014, 02:46:53 pm »

Добрый день! Более менее разобрался с небольшим роботом, но почему - то не проходят заявки на продажу. Главное на покупку без проблем. И деньги на счете есть, и кредитное плечо есть. Вручную продажа отлично работает, а вот робот почему не продает, не пойму. все перелазил уже...  Даже если я например купил 1 лот, и сработал сигнал на продажу 1 лота, все равно заявка не отправляется.

Transaq Trader
ver.5.10.341.10 rev.58 ATF 1.20

вот команда trade_action::sell(1, ::lots);

trade_action::buy(1, ::lots); отлично срабатывает по рынку.
Подскажите где копать? может галочку какую поставить где-нибудь?
Записан
micstura
Full Member
***
Сообщений: 104


Просмотр профиля Email
« Ответ #1 : Декабря 19, 2014, 03:48:28 pm »

Если только это не грааль  напишите скрипт , может у вас где флаг стоит запрещающий продажу.
Скажу по секрету телепатов на форуме не водится.
Записан
buv87
Newbie
*
Сообщений: 12


Просмотр профиля Email
« Ответ #2 : Декабря 19, 2014, 04:01:47 pm »

Скрипт найден тут на форуме. Пересечение скользящих.
#samewindow
#line 0 solid lime
#line 1 solid red

extern   "number" fast = 5;         // Период быстрой EMA
extern   "number" slow = 45;         // Период медленной EMA
extern   "number" lots = 1;         // Базовое число лотов актива

static   SecName;
static   lotsize;
static   NewCandle;
static   CandleTime;
static   quantity;

function init()
{
   setInitCandles(slow+1);
   SecName = getSecName();
   lotsize = getLotSize();
   NewCandle = false;
   CandleTime = getFormattedTime(getServerTime());     
// При перезапуске МТС эта переменная = ""
}

function onNewCandle()
{
   NewCandle = true;
   CandleTime = getFormattedTime(getCandleTime());
   quantity = int(getSecBalance() / lotsize);         
// Определим число лотов в портфеле
}

function calc()
{
   line[0] = MovAvg(ind_ema, fast, pt_close);
   line[1] = MovAvg(ind_ema, slow, pt_close);

   if (NewCandle) {
      if(line[0][-2] < line[1][-2] && line[0][-1] > line[1][-1] )
{
// Зелёная пересекает снизу вверх красную линию
         signal::output(CandleTime + " " + SecName + ": Buy signal.");

         if(quantity < 0) { quantity *= -2; }         
// Закрыть короткую позицию, открыть длинную
         else if(quantity == 0) { quantity = lots; }
         signal::output(CandleTime + " " + SecName + ": Close short, open long. Volume:" + as_string(quantity));
         trade_action::buy(quantity, ::lots);
      }
      else if(line[0][-2] > line[1][-2] && line[0][-1] < line[1][-1] )
{
// Красная пересекает снизу вверх зелёную линию
         signal::output(CandleTime + " " + SecName + ": Sell signal.");

         if(quantity > 0) { quantity *= 2; }           
// Закрыть длинную позицию, открыть короткую
         else if(quantity == 0) { quantity = lots; }
         signal::output(CandleTime + " " + SecName + ": Close long, open short. Volume:" + as_string(quantity));
         trade_action::sell(quantity, ::lots);
      }
   NewCandle = false;
   }
}
Записан
buv87
Newbie
*
Сообщений: 12


Просмотр профиля Email
« Ответ #3 : Декабря 19, 2014, 04:04:26 pm »

Даже элементарный этот скрипт, тоже на продажу не срабатывает. На покупку без проблем.

#samewindow
#line 0 solid red
 
extern fast = 9;
extern slow = 14;
static trend = 0;
 
function init()
{
   setInitCandles(1);
}
 
 
function calc()
{
   line[0] = MovAvg(ind_ema, fast, pt_close);
   line[1] = MovAvg(ind_ema, slow, pt_close);
 
   if (trend == 1 and line[0] < line[1]) {
      trade_action::sell(1, ::lots);
   }
 
   if (trend == -1 and line[0] > line[1]) {
      trade_action::sell(1, ::lots);
   }
 
   if (line[1] < line[0]) {trend = 1;}
   else if (line[1] > line[0]) {trend = -1;}
}

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


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #4 : Декабря 30, 2014, 11:37:07 pm »

В этом скрипте продажа не осуществится никогда ....

так как :  сравниваем    if (trend == -1 and line[0] > line[1]){...}    и  if (line[1] < line[0]) {trend = 1;}     

осложнения : 1. не кратная функция sell.
                     2. параллельная постановка if-ов.

основное противоречие :  в то время как  лайн 1 больше лайн 0 тренд всегда будет = -1 ,....как же тогда мы соотнесем этим неравенством :  if (trend == -1 and line[0] > line[1]) {

т.е. условие теоретически наглядно на графике может и выполнится,...но все линии -глобальные  и  принимают  старые значения прошлой свечки,...и на новой свечке они конечно станут нужными,...и готовы будут удовлетворить нашему неравенству,...но....ведь у нас параллельные ифы,...и минута еще не кончиоась.....а значит влючается такое неравенство (минуя нашу нужную продажу):   if (line[1] < line[0]) {trend = 1;}   - в котором то , как раз до нашего нужного момента (когда глобальная линия 1 приняла свое значение)  - тренд меняется на  = 1  - что автоматом зачеркивает  всю нашу продажу,.....в которой как мы помним тренд требуется = -1,...

Вот такие пироги ))))
Записан
Страниц: [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!