Избранное трейдера gvv
Сегодня мы хотим поделиться с вами статьёй Эндрю Кисса (Andrew Keys) — соучредителя ConsenSys Capital и ряда других компаний, — в которой он делится своими прогнозами для криптовалютного пространства на 2018 год.
Нам следует поблагодарить его за работу, так как последующие технологии не были бы возможны без Биткойна Сатоши, но мы пойдём намного, намного дальше. Хотя Сатоши соединил структуру базы данных с пиринговыми сетями, криптографической токенизацией, алгоритмами формирования консенсуса и экономической мотивацией из теории игр, чтобы создать средство цифрового хранения и передачи стоимости, не требующее доверия, «цифровое золото» – это лишь один вариант применения.
Биткойн как цифровое средство сбережений – наименее интересное применение блокчейна… Да, я это сказал
В своё время активно пользовался. Робот для выставления стопа и тейк профита.
Как только видит открытые позиции. Выставляет стоп. Может кому надо. Пользуйтесь
Нужно заполнить только
cAccount=«7600lll» ВАШ СЧЕТ
cClassName=«SPBFUT» ЧТО ТОРГУЕТЕ
cProfit=7500 ТЕЙК ПРОФИТ
cProfShift=100 ОТСТУП ОТ ЦЕНЫ
cProfSpr=500 СПРЕД
cStopLoss=400 ЗНАЧЕНИЕ СТОПА
cSLSpr=500 СПРЕД
Файл:
PORTFOLIO_EX VFAutoStop;
DESCRIPTION VFAutoStop;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
New_Global(«CurLogLine»,1)
New_Global(«gLastPos»,CREATE_MAP ()) 'коллекция крайних позиций
ClassesList = get_classes_list()
cAccount=«7600lll»
cClassName=«SPBFUT»
cProfit=7500
cProfShift=100
cProfSpr=500
cStopLoss=400
cSLSpr=500
cLogFile=«C:\VFAutoStop.log»
FUNC WriteLog (pTitle, pMessage)
writeln(cLogFile, get_value(GET_DATETIME(), «Datetime») & " " & pTitle & " > " & pMessage)
END FUNC
func SendTrans(pTransParams)
trans_result = SEND_TRANSACTION (30, pTransParams)
'LogData(pTransParams,trans_result)
if get_value (trans_result, «RESULT»)+0.0=0 then
' WriteLog(pTransParams,get_value (trans_result, «RESULT_EX») & "|" & get_value (trans_result, «DESCRIPTION»))
WriteLog(pTransParams,trans_result)
end if
end func
Func ActiveStopOrder(pSecCode)
nOrd=Get_number_of(«STOP_ORDERS»)
result=CREATE_MAP ()
for iOrd from 1 to nOrd
asoOrder = get_item(«STOP_ORDERS», iOrd)
if get_value(asoOrder, «STATUS»)=«ACTIVE» and get_value(asoOrder, «SECCODE»)=pSecCode
result = asoOrder
end if
end for
End Func
Сегодняшняя тема была выбрана не случайно, дело в том, что современные трейдеры и инвесторы все чаще отказываются от надежных долгосрочных стратегий в пользу среднесрочных спекулятивных систем, построенных на различных индикаторах, объёмах и прочих похожих инструментах.
На мой взгляд, это серьезная проблема, так как при подобном подходе человек просто перестает развиваться, т.е отказывается узнавать новую информацию, которая могла бы ему пригодиться на более высоких уровнях карьерной лестницы в финансовом секторе.
Вот и получается что у простого рядового спекулянта всего 2 пути:
1) Торговать на небольших счетах и постоянно искать новые паттерны, так как прежние методы могут перестать работать
2) Изучать фундаментальные закономерности, которые будут актуальны всегда.
Но закончим с лирикой и перейдем к более серьезным вещам. Первым делом нужно разобраться с терминологией, в частности, под облигацией понимается ценная бумага, держатель которой получает от её эмитента либо купонный доход, либо разницу между ценой размещения и номиналом.
Всё изложенное мной ниже — основано на моём личном опыте и по мере возможности применяется мной на практике.
Некоторые рекомендации покажутся вам параноидальными и\или противоречащими моим недавним декларациям.
Хочу пояснить, что эта статья имеет очень специальное назначение и является ориентиром, к которому желательно максимально приблизиться.
Сам я пока ещё весьма далёк от чёткого выполнения всех пунктов этой статьи.
Эта удалённость возникла изза недостатка знаний и изза моих заблуждений, которые сопутствовали мне во время моего продвижения в крипто-мире.
Недавно я осознал, что надо двигаться в направлении максимальной децентрализованности.
В свое время, лет 5-6 назад, на смартлабе был опубликован очень хороший пост. Не знаю, попал ли он к кому-либо в избранное. Я на его основе сделал этот.
Известный многим пример: представим, что объявлена лотерея. Каждый участник может назвать число от 1 до 100. Ценный приз выигрывает тот, чей ответ окажется ближе всего к 2/3 среднего арифметического ответов всех участников.
Как все будет происходить? В первую очередь, найдутся люди, которые невнимательно прочитают задание, и в качестве ответов назовут случайным образом числа от 1 до 100.
Люди с образованием учтут, что большинство невнимательно прочитают задание, и решат использовать математическую статистику для участников лотереи как статистической совокупности, для чего применят центральную предельную теорему для моделирования нормальных случайных величин. Проще говоря, они примут, что распределение независимых ответов публики будет случайным со средним около 50 (при нормальном распределении), а значит надо взять 2/3 от 50 и получить в виде ответа 33.
В продолжении первой статьи
Не каждый заказчик может написать техническое задание по ГОСТу, но всегда можно написать своими словами, либо скриншотами или привести примеры с помощью цифр, чтоб разработчику стало понятно, что нужно от торгового робота.
Какие основные моменты нужно отразить в техническом задании по созданию торгового робота:
IsRun = true class_code="TQBR" function main() -- Получает доступный id для создания t_id = AllocTable() -- добавить столбцы AddColumn(t_id, 1, "Бумага", true, QTABLE_STRING_TYPE, 20) AddColumn(t_id, 2, "Кол-во", true, QTABLE_INT_TYPE, 7) AddColumn(t_id, 3, "Цена покупки", true, QTABLE_DOUBLE_TYPE, 14) AddColumn(t_id, 4, "Цена текущая", true, QTABLE_DOUBLE_TYPE, 14) AddColumn(t_id, 5, "Прибыль, р", true, QTABLE_DOUBLE_TYPE, 14) AddColumn(t_id, 6, "Прибыль, %", true, QTABLE_DOUBLE_TYPE, 14) t = CreateWindow(t_id) for iRow=1, getNumberOf("depo_limits")-1, 1 do rowInPortfolioTable = getItem("depo_limits", iRow) -- получить текущую строку из таблицы "Лимиты по бумагам" qtyBoughtLots = tonumber(rowInPortfolioTable.currentbal) limitKind = rowInPortfolioTable.limit_kind if qtyBoughtLots>0 and limitKind<1 then InsertRow(t_id, iRow)-- добавить новую строку вниз таблицы end end local rows, columns = GetTableSize (t_id) InsertRow(t_id, rows+1) -- добавить новую строку вниз таблицы для "Итого" SetWindowCaption(t_id, "Портфель: прибыли и убытки © ramirzaev@mail.ru") -- исполнять цикл, пока пользователь не остановит скрипт или не закроет окно таблицы while IsRun do if IsWindowClosed(t_id)==true then IsRun=false end local currentPrice=0 local qtyBoughtLots=0 local profitAbs = 0 local profitPerc = 0 local currentSecCode= "" local fullNameOfInstrument = "" local limitKind = 0 local rowInPortfolioTable = {} -- строка из таблицы "Лимиты по бумагам" local tableInstrument = {} -- данные "Таблицы текущих торгов" local iRowInOutTable = 1 local totalInvest = 0 local totalPortfolio = 0 local totalProfit = 0 local totalPercent = 0 for iRow=0, getNumberOf("depo_limits")-1, 1 do rowInPortfolioTable = getItem("depo_limits", iRow) -- получить текущую строку из таблицы "Лимиты по бумагам" qtyBoughtLots = tonumber(rowInPortfolioTable.currentbal) limitKind = rowInPortfolioTable.limit_kind if qtyBoughtLots>0 and limitKind<1 then -- если кол-во лотов >0 и тип лимита T0 currentSecCode = rowInPortfolioTable.sec_code fullNameOfInstrument = tostring(getParamEx(class_code, currentSecCode, "SHORTNAME").param_image or "0") --"LONGNAME" avgPrice = tonumber(rowInPortfolioTable.awg_position_price) currentPrice = GetAskPrice(currentSecCode) profitAbs = (currentPrice-avgPrice)*qtyBoughtLots profitPerc = 100*currentPrice/avgPrice - 100 totalInvest = totalInvest + avgPrice*qtyBoughtLots totalPortfolio = totalPortfolio + currentPrice*qtyBoughtLots SetCell(t_id, iRowInOutTable, 1, fullNameOfInstrument) -- "Бумага" SetCell(t_id, iRowInOutTable, 2, tostring(qtyBoughtLots)) -- "Кол-во"RemoveZero(tostring(qtyBoughtLots))) SetCell(t_id, iRowInOutTable, 3, tostring( math_round(avgPrice, 3) )) -- tostring(avgPrice)) -- "Цена покупки" SetCell(t_id, iRowInOutTable, 4, RemoveZero(tostring(currentPrice))) -- "Цена текущая" SetCell(t_id, iRowInOutTable, 5, tostring( math_round( profitAbs, 0)) ) -- "Прибыль, р" SetCell(t_id, iRowInOutTable, 6, tostring(math_round(profitPerc, 1)) .."%") -- "Прибыль, %" if profitPerc >5 then -- окрашиваем ColourRowInGreen(iRowInOutTable) elseif profitPerc<-5 then ColourRowInRed(iRowInOutTable) else ColourRowInYellow(iRowInOutTable) end iRowInOutTable = iRowInOutTable+1 end end totalProfit = totalPortfolio - totalInvest totalPercent = 100*totalProfit/totalInvest SetCell(t_id, iRowInOutTable, 1, "Итого") SetCell(t_id, iRowInOutTable, 3, tostring( math_round(totalInvest, 0) )) SetCell(t_id, iRowInOutTable, 4, tostring( math_round(totalPortfolio, 0))) SetCell(t_id, iRowInOutTable, 5, tostring( math_round( totalProfit, 0)) ) SetCell(t_id, iRowInOutTable, 6, tostring(math_round(totalPercent, 1)) .."%") if profitPerc >5 then -- окрашиваем ColourRowInGreen(iRowInOutTable) elseif profitPerc<-5 then ColourRowInRed(iRowInOutTable) else ColourRowInYellow(iRowInOutTable) end iRowInOutTable = iRowInOutTable+1 sleep(5000) -- пауза 5 сек. end --message("script table portfolio finished") end function ColourRowInRed(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,150,150), RGB(0,0,0), RGB(255,150,150), RGB(0,0,0)) end function ColourRowInYellow(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,255,200), RGB(0,0,0), RGB(255,255,200), RGB(0,0,0)) end function ColourRowInGreen(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(150,255,150), RGB(0,0,0), RGB(150,255,150), RGB(0,0,0)) end function GetAskPrice(inp_Sec_Code ) local ask = tostring(getParamEx(class_code, inp_Sec_Code, "OFFER").param_value or 0) return ask end -- Округляет число до указанной точности function math_round (num, idp) local mult = 10^(idp or 0) return math.floor(num * mult + 0.5) / mult end -- удаление точки и нулей после нее function RemoveZero(str) while (string.sub(str,-1) == "0" and str ~= "0") do str = string.sub(str,1,-2) end if (string.sub(str,-1) == ".") then str = string.sub(str,1,-2) end return str end function OnStop() DestroyTable(t_id) IsRun = false end
Интернет-омбудсмен Дмитрий Мариничев вместе с партнерами запустил сборку серверов для майнинга криптовалюты. Об этом он сообщил корреспонденту «Инвест-Форсайта» в кулуарах конференции «Электронная (Цифровая) экономика».
Предприятие находится в Москве, но название компании, адрес и объем инвестиций интернет-омбудсмен не раскрыл. Однако известно, что одним из партнеров Дмитрия Мариничева является Сергей Бобылев, экс-владелец сети магазинов бытовой техники Санрайз и генеральный директор компании SmartHeat. SmartHeat также производит серверы (или вычислительные блоки) для майнинга эфиров (Ethereum), второй по стоимости криптовалюты после биткойна (ее капитализация превышает $4,4 млрд на 18.04.17).
«Вычислительные блоки делаются полностью из российских деталей, кроме чипов», – говорит Мариничев.
Стоит заметить, что чипы – важнейшая часть сервера, это специализированный микропроцессор, чипы в компании Мариничева и Бобылева закупаются у Bitfury и других мировых производителей. Сами вычислительные блоки помещаются в закрытые стальные корпуса 35х40х40 см (есть и больше). Один сервер будет стоить от $1 тыс. до $2 тыс. Согласно расчетам ethereum mining calculator, на одном майнере с 5 видеокартами AMD Radeon RX 470 до 150 мегахэш можно заработать примерно $57 в месяц.