Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
24.01.2025, 05:28:45
Начало Помощь Поиск Войти Регистрация
Новости: ООО «Скрин маркет системз», правообладатель программы «Система брокерского обслуживания «TRANSAQ» официально заявляет, что не ведет никакой деятельности в мессенджерах или социальных сетях. 
Подробности на нашем сайте  WWW.TRANSAQ.RU.

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: balance для FORTS « предыдущая тема следующая тема »
Страниц: 1 [2] Печать
Автор Тема: balance для FORTS  (Прочитано 15941 раз)
daytrader
Full Member
***
Сообщений: 174


Просмотр профиля Email
« Ответ #15 : 24.08.2011, 18:16:39 »

я сразу создавал файлы на всякий случай.
только ты не забывай логику:

переменная file
открыл для записи
записал
закрыл

и так каждый раз - не закроешь - будет ошибка
Записан
makeev
Jr. Member
**
Сообщений: 85



Просмотр профиля Email
« Ответ #16 : 24.08.2011, 19:05:50 »

Пересмотрел код  раз десять, ну вроде не должно быть проблем с созданием. Я честно не знаю что именно ему мешало, но после того как я создал файл вручную он начал туда что то писать.
Разработчики: может ли быть такое явление  из за функции IndRef ?  я уж чес слово не знаю на что грешить.  Ранее у меня с эти проблем вообще не было.   
Записан
makeev
Jr. Member
**
Сообщений: 85



Просмотр профиля Email
« Ответ #17 : 25.08.2011, 11:07:58 »

От чего может быть такая хрень?   я расчитывал баланс по вышеуказанному скрипту. баланс он расчетал и записал в фаил значение, а переменная осталась пустой.
Записан
daytrader
Full Member
***
Сообщений: 174


Просмотр профиля Email
« Ответ #18 : 25.08.2011, 11:11:24 »

логика в следующем. В начале ты делаешь расчет для переменной и присваиваешь ей значение, и только потом записываешь переменную в файл


приведи код - посмотрим
Записан
makeev
Jr. Member
**
Сообщений: 85



Просмотр профиля Email
« Ответ #19 : 25.08.2011, 12:20:09 »

 я ж писал его ранее..

поправь его чтоб наглядно было


var portfolio=0;
extern factor=0;
var file;


function init(){

file = new_object("file");
file.ropen("portfolio"+getClient() +".txt");
if (file.isopen()) {
portfolio = file.readLn();
file.close();

file.wopen("portfolio"+getClient() +".txt");

}


}




function onATFTrade(var id)
{

var x = getTrade(id);
if ( x["operation"]==OP_BUY){portfolio=portfolio+ x["quantity"] +factor;}   
if ( x["operation"]==OP_SELL){portfolio=portfolio- x["quantity"] +factor;}   


   file.seek(0);
   file.writeLn(portfolio);

}
Записан
makeev
Jr. Member
**
Сообщений: 85



Просмотр профиля Email
« Ответ #20 : 25.08.2011, 12:25:46 »

Господа разработчики подключайтесь к дискуссии. Неужели вы и правда думаете, что эта проблема только у меня?
Хоть он и будет работать только по заявкам, которые выставлены по рынку, но все лучше чем ничего.
Записан
daytrader
Full Member
***
Сообщений: 174


Просмотр профиля Email
« Ответ #21 : 25.08.2011, 17:09:21 »

Code: [Select]
static balance;

function init() {
// ЗАПРОСИМ БАЛАНС
file = new_object("file");
file.ropen("./!DATA/" + name + "/balance.txt");
balance = file.readLn();
file.close();
}

function onATFOrder(var id) {
order_id = id;
timer = getFormattedTime(getServerTime());
var order = getOrder(order_id);
var status = order["status"];
// ИСПОЛНЕНА
if (status == OS_MATCHED) {
order_id = 0;
if (start == 1) {deal = 1;}
if (start == 2) {deal += 1;}
// # СДЕЛКИ
file = new_object("file");
file.wopen("./!DATA/" + name + "/deal.txt");
file.writeLn(deal);
file.close();
}
// СНЯТА (отклонена биржей не удалось выставить аннулирована биржей отклонена контрагентом)
if (status == OS_REJECTED || status ==OS_FAILED || status == OS_REMOVED || status == OS_REFUSED) {
order_id = 0;
// ВЫСТАВИМ ЗАНОВО
if (order["operation"] == OP_SELL) {
trade_action::sell(order["quantity"], ::lots,close-slip);
signal::output ("снова ставим заявку");
}
if (order["operation"] == OP_BUY) {
trade_action::buy(order["quantity"], ::lots,close+slip);
signal::output ("снова ставим заявку");
}
}
}

function onATFTrade(var id) {
timer = getFormattedTime(getServerTime());
trade_id = id;
var operation;
var newBalance;
var trade = getTrade(trade_id);

if (trade["operation"] == OP_SELL){
operation = " SELL ";
newBalance = balance-trade["quantity"];
}
if (trade["operation"] == OP_BUY) {
operation = " BUY ";
newBalance = balance+trade["quantity"];
}
signal::outputMultiple (name + operation + trade["quantity"] + " по " + trade["price"] + " | " + timer);

// ЗАПИШЕМ В ФАЙЛ
// БАЛАНС
file = new_object("file");
file.wopen("./!DATA/" + name + "/balance.txt");
file.writeLn(balance);
file.writeLn("время: " + timer);
file.close();
}

вот отрывок
если каких скобок закрывающих нет - извиняйте - это выборочный код - но должен помочь
Записан
makeev
Jr. Member
**
Сообщений: 85



Просмотр профиля Email
« Ответ #22 : 25.08.2011, 18:22:14 »

Замутил ))))) Спасибо. щас попробую переварить
Записан
makeev
Jr. Member
**
Сообщений: 85



Просмотр профиля Email
« Ответ #23 : 25.08.2011, 18:49:02 »

не могу понять. Ты пишешь:  newBalance = balance-trade["quantity"];  и записываешь newBalance  в локальную переменную, но далее на запись у тебя идет   глоб balance. мы же вроде операций над ней никаких не делали.  что заставило static balance; изменить свое значение?
Записан
makeev
Jr. Member
**
Сообщений: 85



Просмотр профиля Email
« Ответ #24 : 26.08.2011, 09:27:31 »

Написал на интре вот такую штуку. баланс по идеи будет работать если выставлять по рынку.

static portfolio=0;
var file;

function init(){

file = new_object("file");
file.ropen("portfolio"+getClient() +".txt");
if (file.isopen()) {
portfolio = file.readLn();
file.close();

}}

function onATFTrade(var id)
{
   var x = getTrade(id);
   signal::output("Лот в сделке " + x["quantity"]);
   var lots=x["quantity"];

   if ( x["operation"]==OP_BUY){portfolio=portfolio+x["quantity"];}   
   if ( x["operation"]==OP_SELL){portfolio=portfolio-x["quantity"];}   


   file.wopen("portfolio"+getClient() +".txt");
   file.seek(0);
   file.writeLn(portfolio);
   file.close();


}


function calc()
{

line[0]=portfolio;


 
if (close>high[-1] ){trade_action::buy(1,::lots);}
if (close<low[-1] ){trade_action::sell(1,::lots);}



Записан
daytrader
Full Member
***
Сообщений: 174


Просмотр профиля Email
« Ответ #25 : 26.08.2011, 11:27:42 »

не могу понять. Ты пишешь:  newBalance = balance-trade["quantity"];  и записываешь newBalance  в локальную переменную, но далее на запись у тебя идет   глоб balance. мы же вроде операций над ней никаких не делали.  что заставило static balance; изменить свое значение?

забыл написать balance = newBalance;

просто у меня там потом куча кода в зависимости от нового баланса. Обнуляются многие переменные и прочее. Так что я его просто не скопировал.

На вопрос зачем создавать отдельную переменную для нового баланса, если можно всегда работать со старым, отвечу, что иногда расчет такой не проходит, по непонятным причинам, и я обошелся малым - новой переменной.
Записан
Страниц: 1 [2] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: balance для FORTS « предыдущая тема следующая тема »
Перейти в:  


Войти

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