Автор |
Сообщение |
yunk
Зарегистрирован: 23.02.2013
Сообщения: 32
|
Прошу помочь в создании скрипта.
У меня есть файл со сделками, нужно импортировать их в систему.
Система проводит сделки по другому инструменту, поэтому в текстовом файле отображается только следующая информация:
---
SandP500,Short,26/06/2013,13:00:00,Cover,26/06/2013,17:00:00
---
Файл конечно могу и переделать, если необходимо.
То, что нашем на форуме, к сожалению, с этими функциями не справляется. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Эту тему смотрел? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
yunk
Зарегистрирован: 23.02.2013
Сообщения: 32
|
Спасибо!!! Первый вариант кода заработал, а я сначала пробовал последние 2 варианта.
Только где нужно поправить, чтобы убрать временной лаг (ты написал "Времена испорчены из соображений копирайта"). |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нет там задержки. Это я имел ввиду, что изменил время в файле относительно того, которое стояло изначально. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
yunk
Зарегистрирован: 23.02.2013
Сообщения: 32
|
000 писал(а): |
Нет там задержки. Это я имел ввиду, что изменил время в файле относительно того, которое стояло изначально. |
А у меня на часовом графике все сделки получаются +1 час
Т.е. я ввожу в файле к примеру время 10:00:00, а в тестере исполнение в 11:00:00 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
yunk
Зарегистрирован: 23.02.2013
Сообщения: 32
|
Я бы конечно мог просто поменять все время в файле на час назад, но тогда некоторые сделки (в начале дня) начинают пропускаться |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Может в настройках тестера стоит задержка? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
И еще. В настройках Ами время свечи установлено закрытие или открытие? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
yunk
Зарегистрирован: 23.02.2013
Сообщения: 32
|
000 писал(а): |
И еще. В настройках Ами время свечи установлено закрытие или открытие? |
В настройках все ок. Эта же стратегия на этом инструменте тестируется правильно. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм. Что значит все ок?
Если используешь самый первый код, то там есть такие строки
Код: |
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
|
Либо можно изменить время свечек на графике (в настройках). Попробуй поставить LAST tick |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
yunk
Зарегистрирован: 23.02.2013
Сообщения: 32
|
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)");
}
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
|