Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
Сентября 13, 2024, 08:46:11 pm
Новости:
Transaq
|
СБО "Transaq"
|
Подсистема ATF
| Topic:
Не продает
« предыдущая тема
следующая тема »
Страниц:
[
1
]
Автор
Тема: Не продает (Прочитано 4532 раз)
buv87
Newbie
Сообщений: 12
Не продает
«
:
Декабря 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
Re: Не продает
«
Ответ #1 :
Декабря 19, 2014, 03:48:28 pm »
Если только это не грааль напишите скрипт , может у вас где флаг стоит запрещающий продажу.
Скажу по секрету телепатов на форуме не водится.
Записан
buv87
Newbie
Сообщений: 12
Re: Не продает
«
Ответ #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
Re: Не продает
«
Ответ #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
Re: Не продает
«
Ответ #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:
Не продает
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
J
-----------------------------
-----------------------------
П
-----------------------------
-----------------------------
0
-----------------------------
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Powered by SMF 2.0.10
|
SMF © 2006-2008, Simple Machines LLC
Загружается...