Избранное трейдера Андрей Вячеславович (Ganesh)

по

Этично и разумно (рентабельно) ли использовать криптовалюты?

Сегодня прочитал новость об исследованиях энергопотребления биткоина (оригинал публикации). Ежегодно на поддержание всей системы уходит 14,53 Твт/ч (14 млрд 600 млн кВт/ч). Умножьте на тариф))) 
Для сравнения данные по крупнейшим российским генерирующим компаниям за 2016 г. по данным Минэнерго РФ:
Наименование                                Мощность, Гвт             Выработка, Твт/ч
Росэнергоатом                                27,9                            195,2
РусГидро                                        38,9                            138,7
Газпромэнергохолдинг                    39                               154
Юнипро                                          11,2                            54,53
Энел                                               9,43
Фортум                                           4,48                            27
Квадра                                           2,87                            9,32 
ОГК-2                                             18,95                          67,1

В той же новости указаны следующие данные:

Ежегодное потребление энергии Bitcoin * (TWh)                                                                                                               14,53
Годовые доходы от добычи в мире                                                                                                                                    $ 1989514242
Ежегодные оценочные глобальные затраты на добычу полезных ископаемых                                                                    $ 726646754
Потребление электроэнергии за транзакцию (кВтч)                                                                                                           170,00
Число домашних хозяйств США, которые могут питаться от биткойнов                                                                                1345642
Количество домашних хозяйств США, работающих в течение 1 дня, потребляемой электроэнергией за одну транзакцию      5,74
Потребление электроэнергии Bitcoin в процентах от потребления электроэнергии в мире                                                     0,07%

Для платежной системы ВИЗА следующие данные:

Ежегодное потребление электроэнергии VISA (TWh)                                                                                                              0,54
Количество домашних хозяйств США, которые могут быть задействованы в VISA                                                                    50000
Потребление электроэнергии за транзакцию (кВтч)                                                                                                                0,00651
Количество секунд, потребляемых электроэнергией по 1 транзакции VISA, может привести к 1 дому США                                19
Количество транзакций VISA, которые могут быть задействованы в электроэнергии, потребляемой транзакцией 1 биткойн      26103

Зачем же переплачивать колоссальные суммы за транзакции и тратить на это столько энергии? Есть ли на сегодняшний день у крипто, такие преимущества, ради которых можно принести в жертву эффективность? Как же экология? Если блокчейн будет развиваться и внедряться в нашу жизнь в госучреждениях и коммерческих организациях, как сильно вырастет потребление энергии и как изменится ее цена? Так много вопросов и так мало ответов.


BIP91 в Bitcoin зафиксирован!


BIP91 в Bitcoin зафиксирован и через 2.3 дня будет активирован.
Большинство майнеров поддержало BIP91 и протокол Segregation Witness будет активирован. Нагрузка на сеть спадёт, транзакции будут пролетать за минуты, и не произойдёт разделения цепочки блоков (пока), а значит  биток будет расти в цене.
BIP91 в Bitcoin зафиксирован!
https://www.xbt.eu/

Хакеры взломали Ethereum-клиент Parity и украли криптовалюту на сумму около $32 млн

Как сообщает ресурс Motherboard, неизвестные хакеры, воспользовавшись уязвимостью в Ethereum-клиенте для управления кошельками Parity, украли у нескольких пользователей криптовалюту на общую сумму около $31,7 млн.Взлом клиента подтвердил его основатель Гейвин Вуд. Хакеры нашли уязвимость в последней версии Parity, и она является критической. Миллионы украли всего с трёх аккаунтов. Возможно, пострадавших будет больше. Вуд отмечает:​Это не учебная тревога. Если у вас есть многопользовательский кошелёк на базе Parity, выводите свои средства в безопасное место сразу же.«Белые шапки» (хакеры, которые работают над закрытием дыр в ПО) уже решают проблему. Они пытаются защитить пользователей, которые могли попасть под удар, но ничего не гарантируют.

 И это второй крупный взлом за последнюю неделю. Так, Ethereum-стартап CoinDash 17 июля во время первичного сбора средств на развитие проекта сообщил о взломе. Хакеры разместили фейковые адреса для сбора валюты на главной странице сайта CoinDash. Потери составили 7,5 млн долларов.

Хакеры взломали Ethereum-клиент Parity и украли криптовалюту на сумму около $32 млн


Эфириум (Ethereum, Эфир)

    • 20 июля 2017, 12:52
    • |
    • Asal
  • Еще
Интересный график подтверждающий, что мы имеем дело с классическим пузырем в случае с Этериумом, перед нами график классической монетки, несмотря на то, что к нынешнему Эфириуму она не имеет фактически никакого отношения и к ICO так же отношения не имеет, её стоимость тоже выросла.
Эфириум (Ethereum, Эфир)
Существует гипотеза которая объясняет данную ситуацию лучше всего, неквалифицированные инвесторы просто услышали о росте Эфириума, и чтобы далеко не ходить, скупили ещё и классические монетки, с расчётом, что они будут расти также, где тут логика, я не знаю.


Код робота на LUA для QUIK

В двух словах: робот анализирует спот, выставляет лимитные и стоп-лимитные заявки по фьючерсу. Делает пересчет сигналов по выбранному тайм-фрейму, снятие выставленных заявок, запись в файл текущего состояния, ведение логов, сообщения, запрос текущей позиции и пр. Из робота удалена алгоритмика вычисления сигнала и в текущем виде скрипт будет иметь сигнал на покупку на каждом баре.

Предназначается для новичков в алготрейдинге, что-то типа болванки.

Важно: выставление заявок я закомментировал, поэтому можете смело запускать этот скрит, он не натворит ужаса по счету.

require"QL"

log = "sbrf.log"
seccode = "SRM6"
lots_in_trade = 80
accnt = ""
better = -5
chart = "sberbankxxx"
is_run = true
prev_datetime = {}
len = 100
basis = 9
k_bal = {0,1,2,3}
sell = false
buy = false
id = 0
first = true

function trade_signal(shift)
        number_of_candles = getNumCandles(chart)
        bars_temp,res,legend = getCandlesByIndex(chart,0,number_of_candles-2*len-shift,2*len)
        bars={}

        i=len
        j=2*len
        while i>=1 do
                if bars_temp[j-1].datetime.hour>=10 then
                        sk=true
                        if bars_temp[j-1].datetime.hour==18 and bars_temp[j-1].datetime.min==45 then
                                sk=false
                        end
                        if sk then
                                bars[i]=bars_temp[j-1]
                                i=i-1
                        end
                end
                j=j-1
        end

        t = len+1

        do_sell = false
        do_buy = true

        value = 0
        if do_sell then value = 1 end
        if do_buy then value = -1 end
        toLog(log,"value="..value.." on candle: "..bars[len].datetime.year.."-"..bars[len].datetime.month.."-"..bars[len].datetime.day.." "..bars[len].datetime.hour..":"..bars[len].datetime.min.."   O="..bars[len].open.." H="..bars[len].high.." L="..bars[len].low.." C="..bars[len].close.." V="..bars[len].volume)
        return value
end

function mysplit(inputstr, sep)
        if sep == nil then
                sep = "%s"
        end
        local t={} ; i=1
        for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
                t[i] = str
                i = i + 1
        end
        return t
end

function OnInit(path)
        log=getScriptPath()..'\\'..log
        toLog(log,"==========OnInit: START")
        toLog(log,"==========OnInit: FINISH")
end

function OnStop()
        is_run = false
        toLog(log,"==========OnStop: script finished manually")
end

function CheckBit(flags, bit)
   -- Проверяет, что переданные аргументы являются числами
   if type(flags) ~= "number" then error("Ошибка!!! Checkbit: 1-й аргумент не число!"); end;
   if type(bit) ~= "number" then error("Ошибка!!! Checkbit: 2-й аргумент не число!"); end;
   local RevBitsStr  = ""; -- Перевернутое (задом наперед) строковое представление двоичного представления переданного десятичного числа (flags)
   local Fmod = 0; -- Остаток от деления
   local Go = true; -- Флаг работы цикла
   while Go do
      Fmod = math.fmod(flags, 2); -- Остаток от деления
      flags = math.floor(flags/2); -- Оставляет для следующей итерации цикла только целую часть от деления
      RevBitsStr = RevBitsStr ..tostring(Fmod); -- Добавляет справа остаток от деления
      if flags == 0 then Go = false; end; -- Если был последний бит, завершает цикл
   end;
   -- Возвращает значение бита
   local Result = RevBitsStr :sub(bit+1,bit+1);
   if Result == "0" then return 0;
   elseif Result == "1" then return 1;
   else return nil;
   end;
end;

function killorders(ccode,scode)
    for i=0,getNumberOf("orders")-1,1 do
        local t=getItem("orders", i)
        if t ~= nil and type(t) == "table" then
            if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                local transaction={
                    ["TRANS_ID"]=tostring(math.random(2000000000)),
                    ["ACTION"]="KILL_ORDER",
                    ["CLASSCODE"]=ccode,
                    ["SECCODE"]=scode,
                                        ["ACCOUNT"] = accnt,
                    ["ORDER_KEY"]=tostring(t.ordernum),
                }
                                res=sendTransaction(transaction)
            end
        end
    end
end

function killstoporders(ccode,scode)
    for i=0,getNumberOf("stop_orders")-1,1 do
        local t=getItem("stop_orders", i)
        if t ~= nil and type(t) == "table" then
            if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                local transaction={
                    ["TRANS_ID"]=tostring(math.random(2000000000)),
                    ["ACTION"]="KILL_STOP_ORDER",
                    ["CLASSCODE"]=ccode,
                    ["SECCODE"]=scode,
                                        ["ACCOUNT"] = accnt,
                    ["STOP_ORDER_KEY"]=tostring(t.ordernum),
                }
                                res=sendTransaction(transaction)
            end
        end
    end
end


function main()
        toLog(log,"==========main: START")
        while is_run do
                if isConnected() == 1 then
                        ss = getInfoParam("SERVERTIME")
                        if string.len(ss) >= 5 then
                                hh = mysplit(ss,":")
                                str=hh[1]..hh[2]
                                h = tonumber(str)
                                if (h>=1000 and h<1400) or (h>=1405 and h<1845) or (h>=1905 and h<2350) then
                                        if first then
                                                for ti = 50,2,-1 do     trade_signal(ti) end
                                                if buy and not sell then message(seccode.." Current state: green and buy",1) end
                                                if sell and not buy then message(seccode.." Current state: red and sell",1) end
                                                if buy and sell then message(seccode.." ERROR: green and red",1) end
                                                if not buy and not sell then message(seccode.." WARNING: nothing",1) end
                                                first = false
                                        end
                                        prev_candle = getPrevCandle(chart,0)
                                        if not isEqual(prev_candle.datetime,prev_datetime) then
                                                current_value = trade_signal(1)

                                                if current_value ~= 0 then
                                                        optn = "B"
                                                        if current_value==1 then optn = "S" end
                                                        curvol=0
                                                        no=getNumberOf("FUTURES_CLIENT_HOLDING")
                                                        if no>0 then
                                                                for i=0,no-1,1 do
                                                                        im=getItem("FUTURES_CLIENT_HOLDING", i)
                                                                        if im.sec_code==seccode then
                                                                        curvol=im.totalnet
                                                                        end
                                                                end
                                                        end
                                                        trvol = -current_value*lots_in_trade-curvol
                                                        if trvol ~= 0 then
                                                                killorders("SPBFUT",seccode)
                                                                killstoporders("SPBFUT",seccode)
                                                                f = io.open(getScriptPath().."\\sbrf2_pos.txt","r")
                                                                sbrf2_pos=f:read("*n")
                                                                f:close()
                                                                f = io.open(getScriptPath().."\\sbrf3_pos.txt","r")
                                                                sbrf3_pos=f:read("*n")
                                                                f:close()
                                                                pr,n,l = getCandlesByIndex ("futsber", 0, getNumCandles("futsber")-1, 1)
                                                                local trans =
                                                                {
                                                                        ["ACTION"] = "NEW_ORDER",
                                                                        ["CLASSCODE"] = "SPBFUT",
                                                                        ["SECCODE"] = seccode,
                                                                        ["ACCOUNT"] = accnt,
                                                                        ["OPERATION"] = optn,
                                                                        ["PRICE"] = toPrice(seccode,pr[0].close+current_value*better),
                                                                        ["QUANTITY"] = tostring(math.abs(curvol-sbrf2_pos-sbrf3_pos)),
                                                                        ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id)
                                                                }
                                                                id = id+1
                                                                --res = sendTransaction(trans)
                                                                message(seccode.." Send : " .. res, 2)
                                                                toLog(log,"Send: ".. res)
                                                                for btr=0,200,5 do
                                                                        local trans =
                                                                        {
                                                                                ["ACTION"] = "NEW_STOP_ORDER",
                                                                                ["CLASSCODE"] = "SPBFUT",
                                                                                ["SECCODE"] = seccode,
                                                                                ["ACCOUNT"] = accnt,
                                                                                ["OPERATION"] = optn,
                                                                                ["PRICE"] = toPrice(seccode,pr[0].close-current_value*btr),
                                                                                ["STOPPRICE"] = toPrice(seccode,pr[0].close-current_value*(btr+better)),
                                                                                ["QUANTITY"] = tostring(6),
                                                                                ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id),
                                                                                ["EXPIRY_DATE"] = "GTC"
                                                                        }
                                                                        id = id+1
                                                                        --res = sendTransaction(trans)
                                                                        message(seccode.." Send : " .. res, 2)
                                                                        toLog(log,"Send: ".. res)
                                                                end
                                                                if current_value == 1 then
                                                                        message(seccode..' RED: buy->sell',1)
                                                                        toLog(log,"RED signal")
                                                                else
                                                                        message(seccode..' GREEN: sell->buy',1)
                                                                        toLog(log,"GREEN signal")
                                                                end
                                                        else
                                                                if current_value == 1 then
                                                                        message(seccode..' RED: buy->sell',1)
                                                                        toLog(log,"RED signal, but nothing to do")
                                                                else
                                                                        message(seccode..' GREEN: sell->buy',1)
                                                                        toLog(log,"GREEN signal, but nothing to do")
                                                                end
                                                        end
                                                else
                                                        if buy and not sell then toLog(log,"Nothing to do. Current state: green and buy",1) end
                                                        if sell and not buy then toLog(log,"Nothing to do. Current state: red and sell",1) end
                                                        if buy and sell then toLog(log,"Nothing to do. ERROR: green and red",1) end
                                                        if not buy and not sell then toLog(log,"Nothing to do. WARNING: nothing",1) end
                                                end
                                                prev_datetime = prev_candle.datetime
                                        end
                                end
                        end
                end
                sleep(5*1000)
        end
        toLog(log,"==========main: FINISH")
end
  • обсудить на форуме:
  • Quik Lua

Интересные сравнения необходимой электроэнергии для работы криптовалют

    • 19 июля 2017, 23:54
    • |
    • Lafert
  • Еще

Если кратко, то одна биткойн-транзакция ~ 163 кВт⋅ч, в эфире ~ 49 кВт⋅ч, а майнинг биткойна, как потребление платежной системы Visa * 27 раз

Различные сравнения по ссылкам:

Более полная статья на английском

Сокращенная в переводе


Инструменты в помощь криптотрейдеру

Я уже писал тут, что на графиках TradingView появилась вкладка «криптовалюты». Крипты торгуются на нескольких биржах: TV транслирует данные с основных и вы можете посмотреть как они сходятся-расходятся и т.п.:
Инструменты в помощь криптотрейдеру
Кстати говоря, Олег Богданов, который общался с Виталиком Бутериным на ПМЭФ, сказал мне, что Виталик считает что наиболее надежная — это CoinBase.

В TV я настроил себе 6 графиков основных криптовалют + вочлист справа.
Инструменты в помощь криптотрейдеру
Больше даже не знаю, где еще можно смотреть все криптовалюты в одном месте.
Можете себе сохранить ссылку: https://ru.tradingview.com/chart/qVcrKbWR/ 



( Читать дальше )

Что ждёт Bitcoin в ближайшее время

SegWit близко и что ждёт Bitcoin в ближайшее времяЧто ждёт Bitcoin в ближайшее время

Сегодня, 14 июля – первая из важных дат связанных с активацией SegWit.

SegWit (Segregated Witness) — это об­нов­лен­ный про­то­кол с об­рат­ной сов­ме­сти­мо­стью, пер­во­на­чаль­но пред­ло­жен­ный ко­ман­дой раз­ра­бот­чи­ков Bitcoin Core.
С момента появления, в де­каб­ре 2015 года, он стал кра­е­уголь­ным кам­нем их проек­та по мас­шта­би­ро­ва­нию сети Bitcoin и сей­час ис­поль­зу­ет­ся мно­ги­ми актив­ны­ми уз­ла­ми бит­ко­и­на.

SegWit также яв­ля­ет­ся ча­стью Нью-Йорк­ско­го со­гла­ше­ния, под­пи­сан­но­го в мае: аль­тер­на­тив­но­го про­ек­та мас­шта­би­ро­ва­ния, ко­то­рый под­дер­жа­ли 56 ком­па­ний и май­не­ры. И ак­ти­ви­ру­е­мый поль­зо­ва­те­ля­ми софт­форк (UASF) – BIP148 (пред­ло­же­ние по улуч­ше­нию Bitcoin 148), на­зна­чен­ное на 1 ав­гу­ста, которое тоже со­би­ра­ет­ся ак­ти­ви­ро­вать SegWit.

Раз­ли­чия за­клю­ча­ют­ся в том, как имен­но долж­на про­изой­ти ак­ти­ва­ция.



( Читать дальше )

....все тэги
UPDONW
Новый дизайн