|
IGHOR (OP)
Legendary
Offline
Activity: 1035
Merit: 1065
|
|
September 02, 2014, 08:37:50 PM |
|
Вышел багфикс 8, релиз кандидат. Исправлены баги в JL Script когда ордер не выставлялся и еще пару багов. Понемногу буду записывать видео документации, вот первое видео: https://www.youtube.com/watch?v=a02i_dKBN4k
|
Qt Bitcoin TraderVerify digital signature of the app in the file properties every time you download it.
|
|
|
IGHOR (OP)
Legendary
Offline
Activity: 1035
Merit: 1065
|
|
September 05, 2014, 02:00:39 AM |
|
Вышел v1.07.99 багфикс релиз 9. Исправлены баги с кодировкой. Исправлен баг JL Script когда невозможно достать информацию с ордер бука. Исправлен баг движка бирж, битфинекс опять работает. Добавлено два новых события: trader.on("MyLastTrade").changed() // Выполнился любой ордер в вашем аккаунте
trader.on("LastTrade").changed() // Выполнился любой ордер на бирже
|
Qt Bitcoin TraderVerify digital signature of the app in the file properties every time you download it.
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
September 05, 2014, 03:57:50 AM |
|
Кстати некоторые правила не срабатывают. Например, Когда баланс USD > 20 , то продать всё за XXX. Ордер не выставляется. В то же время правило с ценами вполне работает , тоесть правило Когда Цена >< XXX то продать за XXX- ордер выставляется.
Получается, что правила с балансами не срабатывают.
Подтверждаю, правила с балансами срабатывают не всегда. Это проблема всех бирж а не программы. Если у вас объем выходит за баланс и биржа отменяет ордер. Но это касаеться только ордеров на покупку. Для решения следует использовать в правиле "- коммисия". И будет число меньше, которое сработает. Но я все перепроверю. В 98-ой версии все правила с балансами работают, а в 99-ой нет. Это проблема программы. Например, когда ордер исполняется. то мой баланс изменяется. вот на это событие создается правило: Наример Если баланс > xxx, то динь. Это правило в 98-ой срабатывает, а в 99-ой нет.
|
|
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
September 05, 2014, 01:06:15 PM |
|
В 98-ой версии все правила с балансами работают, а в 99-ой нет. Это проблема программы.
Например, когда ордер исполняется. то мой баланс изменяется. вот на это событие создается правило: Наример Если баланс > xxx, то динь.
Это правило в 98-ой срабатывает, а в 99-ой нет.
Спасибо за баг репорт. Вот приватный билд с фиксом. Добавил событие исполнения своих и маркет ордеров в правила. https[Suspicious link removed] https://dl.dropboxusercontent.com/u/860231/QtBitcoinTrader_Beta.dmgУраа! Заработало!! Спасибо Большое. Большое спасибо создателю этой программы!!!
|
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
September 05, 2014, 01:46:51 PM |
|
Знающие и понимающие, подскажите, пожалуйста. Что такое API лаг? Как работать с ним в правилах? Покажите на простеньком примере, для чего его можно применить?
|
|
|
|
IGHOR (OP)
Legendary
Offline
Activity: 1035
Merit: 1065
|
|
September 05, 2014, 01:48:06 PM |
|
Знающие и понимающие, подскажите, пожалуйста. Что такое API лаг? Как работать с ним в правилах? Покажите на простеньком примере, для чего его можно применить?
Api Lag - это значение в секундах которое являеться промежутком времени между отправкой запроса и приемом результата. Используеться для определения доступности биржи. Например если лаг больше 15 секунд, значит возможности торговать нет, проблемы у биржи или у вас нет интернета. Это для того чтобы вы могли определить когда запросы на открытие ордеров или отмену отправлять не желательно. http://forum.centrabit.com/viewtopic.php?f=3&t=4168
|
Qt Bitcoin TraderVerify digital signature of the app in the file properties every time you download it.
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
September 05, 2014, 04:11:08 PM |
|
Вот попыталсь воспроизвести пример скрипта вычисления среднего значения. Всё сделала , как описано , но ничего не вышло. Вот цитата, которая не понятна. Да написать команду, но КУДА? Где должна быть эта команда? В JL Script можно создавать как свои индикаторы так и события к ним. Для этого используеться одна команда trader.sendEvent("имя",значение); Так же команда может быть вызвана с помощью трех параметров trader.sendEvent("символ","имя",значение); Вы можете придумать любое уникальное имя которое не совпадает с существующими именами индикаторов и отправлять значение всем группам скриптов. Например, вы хотите создать индикатор вычисления среднего чесла последних цен спроса и предложения AskPrice и BidPrice. Назовем индикатор "MidPrice". Транслировать событие этого индикатора будет выше указанная функция trader.sendEvent("MidPrice",значение);
Вот эту команду куда вставлять? trader.sendEvent("MidPrice",значение);
Если в начало скрипта ? [sup]trader.sendEvent("MidPrice",значение); var lastMidPrice=0; calculateMidPrice(); // Вызываем функцию при старте, чтобы не дожидаться изменения индикаторов
function calculateMidPrice() { var midPrice=(trader.get("BidPrice")+trader.get("AskPrice"))/2; if(midPrice==lastMidPrice)return; // Останавливаемся если значение не изменилось lastMidPrice=midPrice; // Сохраняем последнее значение trader.sendEvent("MidPrice",midPrice); // Транслируем наше событие }
trader.on("LastPrice").changed() { calculateMidPrice(); }
trader.on("AskPrice").changed() { calculateMidPrice(); }[/sup] то проверка кода ругается и выдает ошибку. Если в отдельный скрипт-группу, то также результата нет?
|
|
|
|
IGHOR (OP)
Legendary
Offline
Activity: 1035
Merit: 1065
|
|
September 05, 2014, 04:23:09 PM |
|
Вот эту команду куда вставлять? trader.sendEvent("MidPrice",значение);
В коде который вы процитировали эта команда уже есть. (trader.sendEvent("MidPrice",midPrice); - midPrice это переменная с вычисленным значением индикатора) Ошибка у вас изза того что текст "значение" нужно заменить на число или переменную. Команду надо выполнять в момент изменения вашего индикатора. Если вы добавите строку "trader.sendEvent("MidPrice",100.3);" в начало кода, то команда будет выполнена единожды. В результате вашему индикатору MidPrice будет присвоено значение 100.3 и оно не будет меняться. Для того чтобы значение вашего индикатора менялось, надо вызывать эту команду с вторым параметром значения вашего индикатора в момент его изменения. Для этого ваши вычисления надо поместить в таймер или событие.
|
Qt Bitcoin TraderVerify digital signature of the app in the file properties every time you download it.
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
September 05, 2014, 04:31:25 PM |
|
Вот попыталсь воспроизвести пример скрипта вычисления среднего значения. Всё сделала , как описано , но ничего не вышло. Вот цитата, которая не понятна. Да написать команду, но КУДА? Где должна быть эта команда? В JL Script можно создавать как свои индикаторы так и события к ним. Для этого используеться одна команда trader.sendEvent("имя",значение); Так же команда может быть вызвана с помощью трех параметров trader.sendEvent("символ","имя",значение); Вы можете придумать любое уникальное имя которое не совпадает с существующими именами индикаторов и отправлять значение всем группам скриптов. Например, вы хотите создать индикатор вычисления среднего чесла последних цен спроса и предложения AskPrice и BidPrice. Назовем индикатор "MidPrice". Транслировать событие этого индикатора будет выше указанная функция trader.sendEvent("MidPrice",значение);
Вот эту команду куда вставлять? trader.sendEvent("MidPrice",значение);
Если в начало скрипта ? [sup]trader.sendEvent("MidPrice",value); var lastMidPrice=0; calculateMidPrice(); // Вызываем функцию при старте, чтобы не дожидаться изменения индикаторов
function calculateMidPrice() { var midPrice=(trader.get("BidPrice")+trader.get("AskPrice"))/2; if(midPrice==lastMidPrice)return; // Останавливаемся если значение не изменилось lastMidPrice=midPrice; // Сохраняем последнее значение trader.sendEvent("MidPrice",midPrice); // Транслируем наше событие }
trader.on("LastPrice").changed() { calculateMidPrice(); }
trader.on("AskPrice").changed() { calculateMidPrice(); }[/sup] то проверка кода ругается и выдает ошибку Не может найти переменную value Если в отдельный скрипт-группу, то также результата нет?
|
|
|
|
IGHOR (OP)
Legendary
Offline
Activity: 1035
Merit: 1065
|
|
September 05, 2014, 04:33:08 PM Last edit: September 05, 2014, 04:43:45 PM by IGHOR |
|
то проверка кода ругается и выдает ошибку Не может найти переменную value Если в отдельный скрипт-группу, то также результата нет?
У каждого события есть три переменные локального действия. Это: symbol, name, value. symbol это пара, символ примером которой есть текст "BTCUSD" name код индикатора, текстовое название, пример "LastPrice" value дробное значение которое содержит последнее значение индикатора Эти переменные могут быть использованы в любом месте события, а так же не использованы вовсе. Эти переменные работают только внутри событий и сохраняют в себе значения события. Вместо value подставьте число или переменную с результатом ваших вычислений. Например: trader.sendEvent("MidPrice",200.4); Или: var myVariable; // ваша переменная которая сохраняет результат индикатора myVariable=(trader.get("BidPrice")+trader.get("AskPrice"))/2; // присваиваем переменной среднее значение trader.sendEvent("MidPrice",myVariable);// транслируем значение в индикатор под названием MidPrice
|
Qt Bitcoin TraderVerify digital signature of the app in the file properties every time you download it.
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
September 05, 2014, 04:55:01 PM |
|
то проверка кода ругается и выдает ошибку Не может найти переменную value Если в отдельный скрипт-группу, то также результата нет?
У каждого события есть три переменные локального действия. Это: symbol, name, value. symbol это пара, символ примером которой есть текст "BTCUSD" name код индикатора, текстовое название, пример "LastPrice" value дробное значение которое содержит последнее значение индикатора Эти переменные могут быть использованы в любом месте события, а так же не использованы вовсе. Эти переменные работают только внутри событий и сохраняют в себе значения события. Вместо value подставьте число или переменную с результатом ваших вычислений. Например: trader.sendEvent("MidPrice",200.4); Или: var myVariable; // ваша переменная которая сохраняет результат индикатора myVariable=(trader.get("BidPrice")+trader.get("AskPrice"))/2; // присваиваем переменной среднее значение trader.sendEvent("MidPrice",myVariable);// транслируем значение в индикатор под названием MidPrice вопрос в том, где должна быть эта команда? В отдельной группе? В отдельнойм скрипте? И если мы высиляем среднее значение. то причем тут число? Оно же вычисляемое. Какая функция это числа?
|
|
|
|
IGHOR (OP)
Legendary
Offline
Activity: 1035
Merit: 1065
|
|
September 05, 2014, 05:11:35 PM |
|
Далее запускаем все скрипты и смотрим в консоль. Смотрим : ничего не происходит.
В первом скрипте у вас рабочая трансляция значения индикатора. В втором скрипте вы используете событие вашего индикатора и выводите результат в лог при каждом его изменении. В третем скрипте вы пытаетесь транслировать ваш индикатор с первого скрипта повторно, трансляция индикатора должна быть только одна. Вывода у вас нет потому что значение первого скрипта транслируется при запуске а дальше при каждом изменении значения. То что вы сделали: 1) запустилипервый скрипт, значение протранслировалось единожды и ждет изменений цен маркета. 2) запустили остальные скрипты, но они не получили значения потому что запущены после первого скрипта и пропустили трансляцию запуска. Запустите сначала второй скрипт а потом первый и увидите результат сразу, или подождите когда изменяться цены маркета и увидите вывод в консоль второго скрипта. Что вы хотите сделать в третем скрипте? вопрос в том, где должна быть эта команда? В отдельной группе? В отдельнойм скрипте? И если мы высиляем среднее значение. то причем тут число? Оно же вычисляемое. Какая функция это числа?
Это был пример использования в двух вариантах. sendEvent для одного индикатора должен быть только в одном скрипте. Трансляция индикатора у вас в первом скрипте. Теперь вы можете отлавливать изменения из любого другого скрипта (пример ваш второй скрипт).
|
Qt Bitcoin TraderVerify digital signature of the app in the file properties every time you download it.
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
September 05, 2014, 05:28:33 PM |
|
Далее запускаем все скрипты и смотрим в консоль. Смотрим : ничего не происходит.
В первом скрипте у вас рабочая трансляция значения индикатора. В втором скрипте вы используете событие вашего индикатора и выводите результат в лог при каждом его изменении. В третем скрипте вы пытаетесь транслировать ваш индикатор с первого скрипта повторно, трансляция индикатора должна быть только одна. Вывода у вас нет потому что значение первого скрипта транслируется при запуске а дальше при каждом изменении значения. То что вы сделали: 1) запустилипервый скрипт, значение протранслировалось единожды и ждет изменений цен маркета. 2) запустили остальные скрипты, но они не получили значения потому что запущены после первого скрипта и пропустили трансляцию запуска. Запустите сначала второй скрипт а потом первый и увидите результат сразу, или подождите когда изменяться цены маркета и увидите вывод в консоль второго скрипта. Что вы хотите сделать в третем скрипте? вопрос в том, где должна быть эта команда? В отдельной группе? В отдельнойм скрипте? И если мы высиляем среднее значение. то причем тут число? Оно же вычисляемое. Какая функция это числа?
Это был пример использования в двух вариантах. sendEvent для одного индикатора должен быть только в одном скрипте. Трансляция индикатора у вас в первом скрипте. Теперь вы можете отлавливать изменения из любого другого скрипта (пример ваш второй скрипт). Кое-что получилось. Спасибо за ответы.
|
|
|
|
wextel
Newbie
Offline
Activity: 17
Merit: 0
|
|
September 20, 2014, 11:12:33 AM |
|
Почему то у меня не верно рассчитывается комиссия (в моем случае с namecoin) Там где большая синяя кнопка "купить" я пишу 1 в "объеме покупки" он выдает 1 = 0.99720670 хотя комиссия 0.002 то есть я должен получить (1-0.002)*1NMC = 0.998, но почему то там меньше
|
|
|
|
IGHOR (OP)
Legendary
Offline
Activity: 1035
Merit: 1065
|
|
September 20, 2014, 11:26:43 AM Last edit: September 20, 2014, 12:09:08 PM by IGHOR |
|
Почему то у меня не верно рассчитывается комиссия (в моем случае с namecoin) Там где большая синяя кнопка "купить" я пишу 1 в "объеме покупки" он выдает 1 = 0.99720670 хотя комиссия 0.002 то есть я должен получить (1-0.002)*1NMC = 0.998, но почему то там меньше Спасибо, это баг в парах в которых количество знаков цены 3, исправлю.
|
Qt Bitcoin TraderVerify digital signature of the app in the file properties every time you download it.
|
|
|
wextel
Newbie
Offline
Activity: 17
Merit: 0
|
|
September 23, 2014, 04:41:11 AM |
|
Намертво зависает на цикле while например while(!trader.get("OpenOrdersCount")){}
|
|
|
|
IGHOR (OP)
Legendary
Offline
Activity: 1035
Merit: 1065
|
|
September 23, 2014, 10:56:22 AM Last edit: September 23, 2014, 11:15:53 AM by IGHOR |
|
Намертво зависает на цикле while например while(!trader.get("OpenOrdersCount")){}
Замкнутые циклы всегда приведут к зависанию, Вам следует поставить таймер для проверки значения. Я добавлю событие изменения OpenOrdersCount в следующем аппдейте, а пока можете использовать этот код: var последнееКоличествоОрдеров=0; function количествоОрдеровИзменилось() { trader.log("Количество открытых ордеров изменилось на ", последнееКоличествоОрдеров); }
trader.timer(1,"if(trader.get('OpenOrdersCount')!= последнееКоличествоОрдеров){последнееКоличествоОрдеров =trader.get('OpenOrdersCount');количествоОрдеровИзменилось();}");
|
Qt Bitcoin TraderVerify digital signature of the app in the file properties every time you download it.
|
|
|
IGHOR (OP)
Legendary
Offline
Activity: 1035
Merit: 1065
|
|
September 25, 2014, 01:29:23 AM |
|
Привет всем. Я совсем забыл расказать вам про цветовые схемы Qt Bitcoin Trader. В последнем билде вы можете менять цвета без перекомпиляции программы.
Вот как это сделать: 1) Откройте папку с данными Qt Bitcoin Trader. (Windows: %localappdata%\QtBitcoinTrader, Mac: ~/Application Support/QtBitcoinTrader или папку портабельной вресии QtBitcoinTrader) 2) Создайте новую папку там, назовите "Themes" 3) Запустите программу.
Там автоматически создадуться два файла Dark.thm и Light.thm.
Вы можете открыть их блокнотом или другим текстовым редакором, изменить темы и после перезапуска программы они будут использоваться вместо стандартных. Все цвета записаны в RBGA формате, это 4 числа разделенные запятой (Красный,Зеленый,Синий,Прозрачность).
Редактируйте темы, подбирайте лучшие схемы для себя и отправляйте мне. Я добавлю их в стандартную сборку программы в следующих обновлениях. Важно чтобы все тексты в таблицах и панелях были читаемы на подобранных цветах.
|
Qt Bitcoin TraderVerify digital signature of the app in the file properties every time you download it.
|
|
|
|