Постов с тегом "ТОРГОВЫЕ РОБОТЫ": 6066

ТОРГОВЫЕ РОБОТЫ


торговый робот - это автоматизированная торговая система, принимающая решения и отдающая приказы на выполнение рыночных заявок на основе программного алгоритма.

В этом разделе вы найдете самые актуальные записи по теме торговые роботы.

О ценах, модели Блэка-Шоулза и графическом анализе. Часть 1

    • 30 января 2023, 13:06
    • |
    • А. Г.
      Проверенный аккаунт
  • Еще

Эту таблицу я впервые приводил в своем выступлении на конференции Смартлаба  весной 2016-го и повторил на конференции 2018-го, акцентировав внимание на том, что хочу оформить письменно ниже

 О ценах, модели Блэка-Шоулза и  графическом анализе. Часть 1

Что в таблице?  В таблице доли участков RI (фьючерс на индекс РТС — прим. мое) из 10 приращений, как по отдельным периодам, так и в целом, которые я отнес к «трендам». Что я считал «трендом»? «Трендом» я считал участки, на которых среднее приращений цен (или приращений логарифмов цен, что эквивалентно) отлично от нуля и если оно больше нуля, то относим отрезок к «трендам вверх», а если меньше нуля – к «трендам вниз».

 Какой использовался критерий? Обычный модифицированный критерий Стьюдента на отличие приращений логарифма(!) цены от приращений гауссовского процесса со средним нуль  и дисперсией «почти равной» для 9 испытаний из 10 (нулевая гипотеза). Так как мы имеем критерий на различие сложной гипотезы против простой, то распределение статистики критерия точно известно нам только  при простой гипотезе. И потому при априори выбранных границах критерия мы можем знать только вероятности попадания последовательности из 10 значений в наши «классы» при верности нулевой гипотезы.



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

Кто-нибудь пользуется веб-хуками на TradingView, для исполнения своих алгоритмов?

Кто-нибудь пользуется веб-хуками на TradingView, для исполнения своих алгоритмов?

Давно пользуюсь
Первый раз слышу
Всего проголосовало: 92
Привет друзья! Недавно я писал пост про то, как ИИ написал бота под tradingview. Вообще под tradingview написано множество готовых алгоритмов в самой системе, которые на бэктесте дают не плохой результат. 

Но основная проблема, с которой столкнулся это использование этих алгоритмов в реальной торговле на реальном счете. Начал рыть инфо про это. В итоге обнаружил в можно подключить торговую панель и торговать напрямую через TV, в России есть поддержка Алора, но автоматизированную торговлю он всё равно не поддерживают. 

В итоге пришла мысль, что можно алерты из tradingview передавать по API любому брокеру, а уже на брокере будут открываться сделки по алертам. 

На сколько я понимаю и tradingview сейчас продвигает это направление с webhook . 

Статьи про это у них есть тут: https://www.tradingview.com/support/solutions/43000529348-about-webhooks/ 

И пример тут: 

https://learn.bybit.com/investing/how-to-use-tradingview/

В итоге у меня появилось 2 вопроса: 

1. Кто-нибудь пользуется веб-хуками на TradingView, для исполнения своих алгоритмов?
2. Если да, то к каким брокерам/криптобиржам писали свое подключение?


АлгоТрейдинг , ордера - Book-or-Cancel

    • 30 января 2023, 03:08
    • |
    • Anest
  • Еще
  Реализовывал уже кто нибудь данную опцию в заявках? Какой параметр нужно дописывать в строке заявки? Что то ничего не нашел в квиковских мануалах обновления на этот счёт .


Один из методов псевдо-адаптации.

    • 30 января 2023, 01:13
    • |
    • fxsaber
  • Еще
Один из методов псевдо-адаптации.


Любой скальпер знает, что круглосуточная торговля — глупость. Есть интервалы, где достигается высокая и стабильная прибыльность, поэтому различными способами находят эти интервалы. Например, при оптимизации всех параметров ТС перебирают еще и возможные временные интервалы (начало/конец).

 



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

Пример рабочей торговой системы на MQL5 с выходом по времени

#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()));
            }
        }
    }
}

В защиту Python (язык такой, программирования).

    • 28 января 2023, 19:28
    • |
    • 3Qu
  • Еще
На чем чем только не писал стратегии — На VBA Excel, VB.NET (тогда еще так назывался), C#, C++. Не обошлось и без участия скриптовых языков Java Script, Lua. Не обошлось и без специализированных языков, R, например — вот где тягомотина по исполнению и большая помойка пакетов. Мож там и есть бриллианты, но кто будет искать бриллианты в помойке.) MQL4 -5 — эти, г… но полное — это не делай, туда не ходи — нах такие языки. Еще и другие были, всех и не перечислишь.
Лет, этак 5-7 тому перешел на Python (С++ тоже не забываю)). Python понравился резко и сразу. Стратегий на нем пока не писал, но моделировал много. Сейчас планирую сделать первую, для Binance. Ага, криптой торговать собираюсь. Я, так полагаю, что МОЕХ умер (или почти), и делать там абсолютно нечего. Умирал он долго и мучительно, аж с 14-го года. Жаль, вообще то, неплохой был рынок.
Итак, чем хорош Python. Это, в первую очередь, нулевой порог входа — вчера вы еще ничего не знали о нем, а сегодня уже нейросети и прочие machine learning применяете для своих задач. Да, с переменным успехом, но, ведь, применяете.) Не, ну, для тех, кто не в ладах с обычной логикой, любой язык программирования противопоказан, но не о них речь.

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

Индикатор дневных уровней

Индикатор DHLM показывает Хай, Лоу и среднее значение за торговый день.
Индикатор дневных уровней

 

 

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.min

function 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

 


ВОПРОС АЛГОТРЕЙДЕРАМ

Такой вопрос к тем, кто самостоятельно пишет роботов. какой программой лучше воспользоваться для проведения первых «экспериментов»?
Я имею в виду те программы которые не требуют особых навыков в программировании. Типа Велс-лаб или ТС лаб. Что из них лучше подходит для начала? Или может быть есть что-то еще? Заранее благодарю за ответы по существу))

Про инфраструктуру. Весь мир в кармане


Про инфраструктуру. Весь мир в кармане
Обязательно ли иметь несколько мониторов для успешной торговли на бирже?

На мой взгляд — нет. Достаточно лишь смартфона в кармане и надёжной инфраструктуры.

Например, я использую торговый терминал Quik и роботов, которые интегрированы в него в виде lua-скриптов.

Для корректной работы торговых роботов необходимо иметь постоянно запущенный терминал и стабильное подключение к интернету.

Учитывая моё пребывание более 8 часов на основной работе, я не имею возможности торговать на бирже в это время с личного компьютера, а использование служебного недопустимо.

В теории можно было бы организовать постоянную работу домашнего ПК и подключение к нему удаленно, например, через TeamViewer, однако проблемы с возможым долговременным отключением электроэнергии или обрывы связи на стороне провайдера оставались бы вне моего влияния.

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

Пример прибыльной торговой стратегии в исходном коде

// Scalping strategy for algotrading

// Define variables for strategy
double stop_loss = 0.5;  // stop loss in percentage
double take_profit = 2;  // take profit in percentage

// On every tick
void OnTick()
{
    // Get the current bid and ask prices
    double bid = Bid;
    double ask = Ask;

    // Get the previous bid and ask prices
    double prev_bid = iBars(Symbol(), PERIOD_M1, 0);
    double prev_ask = iBars(Symbol(), PERIOD_M1, 0);

    // Check if the current bid price is higher than the previous ask price
    if (bid > prev_ask)
    {
        // Open a long position with a stop loss and take profit
        double lot_size = NormalizeDouble(AccountFreeMargin() * 0.01 / MarketInfo(Symbol(), MODE_STOPLEVEL), 2);
        OrderSend(Symbol(), OP_BUY, lot_size, ask, 3, bid * (1 - stop_loss/100), bid * (1 + take_profit/100));
    }
    // Check if the current ask price is lower than the previous bid price
    else if (ask < prev_bid)
    {
        // Open a short position with a stop loss and take profit
        double lot_size = NormalizeDouble(AccountFreeMargin() * 0.01 / MarketInfo(Symbol(), MODE_STOPLEVEL), 2);
        OrderSend(Symbol(), OP_SELL, lot_size, bid, 3, ask * (1 + stop_loss/100), ask * (1 - take_profit/100));
    }
}

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