Мы здесь: Глава 3: Тренд — главная торговая идея столетия. 3.4: Почему крипта?
Ответ: потому что больше прибыли. И не просто больше, а в РАЗЫ больше.
Но это не весь ответ. Если смотреть под разным углом, есть разные варианты. Поговорим о них в этой главе.
Почему прибыльность тренда на крипте в разы больше, чем на других рынках?
Регулирование на рынках.
Приличный человек с экономическим образованием скажет:
«Чем более зарегулирован рынок, тем меньше прибыли».
Это связано, в первую очередь, с понижением кредитного плеча, которым можно совершать сделки. На развитых рынках это делается через механизм разделения трейдеров на категории. В Российской Федерации это разделение идёт на квалифицированных инвесторов и не квалифицированных. При этом не квалифицированные инвесторы не могут применять в своей торговле пониженное гарантийное обеспечение и торговать фьючерсами, а это абсолютное большинство тех, кто торгует на фондовой бирже.
А чем меньше трейдеров с плечами, тем ниже волатильность. А чем ниже волатильность – тем меньше прибыли у трендовых торговых систем.
Эту таблицу я впервые приводил в своем выступлении на конференции Смартлаба весной 2016-го и повторил на конференции 2018-го, акцентировав внимание на том, что хочу оформить письменно ниже
Что в таблице? В таблице доли участков RI (фьючерс на индекс РТС — прим. мое) из 10 приращений, как по отдельным периодам, так и в целом, которые я отнес к «трендам». Что я считал «трендом»? «Трендом» я считал участки, на которых среднее приращений цен (или приращений логарифмов цен, что эквивалентно) отлично от нуля и если оно больше нуля, то относим отрезок к «трендам вверх», а если меньше нуля – к «трендам вниз».
Какой использовался критерий? Обычный модифицированный критерий Стьюдента на отличие приращений логарифма(!) цены от приращений гауссовского процесса со средним нуль и дисперсией «почти равной» для 9 испытаний из 10 (нулевая гипотеза). Так как мы имеем критерий на различие сложной гипотезы против простой, то распределение статистики критерия точно известно нам только при простой гипотезе. И потому при априори выбранных границах критерия мы можем знать только вероятности попадания последовательности из 10 значений в наши «классы» при верности нулевой гипотезы.
1. Кто-нибудь пользуется веб-хуками на TradingView, для исполнения своих алгоритмов?
2. Если да, то к каким брокерам/криптобиржам писали свое подключение?

#property copyright "Copyright 2019, Example Inc."
#property link "https://www.example.com"
input int LotSize = 1;
input int Period = 30;
input double VolatilityThreshold = 0.1;
input int ExitAfterMinutes = 60;
int buyOrderId;
int sellOrderId;
datetime entryTime;
void OnTick()
{
// Get the last Period candlesticks
ArraySetAsSeries(candles, true);
CopyRates(Symbol(), PERIOD_M1, TimeCurrent() - Period, Period, candles);
// Calculate the maximum and minimum prices
double maxPrice = High(candles);
double minPrice = Low(candles);
// Calculate the standard deviation of the closing prices
double stdev = iStdDev(candles, MODE_CLOSE, 0);
// Check if the volatility is above the threshold
if (stdev > VolatilityThreshold)
{
// Check if the current ask price is higher than the maximum price
if (Ask > maxPrice)
{
// Place a buy order
if (OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, 0, 0, "My order", 16384, 0, Green))
{
Print("Buy order placed");
buyOrderId = OrderTicket();
entryTime = TimeCurrent();
}
else
{
Print("Error placing buy order : ", ErrorDescription(GetLastError()));
}
}
// Check if the current bid price is lower than the minimum price
if (Bid < minPrice)
{
// Place a sell order
if (OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, 0, 0, "My order", 16384, 0, Red))
{
Print("Sell order placed");
sellOrderId = OrderTicket();
entryTime = TimeCurrent();
}
else
{
Print("Error placing sell order : ", ErrorDescription(GetLastError()));
}
}
}
if (buyOrderId > 0)
{
if (TimeCurrent() - entryTime >= ExitAfterMinutes * 60)
{
if (OrderClose(buyOrderId, LotSize, Bid, 3, clrNONE))
{
Print("Buy order closed");
buyOrderId = 0;
}
else
{
Print("Error closing buy order : ", ErrorDescription(GetLastError()));
}
}
}
if (sellOrderId > 0)
{
if (TimeCurrent() - entryTime >= ExitAfterMinutes * 60)
{
if (OrderClose(sellOrderId, LotSize, Ask, 3, clrNONE))
{
Print("Sell order closed");
sellOrderId = 0;
}
else
{
Print("Error closing sell order : ", ErrorDescription(GetLastError()));
}
}
}
}
Settings =
{
Name = «DHLM»,
line =
{
{
Name = «High»,
Color = RGB(0,200,64),
Type = TYPET_BAR,
Width = 1
},
{
Name = «Low»,
Color = RGB(200,0,64),
Type = TYPET_BAR,
Width = 1
},
{
Name = «Median»,
Color = RGB(0,64,200),
Type = TYPET_BAR,
Width = 1
}
}
}
local hlm = {}
local math_max = math.max
local math_min = math.minfunction Init()
return #Settings.line
end
function OnCalculate(index)
local dt = T(index)if O(index) then
if dt.day ~= hlm.day or
dt.month ~= hlm.month or
dt.year ~= hlm.year then
hlm.year = dt.year
hlm.day = dt.day
hlm.month = dt.month
hlm.high = H(index)
hlm.low = L(index)
else
hlm.high = math_max(hlm.high,H(index))
hlm.low = math_min(hlm.low,L(index))
hlm.median = (hlm.high + hlm.low)/2
end
end
return hlm.high,hlm.low,hlm.median
end