Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Импорт сделок из файла Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
yunk



Зарегистрирован: 23.02.2013
Сообщения: 32

СообщениеДобавлено: Ср Ноя 26, 2014 5:52 pm Ответить с цитатой Вернуться к началу

Прошу помочь в создании скрипта.
У меня есть файл со сделками, нужно импортировать их в систему.
Система проводит сделки по другому инструменту, поэтому в текстовом файле отображается только следующая информация:
---
SandP500,Short,26/06/2013,13:00:00,Cover,26/06/2013,17:00:00
---
Файл конечно могу и переделать, если необходимо.
То, что нашем на форуме, к сожалению, с этими функциями не справляется.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 27, 2014 12:40 am Ответить с цитатой Вернуться к началу

Эту тему смотрел?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
yunk



Зарегистрирован: 23.02.2013
Сообщения: 32

СообщениеДобавлено: Чт Ноя 27, 2014 11:28 am Ответить с цитатой Вернуться к началу

000 писал(а):
Эту тему смотрел?

Спасибо!!! Первый вариант кода заработал, а я сначала пробовал последние 2 варианта.
Только где нужно поправить, чтобы убрать временной лаг (ты написал "Времена испорчены из соображений копирайта").
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 27, 2014 1:14 pm Ответить с цитатой Вернуться к началу

Нет там задержки. Это я имел ввиду, что изменил время в файле относительно того, которое стояло изначально.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
yunk



Зарегистрирован: 23.02.2013
Сообщения: 32

СообщениеДобавлено: Чт Ноя 27, 2014 1:42 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Нет там задержки. Это я имел ввиду, что изменил время в файле относительно того, которое стояло изначально.

А у меня на часовом графике все сделки получаются +1 час
Т.е. я ввожу в файле к примеру время 10:00:00, а в тестере исполнение в 11:00:00
Посмотреть профиль Отправить личное сообщение
yunk



Зарегистрирован: 23.02.2013
Сообщения: 32

СообщениеДобавлено: Чт Ноя 27, 2014 1:47 pm Ответить с цитатой Вернуться к началу

Я бы конечно мог просто поменять все время в файле на час назад, но тогда некоторые сделки (в начале дня) начинают пропускаться
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 27, 2014 2:56 pm Ответить с цитатой Вернуться к началу

Может в настройках тестера стоит задержка?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 27, 2014 2:59 pm Ответить с цитатой Вернуться к началу

И еще. В настройках Ами время свечи установлено закрытие или открытие?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
yunk



Зарегистрирован: 23.02.2013
Сообщения: 32

СообщениеДобавлено: Чт Ноя 27, 2014 3:14 pm Ответить с цитатой Вернуться к началу

000 писал(а):
И еще. В настройках Ами время свечи установлено закрытие или открытие?

В настройках все ок. Эта же стратегия на этом инструменте тестируется правильно.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 27, 2014 3:51 pm Ответить с цитатой Вернуться к началу

Хм. Что значит все ок?
Если используешь самый первый код, то там есть такие строки
Код:
Buy=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Buy;


Важен кусок Cross(TimeNum(),t0)
Когда время свечи становится больше чем t0 (время из файла)
Подчеркиваю БОЛЬШЕ!!

Попробуй сделать так
Код:
Buy=(TimeNum()==t0 AND DateNum()==d0) OR Buy;

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 27, 2014 4:00 pm Ответить с цитатой Вернуться к началу

Либо можно изменить время свечек на графике (в настройках). Попробуй поставить LAST tick

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
yunk



Зарегистрирован: 23.02.2013
Сообщения: 32

СообщениеДобавлено: Чт Ноя 27, 2014 4:16 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Хм. Что значит все ок?
Если используешь самый первый код, то там есть такие строки
Код:
Buy=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Buy;


Важен кусок Cross(TimeNum(),t0)
Когда время свечи становится больше чем t0 (время из файла)
Подчеркиваю БОЛЬШЕ!!

Попробуй сделать так
Код:
Buy=(TimeNum()==t0 AND DateNum()==d0) OR Buy;

Спасибо большое, все получилось!!!
Выкладываю рабочий код:

Код:

/*
 Индюк для Ami чтоб смотреть свою/чужую внутридневную торговлю стрелочками :)

 При выборе нового security ищет по указанному ниже пути файл с именем
тикера и расширением .txt
 Файл должен состоять из строк вида 

05/12/05 10.51.14 SELL
12/12/05 11.11.41 BUY 
13/12/05 12.31.45 SELL
14/12/05 13.58.36 SHORT
15/12/05 14.43.13 COVER

 без отступов в начале строки. Всё идентифицируется по позиции в строке
(номеру колонки) Вид разделителей даты и времени неважен.

  Т.е., чтоб по всем тикерам смотреть, нужно иметь стока файлов .txt, скока
тикеров в базе. Пример файла txt прилагается. Времена испорчены из соображений
копирайта (не моя торговля).

*/
 
// эти 2 функции скрал с амисайта, пардон :)
function Date_To_Num(ddmmyy)
{
   dd_ = StrToNum(StrLeft(ddmmyy,2));
   mm_ = StrToNum(StrMid(ddmmyy,3,2));
   aa_ = StrToNum(StrRight(ddmmyy,2));
   return (10000 * (aa_+100)) + (100 * mm_) + dd_;
}
function Time_To_Num(hhmmss)
{
   hh_t = StrToNum(StrLeft(hhmmss,2));
   mm_t = StrToNum(StrMid(hhmmss,3,2));
   ss_t = StrToNum(StrRight(hhmmss,2));
   return 10000 * hh_t + 100 * mm_t + ss_t;
}


function rtrim(s)
{
   i=StrFind(s," ");
   if(i==0)i=StrFind(s,"\n");
   if(i==0)i=StrFind(s,"\t");
   if(i>0)
    s=StrLeft(s,i-1);
   return s; 
}

fh = fopen( "C:/**********.txt", "r");
if( fh ){
   Buy=0; Sell=0; Short=0; Cover=0;
   while( ! feof( fh ) ) {
      s= fgets( fh );
         d0=Date_To_Num(StrLeft(s,8));
         t0=Time_To_Num(StrMid(s,9,8));
          act=StrMid(s,18,2);
          if(act=="BU")
             Buy=(TimeNum()==t0 AND DateNum()==d0) OR Buy;
          else if(act=="SE")
            Sell=(TimeNum()==t0 AND DateNum()==d0) OR Sell;
          else if(act=="SH")
            Short=(TimeNum()==t0 AND DateNum()==d0) OR Short;
          else if(act=="CO")
            Cover=(TimeNum()==t0 AND DateNum()==d0) OR Cover;
   }
   fclose( fh );
 
PlotOHLC(O,H,L,C,"Price",colorBlack);
PlotShapes(IIf(Buy,shapeUpArrow,0),colorGreen);
PlotShapes(IIf(Sell,shapeDownArrow,0),colorRed);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),colorGreen);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),colorRed);
} else {
   printf("ERROR: file can not be found (does not exist)");
}
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen