UPD: Давно забил на скрипт, информация для общего развития, не запускайте его, он не пашет, все сразу продаст вроде
С наступившим НГ !
Решил написать стратегию для этой программы
Внимание! Стратегия мало протестирована, используйте на свой страх и риск!
Торговал на боте по ссылке ниже, в принципе сделал такой же , так что алгоритм читайте тут -
https://ezhrd.wordpress.com/2014/06/05/%D0%BE%D0%B1%D1%89%D0%B8%D0%B9-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D0%B1%D0%BE%D1%82%D0%B0/Но там 5$ в месяц за одну пару на одной бирже, тут же всё бесплатно.
как и в обновлении того бота,в алгоритм добавлена функция подтяжки таблицы ордеров вслед за курсом. Например, бот выставил таблицу закупок, ни одна закупка не исполнялась, но курс пошел вверх, а не вниз. Когда курс станет выше, чем цены покупки на указанный % , бот снимет всю таблицу закупок и выставит заново, отталкиваясь от нового курса.
Я JavaScript вообще не знал, изучал всё с ходу и поэтому скрипт написан непрофессионально, присылайте глюки и баги если будут.
по умолчанию скрипт написан для пары LTC/USD на бирже BTC-e, что бы настроить для другой пары на любой бирже, заменить на обоих скриптах в блокноте через ctrl+H все LTC на, например, BTC , и USD на ,например , EUR
Скрипт расчитан чтобы использовать один аккаунт на бирже только для одной пары в скрипте, для другой пары необходимо зарегистрировать ещё один аккаунт со своими балансами.
для запуска в разделе правила добавляем два скрипта с именами "Скрипт 1" и "Скрипт 2" и вставляем текст ,в начале ОБОИХ скриптов меняем параметры под свой вкус, и запускаем Скрипт 2.
сумма на балансе должна быть вся на второй валюте в паре (для LTC/USD в USD),на первой должен быть ноль.
текст для Скрипт 1
var otstup = 0.5 // в %, отступ первого шага,Насколько цена первого buy ордера в таблице закупке должна быть меньше текущей на момент расчета таблицы. Все остальные buy ордера будут еще дешевле
var orders = 13 // от 2 до 20 , Сколько buy-ордеров помещать в объеме перекрытия.
var perekr = 30 // в % , перекрытие хода цены,Глубина расчета таблицы buy ордеров. Например, при цене первого шага 10USD процент перекрытия 20% означает, что таблица будет выставлена в диапазоне // 8-10USD.
var profit = 1 // в % , профит,Сколько профита закладывать в каждый sell ордер.
var martin = 15 // в %, мартингейл, При расчете таблицы buy ордеров каждый следующий более дешевый ордер по объему больше предыдущего на это значение.
var depo = 98 // в % , от 1 до 98, Использование депо, какую часть от USD (или второй валюты в паре) пускать в оборот
bal=trader.get("Balance","USD")
var komissiya = trader.get("Fee")
otstup = otstup / 100
otstup = 1 - otstup
depo = depo / 100
martin = martin / 100 + 1
komissiya = komissiya *2
komissiya = komissiya / 100 + 1
perekr = perekr + otstup
profit = profit / 100 + 1
var prceni = perekr / orders
prceni =1-( prceni / 100)
// pervaluteif = 100000
trader.cancelOrders("LTCUSD");
var pric = trader.get("BidPrice") * otstup;
var price=pric
var cena = pric
pricet = pric * prceni;
raznost = pric - pricet
function koa()
{
all = trader.get("Balance","USD") * depo
yyy=0
for (var i = 0; i < orders ;) {
yyy = yyy + Math.pow(martin,i)
i = i + 1
}
var amount = all / yyy
amstart = amount
for (var i = 0; i < orders;) {
trader.buy("LTCUSD" , amount / price , price);
price = price - raznost
amount = amount * martin
i = i + 1
}
}
trader.delay(25 ,"koa()");
trader.timer(15,"hbvr()");
function hbvr() {
if (trader.get("Balance","LTC") > 0.000001) {
if (trader.get("OpenAsksCount") < 1 ) {
trader.delay(10,"venakid()");
}}}
var pperv =0
var ppervraz = 0
var pvtorvraz = 0
trader.delay(40 ,"aaa()");
function aac()
{
trader.cancelAsks();
}
function venakid()
{
if (trader.get("Balance","LTC") > pperv*0.9999) {
ppervraz =0
}
vsumma = 0
vbaksi = 0
vprice = pric
vamount = amstart
vskoordp = orders - trader.get("OpenBidsCount")
for (var vi = 0; vi < vskoordp;) {
vsumma = vsumma +(( vamount / vprice )/1000*(1000-(trader.get("Fee")*10)))
vbaksi = vbaksi + vamount
vprice = vprice - raznost
vamount = vamount * martin
vi = vi + 1
}
vamraz = trader.get("Balance","LTC") - vsumma
trader.log("vamraz ",vamraz );
vbaksraz = (vamraz/(1000-(trader.get("Fee")*10))*1000) * vprice
vvbaks = vbaksraz + vbaksi
vvbaks = vvbaks * profit * (1000/(1000-(trader.get("Fee")*10)))
pperv= trader.get("Balance","LTC")
trader.sell("LTCUSD" , trader.get("Balance","LTC") , vvbaks / (trader.get("Balance","LTC")+ppervraz) );
}
function aaa()
{
trader.on("OpenBidsCount").changed()
{
if (trader.get("Balance","LTC") > 0.000001) {
if (trader.get("Balance","LTC") < pperv*0.9999) {
if (trader.get("OpenAsksCount") == 1 ) {
if (pperv != 0 ) {
ppervraz = pperv - trader.get("Balance","LTC")
// pvtorvraz = ppervraz * trader.get("LastMySellPrice")
}}}}
trader.delay(3,"aac()");
}}
trader.timer(45,"hjk()");
function hjk() {
if (trader.get("OpenBidsCount") != orders ) {
if (trader.get("OpenAsksCount") < 1 ) {
if (trader.get("Balance","LTC") < 0.000001){
trader.groupStop("Скрипт 2");
trader.groupStart("Скрипт 2");
}}}}
текст для Скрипт 2
var vverh = 1 // в %, например, если стоит 2%, и на момент запуска скрипта цена покупки будет 100 USD , то при цене покупки 102 весь цикл перезапустится
var orderss = 13 // значение как в скрипт 1
// ниже если не шарите ничего не меняйте.
var rest = 100000000000
trader.groupStop("Скрипт 1");
trader.groupStart("Скрипт 1");
sledcikl();
function sledcikl(){
rest = vverh / 100 + 1
rest = rest * trader.get("BidPrice")
trader.log("restatr pri", rest );
}
trader.timer(45,"rrr()");
function rrr(){
if (trader.get("BidPrice") >= rest) {
if ( trader.get("OpenAsksCount") < 1 ) {
if ( trader.get("OpenBidsCount") == orderss ) {
trader.log("proverka1", trader.get("OpenBidsCount") );
trader.groupStop("Скрипт 1");
trader.groupStart("Скрипт 1");
sledcikl();
}}}}
небольшая история работы бота
16.01.2015 13:22:41 Ł0.121557 продано $1.43392 0.17430302
16.01.2015 12:47:18 Ł0.1218 куплено $1.41404 0.17223007
16.01.2015 12:42:29 Ł0.261119 продано $1.4006 0.36572327
16.01.2015 10:57:32 Ł0.137858 куплено $1.37309 0.18929144
16.01.2015 10:51:00 Ł0.123784 куплено $1.39 0.17205976
16.01.2015 10:38:53 Ł0.267887 продано $1.36405 0.36541126
16.01.2015 10:22:25 Ł0.141432 куплено $1.33727 0.18913277
16.01.2015 10:22:25 Ł0.126992 куплено $1.35393 0.17193828
16.01.2015 10:18:26 Ł0.127438 продано $1.36486 0.17393503
16.01.2015 10:14:35 Ł0.127693 куплено $1.34595 0.1718684
16.01.2015 10:12:13 Ł0.789664 продано $1.34143 1.05927898
16.01.2015 9:30:14 Ł0.194138 куплено $1.29297 0.25101461
16.01.2015 9:28:49 Ł0.174234 куплено $1.30971 0.22819601
16.01.2015 9:04:24 Ł0.156396 куплено $1.32644 0.20744991
16.01.2015 7:56:32 Ł0.140407 куплено $1.34317 0.18859047
16.01.2015 7:51:05 Ł0.126072 куплено $1.35991 0.17144658
Всем профита! и пишите всё что думаете по поводу бота ))
UPD: 23.01.2015 20:49:06 , исправил ошибки , исправил описание! Обновите оба скрипта, ну, кроме начальных данных.