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



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

СообщениеДобавлено: Вт Янв 12, 2010 4:26 pm Ответить с цитатой Вернуться к началу

Открываю новую тему, т.к. порой опеределить по названию темы трудно о чем в ней говориться - а таких "newbie" как я тут я думаю есть еще. Чтобы было проще понять о чем тут будет написано.
Надеюсь никто не против.


При попытке натравить робота на фью на SiH0 квик кричит что неправильно указана цена, число не может содержать разделителя дробной части, получается что у меня 3 нуля после запятой.

в три вот так:

TRANS_ID=01160700; PRICE=29706.000; QUANTITY=1; OPERATION=B; CLASSCODE=SPBFUT; ACTION=NEW_ORDER; TYPE=L; SECCODE=SiH0; ACCOUNT=xxxxxx;

перепробовал функции round, floor, почитал в хелпере, но ничего не меняется... Подскажите, в чем трудность?

Что же нужно сделать, подскажите?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Янв 12, 2010 7:57 pm Ответить с цитатой Вернуться к началу

В инструкции к роботу пункт 6
Цитата:

Обязательно заносите в Information значение минимального шага цены (в поле Tick Size)

Сделано?

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



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

СообщениеДобавлено: Вт Янв 12, 2010 8:17 pm Ответить с цитатой Вернуться к началу

000 писал(а):
В инструкции к роботу пункт 6
Цитата:

Обязательно заносите в Information значение минимального шага цены (в поле Tick Size)

Сделано?


Да, сделано.

ТикСайз = 1.

Я уже весь хелпер перекопал, все функции перепробовал , но никак не убрать мне эти три знака.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Янв 12, 2010 8:46 pm Ответить с цитатой Вернуться к началу

Вот этот код
Код:

Buy = Sell = Short = Cover = 0;

FileName = "C:/test.txt";
f = fopen(FileName, "a");
if(f)
{
  fputs(NumToStr(TickSize) + "\n",f);
  fclose(f);
}

прогони в АА через scan и потом покажи содержимое файла C:\test.txt

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



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

СообщениеДобавлено: Вт Янв 12, 2010 8:58 pm Ответить с цитатой Вернуться к началу

вот что вышло:

1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Янв 12, 2010 11:26 pm Ответить с цитатой Вернуться к началу

Ок.
Теперь вот этот код
Код:

Buy = Sell = Short = Cover = 0;

form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize)))));

FileName = "C:/test.txt";
f = fopen(FileName, "a");
if(f)
{
  fputs(NumToStr(123.456, format = form) + "\n", f);
  fclose(f);
}

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



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

СообщениеДобавлено: Вт Янв 12, 2010 11:41 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Ок.
Теперь вот этот код
Код:

Buy = Sell = Short = Cover = 0;

form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize)))));

FileName = "C:/test.txt";
f = fopen(FileName, "a");
if(f)
{
  fputs(NumToStr(123.456, format = form) + "\n", f);
  fclose(f);
}


тоже самое:

1.000
1.000
1.000
1.000
1.000.....
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Янв 12, 2010 11:48 pm Ответить с цитатой Вернуться к началу

Нет. Это наверное цифры с первого прогона.
Удали их из файла и прогони еще раз.

Этот код должен писать 123,456 обрезанный в зависимости от TickSize
Если TickSize = 1 то должно записаться 123
Если TickSize = 0,1 то должно записаться 123,4
Если TickSize = 0,01 то должно записаться 123,45

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



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

СообщениеДобавлено: Вт Янв 12, 2010 11:51 pm Ответить с цитатой Вернуться к началу

а-а-а...и правда...

получилось только 123.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Янв 13, 2010 12:04 am Ответить с цитатой Вернуться к началу

Ну вот. Т.е
Код:
form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize)))));

работает. И в роботе эта строка есть. Теперь непонятно каким макаром в tri попадает цена со знаками после запятой....

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



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

СообщениеДобавлено: Ср Янв 13, 2010 12:41 am Ответить с цитатой Вернуться к началу

000 писал(а):
Ну вот. Т.е
Код:
form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize)))));

работает. И в роботе эта строка есть. Теперь непонятно каким макаром в tri попадает цена со знаками после запятой....


Странно тогда, на сбере сегодня ставил тик 0.01 и все нормально работало. Тут же я ничего не менял, только эккаунт свой и все...

Попробую убрать код робота и заново его вставить с сайта. Хотя по строкам сверил, ничего подозрительного не обнаружил вроде.
Посмотреть профиль Отправить личное сообщение
SImple



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

СообщениеДобавлено: Ср Янв 13, 2010 1:03 am Ответить с цитатой Вернуться к началу

Вобщем тупым cntr-c, cnrl-v кода робота и чистки три, а потом Buy= 1; появились нормальные транзакции...) Ура!

thanks a million!
Посмотреть профиль Отправить личное сообщение
Alex14



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

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

в продолжение темы такой вопрос: как поставить округление по фьючу, чтобы он в тестере округлял до 5 в большую сторону. В *. tri файл пишется все нормально, но вот в тестере результатю не совсем правдивые (у меня стоит цена на покупку по пересечении линии, а она не всегда кратна 5). Спасибо
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Лучше всего изменить именно значение линии. Типа так
Код:

линия = ceil(линия/TickSize)*TickSize;

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen