Автор |
Сообщение |
SImple
Зарегистрирован: 31.12.2009
Сообщения: 31
|
Открываю новую тему, т.к. порой опеределить по названию темы трудно о чем в ней говориться - а таких "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
|
В инструкции к роботу пункт 6
Цитата: |
Обязательно заносите в Information значение минимального шага цены (в поле Tick Size)
|
Сделано? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
SImple
Зарегистрирован: 31.12.2009
Сообщения: 31
|
000 писал(а): |
В инструкции к роботу пункт 6
Цитата: |
Обязательно заносите в Information значение минимального шага цены (в поле Tick Size)
|
Сделано? |
Да, сделано.
ТикСайз = 1.
Я уже весь хелпер перекопал, все функции перепробовал , но никак не убрать мне эти три знака. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот этот код
Код: |
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
|
вот что вышло:
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
|
Ок.
Теперь вот этот код
Код: |
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
|
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
|
Нет. Это наверное цифры с первого прогона.
Удали их из файла и прогони еще раз.
Этот код должен писать 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
|
а-а-а...и правда...
получилось только 123. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну вот. Т.е
Код: |
form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize))))); |
работает. И в роботе эта строка есть. Теперь непонятно каким макаром в tri попадает цена со знаками после запятой.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
SImple
Зарегистрирован: 31.12.2009
Сообщения: 31
|
000 писал(а): |
Ну вот. Т.е
Код: |
form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize))))); |
работает. И в роботе эта строка есть. Теперь непонятно каким макаром в tri попадает цена со знаками после запятой.... |
Странно тогда, на сбере сегодня ставил тик 0.01 и все нормально работало. Тут же я ничего не менял, только эккаунт свой и все...
Попробую убрать код робота и заново его вставить с сайта. Хотя по строкам сверил, ничего подозрительного не обнаружил вроде. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
SImple
Зарегистрирован: 31.12.2009
Сообщения: 31
|
Вобщем тупым cntr-c, cnrl-v кода робота и чистки три, а потом Buy= 1; появились нормальные транзакции...) Ура!
thanks a million! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
в продолжение темы такой вопрос: как поставить округление по фьючу, чтобы он в тестере округлял до 5 в большую сторону. В *. tri файл пишется все нормально, но вот в тестере результатю не совсем правдивые (у меня стоит цена на покупку по пересечении линии, а она не всегда кратна 5). Спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Лучше всего изменить именно значение линии. Типа так
Код: |
линия = ceil(линия/TickSize)*TickSize;
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|