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

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: тестирование стратегии в transaq « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: тестирование стратегии в transaq  (Прочитано 4570 раз)
makeev
Jr. Member
**
Сообщений: 85



Просмотр профиля Email
« : 28.02.2011, 08:34:46 »

На днях пытался воссоздать возможность проведения  тестирования по средствам языка ATF, вот показываю первые плоды. Скипт далеко несовершенен, но он отображает идею.
Если идея интересна, то предлагаю в этой ветки отображать свои идеи и предложения.

сам скрипт:

#samewindow
extern "string" filename = "export.txt";
var f;
extern fast = 9;
extern slow = 14;
extern trade = 1; // акций по умолчанию
var trend = 0;
var time;
var timeday;
var timemonth;
var timeyear;
var transaction; //номер операции
var dipozit = 100000; //дипозит портфеля
var portfolio =0; //портфель акций
var amount =0; // объем по операции


function init()
{
setInitCandles(1);

f = new_object("file");
f.wopen(filename);
   
   f.write("ИНСТРУМЕНТ"+";");
    f.write("№ ТРАНЗАКЦИИ"+";");
    f.write("ВРЕМЯ"+";");
    f.write("ЦЕНА"+";");
    f.write("КУПЛЕНО"+";");
    f.write("ПРОДАНО"+";");   
   f.write("ОБЪЕМ"+";");
   f.writeLn("ДИПОЗИТ"+";");




}

function calc()
{
var sell =0;
var buy =0;
var a=0;
var cv=0;


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

time = getHour(getCandleTime())*60+getMinute(getCandleTime());
timeday=getDay(getCandleTime());
timemonth=getMonth(getCandleTime());
timeyear=getYear(getCandleTime());



   // Покупка

if (trend == -1 and line[0] > line[1]
){

if (portfolio==0 and cv!=noCandle()
){
a=1;


amount= close*trade;
dipozit=dipozit-amount;
portfolio=portfolio+trade;
transaction = transaction + 1;
buy =trade;
cv=noCandle();
}
}


// Продажа
if (trend == 1 and line[0] < line[1]
){

if (portfolio>0 and
cv!=noCandle()
){
a=1;


amount= close*trade;
dipozit=dipozit+amount;
portfolio=portfolio-trade;
transaction = transaction + 1;
sell=-1*trade;
cv=noCandle();
}
}






if (line[1] < line[0]) {trend = 1;}
else if (line[1] > line[0]) {trend = -1;}
   




if (a==1){

f.write(getSecName()+";");
f.write(transaction+";");
f.write(timeday+"/"+timemonth+"/"+timeyear+";");
f.write(close+";");
f.write(buy+";");
f.write(sell+";");
f.write(amount+";");
f.writeLn(dipozit);
}

a=0;

}


вот что вышло

ИНСТРУМЕНТ;№ ТРАНЗАКЦИИ;ВРЕМЯ;ЦЕНА;КУПЛЕНО;ПРОДАНО;ОБЪЕМ;ДИПОЗИТ;
Сбербанк;1;19/1/2010;91.4;1;0;91.4;99908.6
Сбербанк;2;19/1/2010;89.69;0;-1;89.69;99998.3
Сбербанк;3;19/1/2010;91.4;1;0;91.4;99906.9
Сбербанк;4;21/1/2010;90.16;0;-1;90.16;99997.1
Сбербанк;5;27/1/2010;87.7;1;0;87.7;99909.4
Сбербанк;6;29/1/2010;87;0;-1;87;99996.4
Сбербанк;7;29/1/2010;88.13;1;0;88.13;99908.2

и т.д
Записан
AlexandrBK
Jr. Member
**
Сообщений: 50


Просмотр профиля Email
« Ответ #1 : 18.03.2011, 22:33:45 »

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


Войти

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