Kocherga
Newbie
Offline
Activity: 9
Merit: 0
|
|
September 03, 2015, 03:03:43 PM |
|
смотри раздел "Пользовательские индикаторы и события" внимательней.
|
|
|
|
pww2000
Newbie
Offline
Activity: 25
Merit: 0
|
|
September 04, 2015, 05:23:54 AM |
|
смотри раздел "Пользовательские индикаторы и события" внимательней.
Да уже несколько раз пересмотрел. Может у меня "раздел "Пользовательские индикаторы и события"" не такой? Поиск "procsell" тоже ничего не находит. Можете дать скрин или процитировать?
|
|
|
|
Kocherga
Newbie
Offline
Activity: 9
Merit: 0
|
|
September 05, 2015, 08:08:51 AM |
|
смотри раздел "Пользовательские индикаторы и события" внимательней.
Да уже несколько раз пересмотрел. Может у меня "раздел "Пользовательские индикаторы и события"" не такой? Поиск "procsell" тоже ничего не находит. Можете дать скрин или процитировать? странно, лови. Пользовательские индикаторы и события
В JL Script можно создавать как свои индикаторы так и события к ним. Для этого используеться одна команда trader.sendEvent("имя",значение); Так же команда может быть вызвана с помощью трех параметров trader.sendEvent("символ","имя",значение); Вы можете придумать любое уникальное имя которое не совпадает с существующими именами индикаторов и отправлять значение всем группам скриптов. Например, вы хотите создать индикатор вычисления среднего чесла последних цен спроса и предложения AskPrice и BidPrice. Назовем индикатор "MidPrice". Транслировать событие этого индикатора будет выше указанная функция trader.sendEvent("MidPrice",значение); Теперь нам надо вычислять значение среднего при каждом изменении цены спроса или предложения.
Создаем новую группу для скрипта и назовем его "Индикатор среднего числа". И добавляем туда два события на изменение последних цен спроса и предложения.
Image
Теперь добавляем код который будет транслировать наше событие, вычисление которого будем делать в отдельной функции, назвоем ее "calculateMidPrice()". Кодом который вычисляет среднее значение у нас будет "(trader.get("BidPrice")+trader.get("AskPrice"))/2". Транслировать событие надо только если изменилось наше среднее значение, поэтому создаем переменную "lastMidPrice", в которой будем хранить последнее значение.
Code: Select all 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("BidPrice").changed() { calculateMidPrice(); }
trader.on("AskPrice").changed() { calculateMidPrice(); }
Image
Теперь проверим как работает наш индикатор. Создаем еще одну пустую группу скрипта под названием "Проверка". Получать событие пользовательского индикатора так же просто как и с стандартными событиями. Пишем тело события:
Code: Select all trader.on("MidPrice").changed() {
}
И мы будем получать значения внутри него. Чтобы увидеть работу его визуально, добавляем вывод в лог всех изменений.
Code: Select all trader.on("MidPrice").changed() { trader.log("Средняя цена изменилась:", value); }
Запускаем обе группы скриптов и смотрим в лог.
Image
Наш индикатор работает, и его можно использовать в любом скрипте и в любом месте с помощью стандартного метода trader.get("MidPrice");
|
|
|
|
pww2000
Newbie
Offline
Activity: 25
Merit: 0
|
|
September 05, 2015, 11:31:30 AM |
|
странно, лови.
И где тут procsell? Или это Ваше пользовательское событие? Тогда и его выкладывайте.
|
|
|
|
Kocherga
Newbie
Offline
Activity: 9
Merit: 0
|
|
September 06, 2015, 12:28:01 PM |
|
это мое созданное событие "какой то там расчет" из скрипта 1 для переноса в скрипт 2
|
|
|
|
pww2000
Newbie
Offline
Activity: 25
Merit: 0
|
|
September 06, 2015, 01:04:05 PM |
|
это мое созданное событие "какой то там расчет" из скрипта 1 для переноса в скрипт 2
Ну сразу бы и сказали. А то думаю, может упустил чего в этой жизни... Ну да ладно, по вопросу, начнем отсюда. Вот тут: 16:31:54> BTCUSD: Sell 0.01169092 at 226.904808 баланс смотрели? Хватает? И кстати, пара правильная выставлена?
|
|
|
|
akaBeaver
Legendary
Offline
Activity: 1287
Merit: 1094
|
|
September 06, 2015, 02:53:22 PM |
|
обьясните мне если я создаю правило вида
"Когда Последняя Цена = Точное значение тогда Продать 100% по Последняя Цена"
это будет работать как стоп лосс?
|
|
|
|
Kocherga
Newbie
Offline
Activity: 9
Merit: 0
|
|
September 06, 2015, 05:25:37 PM |
|
это мое созданное событие "какой то там расчет" из скрипта 1 для переноса в скрипт 2
Ну сразу бы и сказали. А то думаю, может упустил чего в этой жизни... Ну да ладно, по вопросу, начнем отсюда. Вот тут: 16:31:54> BTCUSD: Sell 0.01169092 at 226.904808 баланс смотрели? Хватает? И кстати, пара правильная выставлена? при первой продаже баланс был, создал ордер на все т.е 0.01169092 баланс стал 0 ,потом скрипт постоянно повторяет продажу при 0 балансе. пары в скрипте не прописывал, использовал trader.get("Balance","BTC"),trader.get("Balance","USD")
|
|
|
|
Kocherga
Newbie
Offline
Activity: 9
Merit: 0
|
|
September 06, 2015, 05:47:58 PM Last edit: September 06, 2015, 06:07:03 PM by Kocherga |
|
даже попробовал разделить скрипт покупки и продажи: в скрипте- запуск скрипта1 при балансе бтц>0.01 trader.timer(60,"proverka3()");// если есть бтц
function proverka3() { if(trader.get("Balance","BTC")>0.01) { trader.groupStart("Скрипт 1"); }}
но почемуто результат тотже : в логе скрипта 20:36:14> Start group: "Скрипт 1" 20:37:14> Start group: "Скрипт 1" 20:38:14> Start group: "Скрипт 1" 20:39:14> Start group: "Скрипт 1" 20:40:14> Start group: "Скрипт 1" 20:41:14> Start group: "Скрипт 1" 20:42:14> Start group: "Скрипт 1" 20:43:14> Start group: "Скрипт 1" 20:44:14> Start group: "Скрипт 1" 20:45:14> Start group: "Скрипт 1" в логе скрипт 1 20:42:14> BTCUSD: Sell 0.01119996 at 235.68777114 20:42:14> Stop group: "Скрипт 1" 20:43:14> BTCUSD: Sell 0.01119996 at 235.68777114 20:43:14> Stop group: "Скрипт 1" 20:44:14> BTCUSD: Sell 0.01119996 at 235.68777114 20:44:14> Stop group: "Скрипт 1" 20:45:14> BTCUSD: Sell 0.01119996 at 235.68777114 20:45:14> Stop group: "Скрипт 1" 20:46:14> BTCUSD: Sell 0.01119996 at 235.68777114 20:46:14> Stop group: "Скрипт 1"
как я думаю, после первой продажи он должен остановится т.к. баланс бтц становится =0 т.е выражение trader.get("Balance","BTC")>0.01 должно быть неверным, но скрипт каким то образом зацикливется и проходя проверку нулевого баланса продолжает. Помогает только ручной перезапуск. Кстате биржа BTC-e если это имеет значение.
|
|
|
|
pww2000
Newbie
Offline
Activity: 25
Merit: 0
|
|
September 07, 2015, 02:55:55 AM |
|
при первой продаже баланс был, создал ордер на все т.е 0.01169092 баланс стал 0 ,потом скрипт постоянно повторяет продажу при 0 балансе.
Вот тут есть нюанс. Когда баланс больше суммы сделки где-то на 0.000001 и меньше, то ордер может не выставиться (закономерности не нашел). Видимо где-то (скорее всего у биржи) туго с математикой. Делайте небольшой запас по балансу.
|
|
|
|
Kocherga
Newbie
Offline
Activity: 9
Merit: 0
|
|
September 07, 2015, 12:47:21 PM Last edit: September 07, 2015, 01:37:09 PM by Kocherga |
|
при первой продаже баланс был, создал ордер на все т.е 0.01169092 баланс стал 0 ,потом скрипт постоянно повторяет продажу при 0 балансе.
Вот тут есть нюанс. Когда баланс больше суммы сделки где-то на 0.000001 и меньше, то ордер может не выставиться (закономерности не нашел). Видимо где-то (скорее всего у биржи) туго с математикой. Делайте небольшой запас по балансу. Ордер выставляется 1первый, брал баланс по trader.get("Balance","BTC") а потом по логу просто кружит типа другие ордера еще пытается, Спасибо за идею, попробовал trader.get("Balance","BTC")*0,99999 пока вроде норм в остатке 0.00000023
|
|
|
|
Laster
Newbie
Offline
Activity: 1
Merit: 0
|
|
September 08, 2015, 08:17:56 AM |
|
.... Релиз обновленного скриптового языка отложен и будет в следующем обновлении ....
будет ли управление отдельными ордерами по номеру, по магику или только скопом все удалять можно будет как сейчас?
|
|
|
|
kia88
Newbie
Offline
Activity: 1
Merit: 0
|
|
September 30, 2015, 02:16:44 PM |
|
Подскажите новичку, как разобраться с добавлением правила, для знающего это наверно очень просто, а я не могу в ехать. Напишите хоть один пример. Допустим, продать за х, купить за у и так по кругу.
|
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
October 15, 2015, 07:14:37 PM |
|
обнаружила что если вычитаются дробные числа из меньшего большее, то скрипт не получает отрицательного числа. А получает 0. Вот пробные операторы в скрипте:
uu=10.96; oo=10.99; gg=uu-oo; trader.log(" отриц=",gg);
а вот это результат
21:52:05> отриц= 0
Подскажите как исправить?
|
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
October 15, 2015, 07:19:05 PM |
|
Подскажите новичку, как разобраться с добавлением правила, для знающего это наверно очень просто, а я не могу в ехать. Напишите хоть один пример. Допустим, продать за х, купить за у и так по кругу. вот здесь посмотри http://www.youtube.com/watch?v=VuF9LgzehK4
|
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
October 15, 2015, 09:01:22 PM |
|
Подскажите новичку, как разобраться с добавлением правила, для знающего это наверно очень просто, а я не могу в ехать. Напишите хоть один пример. Допустим, продать за х, купить за у и так по кругу. Элементарно, Ватсон. создаешь группу правил Группа 1 в это группе такие правила 1)купить х битков 2) если ордерсработал, то продать х битков по у цене 3) если ордер сработа, то активировать группу правил Группа2 Группа 2 предварительно была отключена. В этой группе такие правила 1) отключить группу правил Группа1 2) Включить группу правил Группа 1 3) отключить все правила в группе2 всё правила зациклены. Отключать и включать нужно для того чтобы вновь активировать группу после срабатывания.
|
|
|
|
pww2000
Newbie
Offline
Activity: 25
Merit: 0
|
|
October 16, 2015, 01:25:08 AM |
|
обнаружила что если вычитаются дробные числа из меньшего большее, то скрипт не получает отрицательного числа. А получает 0. Вот пробные операторы в скрипте:
uu=10.96; oo=10.99; gg=uu-oo; trader.log(" отриц=",gg);
а вот это результат
21:52:05> отриц= 0
Подскажите как исправить?
Уже писал несколько страниц назад. Обрабатываются числа правильно. Просто традерЛог их отображать не умеет. Если сильно надо отобразить, то можно так: uu=10.96; oo=10.99; gg=uu-oo; trader.log(" отриц=",gg+"");
|
|
|
|
zuza
Member
Offline
Activity: 77
Merit: 10
|
|
October 22, 2015, 10:43:37 AM |
|
обнаружила что если вычитаются дробные числа из меньшего большее, то скрипт не получает отрицательного числа. А получает 0. Вот пробные операторы в скрипте:
uu=10.96; oo=10.99; gg=uu-oo; trader.log(" отриц=",gg);
а вот это результат
21:52:05> отриц= 0
Подскажите как исправить?
Уже писал несколько страниц назад. Обрабатываются числа правильно. Просто традерЛог их отображать не умеет. Если сильно надо отобразить, то можно так: uu=10.96; oo=10.99; gg=uu-oo; trader.log(" отриц=",gg+""); спасибо за ответ.
|
|
|
|
pww2000
Newbie
Offline
Activity: 25
Merit: 0
|
|
October 22, 2015, 12:47:01 PM |
|
Почему-то слетают апи-ключи (или еще что-то - не показывает баланс, мои ордера и пр.) при перезапуске компа при работающем боте. Приходится пересоздавать ключи и профили. Это только у меня так?
|
|
|
|
SergKaac
|
|
October 25, 2015, 05:18:31 PM Last edit: October 25, 2015, 05:53:27 PM by SergKaac |
|
Похоже не только у тебя Сегодня зашел у меня тоже слетело . Ложная тревога в профиль другой спросонья ввалился.
|
|
|
|
|