Система принятия решений и/или Нечеткая логика(FuzzyLogic)

Страницы: Пред. 1 ... 3 4 5 6 7
RSS
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
А Чудеса продолжаются!
Оказывается, мало того что ADX(Lua) написан с ошибками, так еще и расчеты отличаются от ADX встроенного в терминал?
Накидал свой вариант, но и он выводит другие значения:
Код
function algorithms.getADX()
--[[
    Индикатор ADX с +DI и -DI 
    Среда: QUIK, Lua 5.4
    По методике Уэллса Уайлдера (period = 14)
--]]
-- Вспомогательные функции
local function sum(t, start_idx, end_idx)
    local total = 0
    for i = start_idx, end_idx do total = total + (t[i] or 0) end
    return total
end
local function average(t, start_idx, end_idx)
    return sum(t, start_idx, end_idx)/(end_idx - start_idx + 1)
end
    
   -- Локальные буферы для хранения данных
    local TR, plusDM, minusDM = {}, {}, {}
    local smoothedTR, smoothedPlusDM, smoothedMinusDM = {}, {}, {}
    local plusDI, minusDI, DX, ADX = {}, {}, {}, {}
    local initialized = false  -- Флаг инициализации

    return function (I, Fsettings, ds)
        local Fsettings = Fsettings or {}
        local P = Fsettings.Period or 14  -- Период расчета

        -- Инициализация буферов при первом запуске
        if I == 1 or not initialized then
            TR, plusDM, minusDM = {}, {}, {}
            smoothedTR, smoothedPlusDM, smoothedMinusDM = {}, {}, {}
            plusDI, minusDI, DX, ADX = {}, {}, {}, {}
            initialized = true
            return nil, nil, nil
        end

        -- Получение цен текущего и предыдущего бара
        local high = H(I) or 0
        local low = L(I) or 0
        local closePrev = C(I-1) or 0
        local highPrev = H(I-1) or 0
        local lowPrev = L(I-1) or 0

        -- 1. Расчет True Range (TR)
        TR[I] = math.max(
            high - low,
            math.abs(high - closePrev),
            math.abs(low - closePrev)
        )

        -- 2. Расчет Directional Movement (+DM и -DM)
        local upMove = high - highPrev
        local downMove = lowPrev - low
        plusDM[I] = (upMove > downMove and upMove > 0) and upMove or 0
        minusDM[I] = (downMove > upMove and downMove > 0) and downMove or 0

        -- 3. Сглаживание по методу Уайлдера
        if I == P then
            -- Первичное сглаживание (сумма первых P значений)
            smoothedTR[I] = sum(TR, 2, P)  -- TR начинается с 2-го бара
            smoothedPlusDM[I] = sum(plusDM, 2, P)
            smoothedMinusDM[I] = sum(minusDM, 2, P)
        elseif I > P then
            -- Рекуррентное сглаживание
            smoothedTR[I] = smoothedTR[I-1] - (smoothedTR[I-1]/P) + TR[I]
            smoothedPlusDM[I] = smoothedPlusDM[I-1] - (smoothedPlusDM[I-1]/P) + plusDM[I]
            smoothedMinusDM[I] = smoothedMinusDM[I-1] - (smoothedMinusDM[I-1]/P) + minusDM[I]
        end

        -- 4. Расчет Directional Indicators (+DI и -DI)
        if I >= P and smoothedTR[I] and smoothedTR[I] > 0 then
            plusDI[I] = 100 * (smoothedPlusDM[I]/smoothedTR[I])
            minusDI[I] = 100 * (smoothedMinusDM[I]/smoothedTR[I])
            
            -- 5. Расчет Directional Movement Index (DX)
            local di_sum = plusDI[I] + minusDI[I]
            DX[I] = (di_sum ~= 0) and (100 * math.abs(plusDI[I] - minusDI[I])/di_sum) or 0
        end

        -- 6. Расчет ADX (сглаженный DX)
        if I >= 2*P then
            if I == 2*P then
                -- Начальное значение ADX
                ADX[I] = average(DX, P+1, 2*P)  -- Среднее за P периодов
            else
                -- Сглаживание методом Уайлдера
                ADX[I] = (ADX[I-1]*(P-1) + DX[I])/P
            end
        end

        -- Возврат значений (ADX, +DI, -DI)
        return ADX[I] or nil, plusDI[I] or nil, minusDI[I] or nil
    end
end
Люди кто знаком с темой подскажите, что не так?
То что должно занимать пять минут, колупаю который день, чай уже давно закончился, да и видимо чаем тут одним не обойтись. :lol:  
 
Советую забыть про примеры от ARQA. Они уже давно не поддерживаются. Да и в целом, написаны криво.
 
Nikolay, Так и мой вариант не соответствует встроенному в терминал. Вроде все корректно делаю как в букваре? Накладываю один на другой не соответствуют?
 
Значит есть ошибки. Встроенные индикаторы в терминал - это не то же самое, что библиотека индикаторов INDICATORS.zip
Встроенные, работают корректно.
 
Сравнил более внимательно, есть отличие в сглаживании и соответственно в масштабах отражения этих данных. В общем мой вариант рабочий, не читать же с графиков. А с фильтрами по экспериментирую еще, собственно это и была задача.  
 
Идея заключается в том, чтобы заменить стандартные методы сглаживания на более эффективные, обеспечивающие меньшее запаздывание. Сглаживание по методу Уайлдера - Рекуррентное сглаживание, проблема, этого классического сглаживания (фактически EMA с α = 1/N) дает значительный лаг! Возможно это различие и является причиной различий в расчётах индикатора?

Для снижения лага в расчете ADX можно применить следующие типы фильтров, фокусируясь на ключевых этапах его вычислений:
 * фильтры из Swiss Army Knife (SAK), ранее на сайте мною были опубликованы в процедурной версии (как индикатор);
 * фильтры вроде Zero-Lag EMA (ZLEMA);
 * или адаптивные методы сглаживания, которые динамически подстраиваются под рыночные условия (Kalman Filter).

Оптимизация ADX с использованием фильтров Swiss Army Knife (SAK), наиболее любопытный вариант, интеграция фильтров Джона Элерса позволяет значительно снизить задержки ADX, сохранив его основную логику.

Сравнивать буду точки пересечения +DI/-DI в классической и SAK-версиях. Предварительные тесты показывают, что оптимизированная версия должна давать сигналы на 2-3 бара раньше при сопоставимой точности. Много это или мало судите сами, для HFT-стратегий (в рамках HFT-стратеги QUIK) это одна тема, для цикличных рынков совсем другая, ну и конечно для трендоследящих, ради чего все это затевалось (вспомнил хоть и отстал от графика, примерно так стоишь на остановке в ожидании поезда, а его все нет, вот уже вторые сутки нет).
А получить торговый сигнал на 2-3 дня или часа РАНЬШЕ! Каково?

Пару слов о фильтрах, здесь имеет значение практически все, торговый тайм фрейм, период окна данных и так далее, все зависит от задачи что хотим выделить или подчеркнуть.
Например, как вариант применения:
      Для высокочастотной торговли используйте  - EMA или Butterworth_LP
      Для подавления шума в трендах                     - Kalman + Wavelet
      Для цикличных рынков                                     - комбинация BP + HP
Каждый из них вносит свою лепту в вычисления.

Начать можно с адаптивного периода + ZLEMA для сглаживания, для HFT-стратегий можно добавить Kalman Filter.
Примеры стратегий которые хочу проверить:
а) Тренд + Осциллятор: ФНЧ (Butterworth) для тренда + ФВЧ (HP) для сигналов входа.
б) Цикловая торговля:    BP-фильтр для выделения 14-дневного цикла + SMA для подтверждения.
с) ? Арбитраж:                BS-фильтр для подавления рыночного шума + EMA для анализа тренда.

Для тестирования в стратегии планирую сравнивать:
1) Задержку сигналов;
2) Количество ложных срабатываний;
3) Ну и можно рассчитывать соотношение Sharpe до/после оптимизации.
Но для этого нужна торговая стратегия, но это уже совсем другая тема.  :wink:  

Тема фильтрации обширна, пишите свои идеи будем разбираться вместе.
 
Идея сглаживания - это борьба с выбросами.  Как только Вы начинаете бороться с запаздыванием, то сразу возникает вопрос: а зачем тогда сглаживать? Тогда лучший - это просто сам график. Запаздывания нет.
Ну и прежде чем браться за идею, стоит понять к чему приводит сглаживание. Это хорошо видно при преобразовании Фурье. Вот здесь очень наглядно про это https://rutube.ru/video/beeb00abb33061f14a37f54d3536a10b/

Т.е. если браться за фильтрацию сигнала, то сначала необходимо определиться для чего.
 
Nikolay,  Отличное видео, прекрасная демонстрация, автору и Nikolay, - огромное спасибо за популяризирование и просвещение.
К видео только одно замечание, преобразование Фурье вносит тоже запаздывание и его тоже нужно учитывать. У себя я просто держу напоминалочку, типа

Описание методов фильтрации в индикаторе Swiss Army Knife (John Ehlers):
1. EMA (Exponential Moving Average)
- Тип: Однополюсный фильтр низких частот (ФНЧ).
- Формула:  Output = a * Price + (1 - a) * Previous_Output
- Применение:  Сглаживание ценовых данных, подавление высокочастотного шума.  
 - Подходит для трендовых рынков.  
 - Используется для определения направления тренда.  
 - Пример: Выявление долгосрочных тенденций на дневных графиках.

2. SMA (Simple Moving Average)**
- Тип: Равновесный ФНЧ.  
- Формула:  Output = (Price + Price[1] + ... + Price[n]) / (n + 1)
- Применение:    Устранение рыночного шума с линейным сглаживанием.  
 - Идеален для фильтрации "белого шума".  
 - Используется в стратегиях пересечения средних.  
 - Пример: Сигналы при пересечении 50- и 200-периодной SMA.
....

Условно тех. анализ делят на две основные группы.
▪ Графический анализ: Поддержка и сопротивление, Модели разворота и продолжения, Свечной анализ;
▪ Индикаторный анализ: Индикаторы тренда (сигналы продолжения), Осцилляторы (сигналы разворота), Анализ объема (дополнительные фильтры).

Я только сейчас рассуждаю про Индикаторный анализ, так как это просто математика, в рамках одной широко распространённой стратегии ADX RSI (в рамках 60% инвестиционного дохода).
Для реальной торговли конечно нужен Графический анализ, у себя еще прикручиваю Анализ реального времени, но сейчас я не про это.
Задачу ставлю разобраться и показать,  что давно забытые стратегии прекрасно работают, в современных условиях.

Сглаживание, слишком упрощенно так рассматривать, прежде всего это преобразование для приемлемого вида, для применения в расчета, это всегда компромисс между сглаженностью и чувствительностью (отзывчивостью фильтра). Эти уникальные фильтры является результатом общих концепций цифровой обработки сигналов (DSP) для дискретных сетей сигналов, которые появляются в различных формах в техническом анализе. Передаточная функция такой дискретной линейной системы - это отношение выхода системы, деленное на вход. Если рассматривать весовые коэффициенты, для SMA это 1 равны на всем периоде данных, то для EMA  они убывают, перенося важность значений на новые.

И последнее, просто напомню, что обратная величина частоте, это тот самый период, который мы просто можем адаптировать, с помощь математики. А значит и фильтры применять с этими периодами каждый по назначению.
 
Цитата
VPM написал:
И последнее, просто напомню, что обратная величина частоте, это тот самый период, который мы просто можем адаптировать, с помощь математики. А значит и фильтры применять с этими периодами каждый по назначению.
Это Вы может делать только если данные независимы. А если окно скользящее, с зависимостью, что изменяя "на лету" окно ничего хорошего ожидать не стоит.
 
Не понял, поясните?
 
Например ema - фильтр, где используется прошлое значение, полученное на текущем окне. Хотя да, это уже строго говоря не скользящее окно.
На скользящем окне Вы каждый раз рассчитываете результат по данным этого окна, не смотря дальше. Но с другой стороны, если окно изменить, то можно получить резкий скачок в данных. Было окно 100, стало 10. Результат уже явно другой. Т.е. цель изменения окна - это изменить работу фильтра для всего сигнала. А если изменять его туда-обратно, то как такой сигнал потом интерпретировать.

В этом плане самый простой и понятный фильтр для финансовых данных - это WVAP. Есть веса от объема. Его можно даже доработать, добавив веса от позиции данных в окне выборки, снижая вес дальних индексов в окне.
А просто фильтры основанные на математике из стационарных рядов - ещё надо объяснить почему это должно работать на финансовых данных.
 
Согласен, проблема тут есть, но ведь и задача  при определении тренда стоит выделить несущею частоту, а значит незначительные изменения в значениях периода. А что смущает в использовании фильтра или индикатора, на мой взгляд так наиболее информативный подход, при графическом анализе все равно сохраняется не кая интуитивность. А в индикаторном поймал тренд так и сиди в нем, мне думается что много ошибок именно в применении. Еще один момент в рассуждениях о ценовых рядах, часто умалчивают, что сама экономика построена так что капитал дисконтируется, а активы дорожают. А что объем, посмотри те какие дисбалансы и гэпы (про срочный рынок). WaPrice подкачиваю посматриваю, очень часто дневная свеча меняет на переходах свой цвет. Насчет использования индикаторов, так а что тут объяснять, на мой взгляд все предельно просто, волновая структура применима ко всему, отображение цены на графике колебательный процесс, значить имеем полное право использовать амплитудно-частотные преобразования. Доказательством правомерности может служить мат. ожидание системы.
 
Странное определение тренда через частоту. Раз частота, значит колебательные движения. А если тренд, то какие тогда колебания. Тренд - это линейная зависимость.
 
Нет здесь странностей. просто ставим все на свои места.
1) Колебательные движения значит частота или волновой процесс. Поведение цены можно представить как сумму волн разной частоты и амплитуды (гармоники).
2) С точки зрения технического анализа, Тренд — это направленное движение цены (вверх или вниз). Он часто выглядит как линейная зависимость. Внутри тренда происходят колебательные (волатильные) движения: импульсы, откаты, коррекции.

Кстати у Вас есть прекрасный индикатор регрессионного анализа, выделяющий тренд 3 видов с использованием волатильности. Я его активно использую, пользуясь случаем хочу Вас попросить посмотреть его затирает текущие значения.

Наглядный пример моего подхода, как модели тренда, это синусоида, если взять от  от мах до минимума и наоборот, чем не трендовое движении. функция распределения плотности в экстремальных диапазонах имеет максимальные значения, вот уже и Вайкофф появился с зонами распределения и накопления. Кстати функция распределения плотности цены на длительном интервале больше похожа как у синусоиды.
 
Да, если есть колебательный процесс, то есть соблазн представить поступательные движения тренда как фазы волны с большим периодом. А внутренние колебания (по сути шум) как гармоники.
Эта идея не нова, а у же с середины 90-х заезжена вдоль и поперек. Помню как радиофизики тогда с придыханием говорили, что вот сейчас придём и научим всех как надо.
Доля смысла есть в этом подходе, но только пока процесс не изменится. И сразу всё ломается, т.к. цена не обязана идти по ряду Фурье. Если бы временной ценовой ряд можно было представить аналитически, то, наверно, это уже давно бы сделали. Так что да, такой подход возможен, но тогда необходимо постоянно пересчитывать модель.
Цитата
VPM написал:
Кстати у Вас есть прекрасный индикатор регрессионного анализа, выделяющий тренд 3 видов с использованием волатильности. Я его активно использую, пользуясь случаем хочу Вас попросить посмотреть его затирает текущие значения.
Я не понял смысл этой фразы, сути проблемы.
 
Nikolay,  Индикатор Reg() при появлении нового индекса рассчитывает значение и выводит на график, А между сменой индексов, при дёргании функции обратного вызова, он удаляет с графика значения, На больших интервалах допустим на часовом моргнула и сразу затерла, то есть целый час нет визуализации значения на текущей свече, В идеале конечно, чтоб еще в прогнозную зону отрисовывал линии, Я тему с прогнозной зоной поднимал, но она интереса не вызвала.
 
Нет, такого нет в этом индикаторе. Если приходит тот же индекс, где уже был расчёт, то происходит возврат уже рассчитанных значений.

if calculated_buffer[index] ~= nil then
 
Я пользуюсь этой версией, посмотрел у Вас уже ее и нет.
Код
--logfile=io.open("C:\\SBERBANK\\QUIK_SMS\\LuaIndicators\\qlua_log.txt", "w")

Settings = {Name = "*iReg",
      bars = 182,
      kstd=2,
      degree = 3, -- 1 linear, 2 parabolic, 3 third-power 
      barsshift=0
   }
-- Пользовательcкие функции
function WriteLog(text)

   logfile:write(tostring(os.date("%c",os.time())).." "..text.."\n")
   logfile:flush()
   LASTLOGSTRING = text

end
----------------------------------------------------------
----------------------------------------------------------
----------------------------------------------------------
function Reg()
            
   local sql_buffer={}
    local sqh_buffer={}
    local fx_buffer={}
   local sx={}
   local calculated_buffer={}
           
    return function(ind, Fsettings)
      
      local Fsettings=(Fsettings or {})
      local index = ind
      local bars = Fsettings.bars or 182
      local kstd = Fsettings.kstd or 2
      local barsshift = Fsettings.barsshift or 0
      local degree = Fsettings.degree or 1
      local index = ind

      local out1 = nil
      local out2 = nil
      local out3 = nil
      
      local p = 0
      local n = 0
      local f = 0
      local qq = 0
      local mm = 0
      local tt = 0
      local ii = 0
      local jj = 0
      local kk = 0
      local ll = 0
      local nn = 0
      local sq = 0
      local i0 = 0
      
      local mi = 0
       local ai={{1,2,3,4}, {1,2,3,4}, {1,2,3,4}, {1,2,3,4}}      
      local b={}
      local x={}
      
      p = bars 
      nn = degree+1
 
      if index == 1 then
         sql_buffer = {}
         sqh_buffer = {}
         fx_buffer = {}
         calculated_buffer = {}
         
         sql_buffer[index]= 0
         sqh_buffer[index]= 0
         fx_buffer[index]= 0

         --- sx 
         sx={}
         sx[1] = p+1
         
         for mi=1, nn*2-2 do
            sum=0
            for n=i0, i0+p do
               sum = sum + math.pow(n,mi)
            end
         sx[mi+1]=sum
         end
         
         return nil
      end
            
      sql_buffer[index] = sql_buffer[index-1]   
      sqh_buffer[index] = sqh_buffer[index-1]   
      fx_buffer[index] = fx_buffer[index-1]
       
      out1 = fx_buffer[bars]
      out2 = sqh_buffer[bars]
      out3 = sql_buffer[bars]

      SetValue(index-bars-barsshift, 1, nil)
        SetValue(index-bars-barsshift, 2, nil)
        SetValue(index-bars-barsshift, 3, nil)
       
      if not CandleExist(index) or index <= bars then
         return nil
      end
        if index < (Size() - barsshift) then return nil end
      if index > (Size() - barsshift) then return nil end
        if calculated_buffer[index] ~= nil then return out1, out2, out3 end
      
       
      --- syx 
      for mi=1, nn do
         sum = 0
         for n=i0, i0+p do
            if CandleExist(index+n-bars) then
               if mi==1 then
                  sum = sum + C(index+n-bars)
               else
                  sum = sum + C(index+n-bars)*math.pow(n,mi-1)
               end
            end
         end
      b[mi]=sum
      end
          
      --- Matrix 
      for jj=1, nn do
         for ii=1, nn do
            kk=ii+jj-1
            ai[ii][jj]=sx[kk]
         end
      end
          
      --- Gauss 
      for kk=1, nn-1 do
         ll=0
         mm=0
         for ii=kk, nn do
            if math.abs(ai[ii][kk])>mm then
               mm=math.abs(ai[ii][kk])
               ll=ii
            end
         end
            
         if ll==0 then
            return nil
         end
         if ll~=kk then

            for jj=1, nn do
               tt=ai[kk][jj]
               ai[kk][jj]=ai[ll][jj]
               ai[ll][jj]=tt
            end
            tt=b[kk]
            b[kk]=b[ll]
            b[ll]=tt
         end
         for ii=kk+1, nn do
            qq=ai[ii][kk]/ai[kk][kk]
            for jj=1, nn do
               if jj==kk then
                  ai[ii][jj]=0
               else
                  ai[ii][jj]=ai[ii][jj]-qq*ai[kk][jj]
               end
            end
            b[ii]=b[ii]-qq*b[kk]
         end
      end
         
       x[nn]=b[nn]/ai[nn][nn]
         
      for ii=nn-1, 1, -1 do
         tt=0
         for jj=1, nn-ii do
            tt=tt+ai[ii][ii+jj]*x[ii+jj]
            x[ii]=(1/ai[ii][ii])*(b[ii]-tt)
         end
      end
         
      ---
      for n=i0, i0+p do
         sum=0
         for kk=1, degree do
            sum = sum + x[kk+1]*math.pow(n,kk)
         end
         fx_buffer[n]=x[1]+sum
            SetValue(index+n-bars, 1, fx_buffer[n])
      end
          
      --- Std 
      sq=0.0
      for n=i0, i0+p do
         if CandleExist(index+n-bars) then
            sq = sq + math.pow(C(index+n-bars)-fx_buffer[n],2)
         end
      end
         
      sq = math.sqrt(sq/(p+1))*kstd

      for n=i0, i0+p do
         sqh_buffer[n]=fx_buffer[n]+sq
         sql_buffer[n]=fx_buffer[n]-sq
            SetValue(index+n-bars, 2, sqh_buffer[n])
            SetValue(index+n-bars, 3, sql_buffer[n])
      end
                  
      SetValue(index-bars, 1, nil)
        SetValue(index-bars, 2, nil)
        SetValue(index-bars, 3, nil)
      
      calculated_buffer[index] = true
      out1 = fx_buffer[bars]
      out2 = sqh_buffer[bars]
      out3 = sql_buffer[bars]
      
      return out1, out2, out3
   
   end
   
end
----------------------------    ----------------------------    ----------------------------
----------------------------    ----------------------------    ----------------------------
----------------------------    ----------------------------    ----------------------------
function FindExistCandle(I)

   local out = I
   
   while not CandleExist(out) and out > 0 do
      out = out -1
   end   
   
   return out
 
end

local myfunc
function Init()
   myfunc = Reg()
   Settings.line=
         {
            {
               Name = "iReg",
               Color = RGB(0, 0, 255),
               Type = TYPE_LINE,
               Width = 2
            },
            {
               Name = "+iReg",
               Color = RGB(0, 128, 0),
               Type = TYPE_LINE,
               Width = 2
            },
            {
               Name = "-iReg",
               Color = RGB(192, 0, 0),
               Type = TYPE_LINE,
               Width = 2
            }
         }
   return #Settings.line
 end
 
function OnCalculate(index)
   
   --WriteLog ("OnCalc() ".."CandleExist("..index.."): "..tostring(CandleExist(index)))

   if Settings.degree > 3 then
      return nil
   end
   
   return myfunc(index, Settings)
 end
 
Ну это очень древний вариант.

Надо тогда сдвинуть очистку данных ниже проверок.

SetValue(index-bars-barsshift, 1, nil)
 
Древний не значит ненадежный! Спасибо, разобрался исходную версию, перевел на луа 5.4, оказывается все отрисовывает, видимо была какая то моя уже модернизация. Отличный индикатор!
 
Прежде чем продолжить экспериментировать с фильтрами, нужна торговая стратегия для этих самых эксперементов, "велосипед будет старый", за основу возьму ТОРГОВЫЙ АЛГОРИТМ 1.0 (ВАЛЕНТИНА САВЕНКОВА) из Школы МосБиржи.

От туда же и правила, просто формализую для алгоритмической торговли:

[Правило 1. 3 фазы динамики цены: Растущий тренд ADX>25 +DI>-DI, Флэт (боковик) ADX<25 , Падающий тренд ADX>25 -DI>+DI.
Правило 2. Флэт (боковик) ADX<25 не торгуем.
Правило 3. Сигнал продолжения на покупку Price > Ema, Растущий тренд ADX>25 +DI>-DI, Сильный ADX (ADX[I]>ADX[I-1].
Правило 4. Выход из позиции Long сигналы RSI на продажу и слабый  ADX (ADX[I]<ADX[I-1]
Правило 5. Сигнал продолжения на продажу Price < Ema, Падающий тренд ADX>25 -DI>+DI, Сильный ADX (ADX[I]>ADX[I-1].
Правило 6. Выход из позиции Short сигналы RSI на покупку и слабый  ADX (ADX[I]<ADX[I-1].
Правило 7. Для RSI: зона перекупленности >75; перепроданности <25; Выход из зон торговый сигнал.

В процессе тестирования будут меняться правила и условия, поэтому зафиксирую базовые особенности.
Особенности реализации:
--[[код стратегии для QUIK на Lua 5.4 (процедурный стиль).
Все расчеты выполняются последовательно, -- состояние хранится в глобальных таблицах (или буферизация?),
минимальные вычислительные затраты, локальное кэширование ценовых данных.
Рекуррентные формулы для EMA и RSI, трекинг состояния через переменную position, защита от повторных входов,
Четкие правила выхода.
Визуализация, ? независимых графических серий, Цветовое кодирование элементов,
Настройки графического интерфейса в QUIK:
Сигналы отображать стрелками:
AddSignal(index, signal > 0 and 1 or signal < 0 and -1 or 0)
Добавить горизонтальные уровни для RSI:
   AddLevel(75, "Overbought", RGB(255,0,0))
   AddLevel(25, "Oversold", RGB(0,255,0))
Добавить горизонтальные уровни для ADX:
  AddLevel(25, "Weakness", RGB(0,255,0))

Торговая стратегия на основе ADX, RSI и EMA.
   Правила входа/выхода, согласно условиям задачи см. выше.
   ТОРГОВЫЙ АЛГОРИТМ 1.0 (ВАЛЕНТИНА САВЕНКОВА) Школа МосБиржи.
--]]
 
       
Код
 -- Получение значений индикаторов
        local rsi_val = rsi(I, {period = period_rsi}, ds)
        local adx_val, plusDI, minusDI = adx(I, {di_len = period_adx, adx_len = period_adx}, ds)
        local ema_val = ema(I, {period = period_ema}, ds)
        local price = C(I) or 0
        -- Определение рыночной фазы
        local market_phase
        if adx_val > 25 and plusDI > minusDI 
      --and price > ema_val 
      then
            market_phase = "uptrend"
        elseif adx_val > 25 and minusDI > plusDI 
      --and price < ema_val 
      then
            market_phase = "downtrend"
        else
            market_phase = "range"
        end

        -- Сигналы управления
        local signal = 0

        -- Правило 2: Не торгуем в флэте
        if market_phase == "range" then
            if position ~= 0 then
                signal = -position -- Закрытие позиции
            end
            return signal
        end

        -- Длинные позиции
        if market_phase == "uptrend" then
            -- Сигнал на покупку (Правило 3)
            if position <= 0 and 
               price > ema_val and 
               adx_val > prev_adx and 
               rsi_val < 75 then
                signal = 1
            end

            -- Выход из лонга (Правило 4)
            if position == 1 and 
              (rsi_val > 75 or adx_val < prev_adx) then
                signal = -1
            end
        end

        -- Короткие позиции
        if market_phase == "downtrend" then
            -- Сигнал на продажу (Правило 5)
            if position >= 0 and 
               price < ema_val and 
               adx_val > prev_adx and 
               rsi_val > 25 then
                signal = -1
            end

            -- Выход из шорта (Правило 6)
            if position == -1 and 
              (rsi_val < 25 or adx_val < prev_adx) then
                signal = 1
            end
        end

        -- Обновление состояния
        prev_adx = adx_val or 0
        position = position + signal
        
        -- Ограничение позиции [-1, 0, 1]
        position = math.max(-1, math.min(1, position))
 
Все сдаюсь :sad: , 25 вариант модификации скрипта ADX не соответствует встроенному в QUIK не по нормировке не по сглаживанию?
Нет,  я конечно еще тот программист :smile: , но читать то умею, заглянул в Руководство пользователя QUIK © ARQA Technologies / www.arqatech.com/ru/products/quik/,
и о чудеса:
Код
ADX («Индекс направления движения усредненной цены»)
Индикатор ADX (Average Directional Movement Index) предназначен для определения направления движения среднего значения цены на основе сравнения двух индикаторов направленности 
* +DI (положительного изменения цены) и 
* -DI (отрицательного изменения цены), 
построенных по 14 периодам. 
По рекомендации автора индикатора Уэллса Уайлдера преобладание линии +DI над -DI является сигналом «покупать», и «продавать» если значение -DI поднимается выше значения +DI.

Вычисление:
ADXj = EMA (DXj , N), Где DXj вычисляется следующим образом: 

DXj = |(+DIj - -DIj)| / (+DIj + -DIj) * 100

+DIj = EMA (+SDIj , N)
-DIj = EMA (-SDIj , N)

+SDIj = +DMj / TRj * 100 если TRj <> 0, иначе +SDIj = 0
-SDIj = -DMj / TRj * 100 если TRj <> 0, иначе -SDIj = 0

TRj = max(|HIGHj - LOWj|, |HIGHj - CLOSEj-1|, |LOWj - CLOSE j-1|)

+DMj = |HIGHj - HIGHj-1| если HIGHj > HIGHj-1, иначе +DMj = 0
-DMj = |LOWj-1 - LOWj| если LOWj < LOWj-1, иначе -DMj = 0

если +DMj > -DMj, то -DMj = 0
если -DMj > +DMj, то +DMj =0
если +DMj = -DMj, то +DMj =0, -DMj =0

где:
CLOSE — цена закрытия; 
LOW — минимальная цена интервала; 
HIGH — максимальная цена интервала.
Значения индикаторов +DI и –DI учитываются с двумя знаками после запятой. 
Параметры настройки: 
«Кол-во периодов» - количество периодов N для расчета MA. 
«Метод» - метод расчета МА (Simple, Exponential, Vol.Adjusted, Smoothed), по умолчанию используется метод «Exponential». 
«Цвет +DI» - выбор цвета линии +DI. 
«Цвет -DI» - выбор цвета линии -DI.
Мало того что в вычислениях ошибка, так еще и "к верху тормашками"  :shock: , видимо кто английскую школу окончил или индусов наняли. Но от этого нелегче. Не ужели все перепроверять нужно за  ARQA Technologies?
Вообще в приличных домах принято, если оригинальный алгоритм подвергается изменениям, хотя бы "пометочку" делать!

Самое главное, встроенный индикатор отлично располагается в нормированном поле.
Возможно кто то знаком с проблемой и про комментирует, или разработчики внесут пояснения (разъяснения), что не так с алгоритмом?  
 
Судя по откликам и  комментариям были "индусы"  :smile: , но это уже не важно, а проверять видимо нужно все! Понятие Веры не из финансов. Быстрый поиск на просторах не дал нужного эффекта, друг у друга копируют перерисовывают и публикуют. Обратился к источнику, хотя моя версия электронной книги не очень удобна, но оно того стоило! 190 страниц без всякой "воды", одни выкладки и миллиметровка!
"Да, были люди в наше время, Не то, что нынешнее племя: Богатыри — не вы!"

Сработал и принцип монады (взаимно дополнительные двойственные отношения) "нет худа, без добра", заприметил несколько интересных идей.

Сама ошибка банальна, но принципиальна, кто знаком с до историческими (до ПВМ) работами трейдеров (Ганн, Вайкофф вот и Уайлдер приверженец старой школы) по определению трендов, знает что кроме баров трендовых, есть бары поглощения и внутренние, собственно которые и не учтены при определениях направленных движений.

Еще одно что смущает, так это в каком варианте использовать истинный диапазон (TR), для нормализации данных, сглаживать или нет?  В своем варианте я пока предпочитаю сглаживать, так как использование простого TR приводит к значительным выбросам.

На помню для чего так подробно разбираюсь с ADX? Интересуют инвестиционная алгоритмическая стратегия (ну или средний срок), а на этих временных интервалах, где дневной график выступает как 1 минутный, индикатор уже и в этой реализации дает отличные результаты. Когда ADX входит в резонанс с одним из направлений движений, это означает что у противоположной стороны заберут всю ликвидность, именно про эти ситуации говорят и пишут, "не стой на пути у паровоза"! За дело взялись большие деньги (Крупный игрок, а Маркет Мейкер за частую вынужден участвовать в противофазе), здесь входят инвестиционые фонды, банки и поддерживают свои позиции.
Про эти ситуации говорят, дай прибыли течь!

Пару слов про индекс относительной силы (RSI), ранее как то я его не до оценивал, предпочитая стохастик как более очевидный. Но RSI с ADX, это дополнительная мощность в принятии решений, автор его спроектировал так что он является центростремительным в отличии от стохастика который гуляет по локальным минимумам / максимумам. Что бы сдвинут RSI в зоны 70 или 30 нужно очень сильно постараться! А выход из этих зон говорит об однозначно слабости стороны.

Вот и судите сами стоит такая стратегия и Уайлдер, чтоб  пели про них "дифирамбы"?  
 
Механика рулит!

Или как инженерный подход к рынку Уайлдера, превратил трейдинг из искусства в науку, введя стандартизированные метрики (ATR, ADX, SAR). Цитата Уайлдера (из интервью Forbes, 1980): «Рынок — не хаос. Это машина, и моя задача — найти её инструкцию по эксплуатации». Вот уже почти полвека назад, опубликована работа Уэллса Уайлдера «Новые концепции в технических торговых системах» (1978). Кто не знаком с формулами, которые до сих пор используются в алгоритмической торговле. Идеи легли в основу миллионов торговых роботов. Любая торговая платформа, включет эти индикаторы, как стандартный инструмент.

Вот несколько его принципов к анализу рынка.
Рынок трактуется как механизм, где цена, объем и время — взаимосвязанные переменные. Задача трейдера — вывести «формулы» их взаимодействия.
Отказ от традиционных методов анализа, визуальной интерпретации графиков, в пользу математически верифицируемых систем.
Несмотря на акцент на математике, его системы требуют понимания рыночного контекста.

Почему Механика?  Одной из основных концепций в механике является концепция РЫЧАГА. Математическая запись принципа действия рычага является тождество либо неравенство. Тождество (F₁ * d₁ = F₂ * d₂), выражает фундаментальное условие его равновесия в идеализированной модели. Это тождество лежит в основе понимания того, как рычаги позволяют нам умножать силу или изменять направление ее действия, и является одной из краеугольных концепций механики, известной еще со времен Архимеда.

Момент силы, тогда выражается M = F * d — и является МЕРОЙ действия силы.

Именно так записан Закон Спроса и Предложения в экономике, просто меняются переменные и смысл, а закон прежний - закон РЫЧАГА.
Точно так же можно применять в любой сфере анализа, по этому принципу работает и финансовый рычаг, и валютные пары.
 
"Против лома (РЫЧАГА) нет приема".

Или почему русский язык (его остатки + вся совокупность языковой группы), является языком программирования природных операционных механизмов (самоорганизация, самосохранение, саморегулирование, самонормировка ...). Родной язык сохранил СМЫСЛЫ, то что без СМЫСЛА, бессмыслица == не родное!

Этот не большой пример, помогает проиллюстрировать этот подход.
В арифметике существуют четыре основные операции (+, -, *, /):
Операция 1) (+) Говорим СЛОЖИТЬ или прибавить. Сложить - смыслы что то упорядочить, сохранить (сложить на складе), прибавить что - то к чему - то.
Операция 2) (-) Говорим Вычесть Отнять. Тут и комментировать нечего, отнять так отнять.
Операция 3) (*) Говорим Умножить. Допустим, то что всех интересует в инвестициях - приумножить капитал. Ведь никто не говорит сложить капитал?
Операция 4) (/) Говорим Делить или Отношение. Как ты ко мне относишься? Так формируем смысловой вопрос. Смыл операции делить комментировать излишни.
Есть еще операция возведения в степень, но это собственно умножение. Да и четыре математических операций по смыслу далеко не четыре!

Сермяжная правда, или почему инвестиции - это при Умножение капитала, а следовательно ключевыми становятся операции при УМНОЖЕНИЯ и ОТНОШЕНИЯ!
Выяснения отношения - проводим анализ, а умножение это процесс - созидания. Эти двойственные взаимно дополнительные отношения, есть не что иное, как главное звено системы. Выделяя главное звено, потяну за которое распутывается весь клубок взаимоотношений. Верно и обратное!

Имея двойственные отношения, записанные в виде закона РЫЧАГА, можно сделать математические преобразования и вернуть полную СМЫСЛОВУЮ запись уравнения математических весов.
                                                (М1 / 1)^(+n) = (1 / М2)^(-n), где
M - выступает как момент силы;
n - можно назвать уровень развития - степень иерархии.
Именно так, с помощью математических весов, можно записать производящие функции природных операционных механизмов (генетический код), а это уже "Наивысшая Математика" и совсем другая тема!

В целях задачи анализа, интерес вызывает вторая часть этого уравнения, которая отражает внутреннее содержание или структуру (нет ничего больше 1, а единица это целое).
То есть, определив главное звено системы, записав таким образом двойственные ОТНОШЕНИЯ, со всей математической строгостью, можно применять структурный анализ, на каждой ступени иерархии.
А если рассматриваются взаимодополнительные ОТНОШЕНИЯ, то весы уже станут монадой, и можно со всей математической строгостью, применять весь тот исторический аппарат анализа и прогнозов сохранившихся знаний. Не только распутывать, но и строить новые генетические цепочки, делать прогнозы (СУДЬБЫ) для систем любой природы, используя математический аппарат "Наивысшей Математики". И это уже не философские аспекты Лейбница, а строгий математический аппарат "Наивысшая Математика", здесь вероятно правильней, сохраняя смыслы, назвать "ВЫСШЕЙ АРИФМЕТИКОЙ".

На помню что, момент силы выступает мерой по отношению к силе (или плечу рычага?), и всегда можно развернуть, уточняя детали.
Тогда записи вида: Капитал = Деньги + Активы, Активы = Спрос на Акции + Предложение Денег ..., приобретают новые СМЫСЛЫ, а у нас появился новый дополнительный универсальный аппарат анализа и что не менее важно СОЗИДАНИЯ - "вычисление судьбы"!

"Вот и сказочки конец, а кто слушал МОЛОДЕЦ". :smile:  
 
На мой взгляд, продемонстрировать свойства записи пропорции выше, наглядней всего можно с помощью "Золотой пропорции", просто подставив значения в формулу и получая свойства.
Об этом уникальном отношении (золотом сечении) написано много книг; напомню его определение, это отношение двух величин, при котором отношение большей части (a) к целому равно отношению большего к меньшему (b):
                    (a + b)  /a = a / b = φ ≈ 1.618

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

Вот некоторые основные свойства этой уникальной пропорции:
1. принцип Самоподобие;
2. принцип Самодостаточности;
3. принцип Само нормирования саморегуляция или само балансировка.

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

Раскрываем Смыслы:

А). Диагональ 1/1 в записи рычажных весов выражает принцип меры: конвертацию одних свойств в другие. Она придаёт уравнению динамику — систему можно трактовать не только как статичную запись параметров, но и как модель процесса, где силы и расстояния компенсируют друг друга. В экономике аналогом служит закон спроса и предложения. Смысл этой диагонали выражает  меру,  меру конвертации одних свойств в другие (в том числе конвертацию цен).

Мера здесь становится центральной идеей, которая связывает все взаимодействующие системы в единое целое, устанавливая гармонию и равновесие. Это модель для анализа баланса между различными силами их величинами, но и также контроль изменения их свойств. Эта модель, символизирует баланс между прерывностью и непрерывностью в процессе изменений. Это как в квантовой механике принцип суперпозиция. Концепцию квантовой запутанности, по смыслу, означает, что системы, взаимодействующие друг с другом, могут быть неразделимы и их состояния можно описать лишь через их взаимосвязь.

Б). О смысле масштаба (уровне иерархии).
Бинарные отношения имеют гиперкуб состояний 2^n, где n - это масштаб, вложенность процессов, их взаимосвязь, и их фрактальная природа. Каждый уровень иерархии в контексте трейдинга может быть связан с определенным временным масштабом (тайм фреймом). Каждый такой уровень может быть трактован как масштаб ценового движения, где динамика рынка на одном уровне может влиять на динамику рынка на другом уровне. И это отдельная большая тема, я лишь про состояния двойственных отношений.

2^0=1 - монада;
2^1=2 - проявление противоположных свойств;
2^2=4 - квадрат состояний;
2^3=8 - куб состояний, 8 - вершин, 6 - граней, переходы по которым образуют замкнутый цикл преобразований сложного отношения (из проекционной геометрии);

Куб состояний - это достаточная модель, чтоб описать все фазовые переходы бинарной системы, этой экономической модели. Таким образом, квадрат можно рассматривать как проекцию куба на плоскость — упрощённую модель. А куб уже способен отразить более сложные переходы и циклы.

Эти выше описанные принципы, применяемые в идеи создании прикладной системы саморегулирования. Системы, которая бы описывала и управляла динамикой процессов, таких как рыночные отношения и портфель инвестора.
Не которые подходы данной идеи, уже демонстрировал на этой ветке. Тема конечно обширна и громоздка для данного форума,  а алгоритмы положенные в код луа, относительно небольшие, показывают прекрасные торговые результаты на тестах. Есть еще несколько идей по оптимизации результатов и одна из них нечеткая логика в системе принятия решений. Всем удачи.
 
Цитата
VPM написал:
На мой взгляд, продемонстрировать свойства записи пропорции выше, наглядней всего можно с помощью " Золотой пропорции ", просто подставив значения в формулу и получая свойства.
"Смешались в кучу кони, люди..."
 
nikolz,  Согласен с Вами, несколько сумбурно, но описываемая тема сложна, поэтому растянута на нескольких постах выше. Это абсолютно новый подход идеи  концепции механики Г.Я. Зверева с развитием их М.И. Беляевым. Я лишь описываю прикладной характер использования в экономике и в частности трейдинге. На основе этих идей и логике построены две модели, торговые системы, отражающие взаимодействие: 1. Рынок / трейдер. 2. Рынок / Портфель.

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

1. Что такое сила?
В классической механике сила — это как бы нечто первичное, что заставляет вещи двигаться. Например, когда вы толкаете мяч, сила заставляет его катиться. Но в механике Зверева сила не является чем-то основным. В этом подходе сила — это результат взаимодействия разных процессов, а не что-то самостоятельное. Представьте, что сила — это как следствие того, что два разных процесса (например, две "энергии") начинают взаимодействовать друг с другом. Сила появляется всякий раз, когда что-то нарушает баланс этих процессов. То есть, сама сила — это не "изначальная сущность", а нечто вторичное, что появляется в результате взаимодействия.

2. Что такое "поток"?
Поток — это не то же самое, что вода, текущая по реке. Здесь под потоком понимается фундаментальное движение, основное "древнее" движение, которое лежит в основе всего бытия. Это не просто что-то, что течет, а движение, которое носит в себе потенциал для создания всего, что мы видим вокруг нас. Поток не является простым или однообразным. Он возникает как результат множества взаимодействий более фундаментальных сил. Это как если бы всё, что происходит в мире, являлось результатом сложных взаимодействий на более глубоком уровне.

3. Взаимодействие двух потоков — что происходит?
Когда два потока взаимодействуют друг с другом, они могут создать нечто третье. Это взаимодействие напоминает сложение векторов в математике, когда два вектора (направления) создают третий, который несёт совершенно новое качество. Это как если бы два человека, работая вместе, создавали нечто гораздо более значимое и сложное, чем если бы каждый действовал по отдельности. В результате такого взаимодействия возникает новое качество — третья "сила", которая не сводится к простому сложению двух первоначальных потоков.

4. Резонанс как основа всего.
Представим себе гигантский музыкальный инструмент, в котором все его части связаны между собой. Когда одна из частей начинает вибрировать, другие части начинают резонировать с ней. Эта вибрация и взаимодействие частей и называется "резонансом". Всё в мире также резонирует с другими частями. Масса, заряд, все свойства вещей — это результат того, как они "вибрируют" в этой общей симфонии мира. Каждое явление или объект, будь то частица или целое тело, не существует самостоятельно, а является частью общей гармонии. Это как музыка, где каждая нота и инструмент создают общий звук, который зависит от того, на каком месте в этом оркестре находится каждая нота.

Главная идея:
  • Поток — это основное движение, которое лежит в основе всего.

  • Взаимодействие потоков создаёт новое качество.

  • Резонанс с более общей "партитурой" мироздания определяет свойства объектов.

Таким образом, мы живем не в мире отдельных предметов, а в мире, где всё связано, взаимодействует и создаёт новые качества через сложные процессы. Классическая механика (Ньютон) объясняет, как частицы взаимодействуют с силами. А эта механика Зверева и Беляева предлагает новую парадигму, где всё объясняется через взаимодействия и паттерны (резонансные связи), а не через отдельные силы и частицы.

В этом подходе важно не то, что есть отдельные сущности, а то, как эти сущности взаимодействуют друг с другом, создавая новые свойства. Простыми словами: Это как оркестр, где каждый инструмент (сущность) играет свою роль, но важно, как эти инструменты взаимодействуют друг с другом, создавая целый симфонический спектакль.

 
VPM,
Непонятно, какой смысл в том, что Вы пересказываете .
Что это?  Вольная интерпретация понимания  процессов на рынка на уровне средней школы?
----------------------
Мозгу свойственно  выстраивать логически связанное объяснение (оправдание) того, что он узнает.
При этом, как правило, информация (примеры) выбираются им так, чтобы они подтверждали придуманное объяснение.
Примеры, которые не подтверждают, просто игнорируются.
------------------
Может для начала дадите пояснение чем то, что вы излагаете лучше того, что написано в учебниках по экономике.
 
nikolz,  Не знаю такой школы, где припадают наука о смыслах и отношениях? Её аппаратом является не только математика чисел, но и математика форм, структур, пропорций и инвариантов.

1. Чем этот подход фундаментально отличается от учебников и почему он может быть мощнее?

Ключевое отличие не в примерах, а в самом типе математики и системе координат для анализа.
Учебники экономики оперируют абсолютными величинами (объёмы, рубли, штуки) и линейными зависимостями (спрос падает при росте цены). Это язык количества.
Данный подход оперирует безразмерными отношениями (Товар/Деньги, Спрос/Предложение) и их балансом. Это язык пропорций, структуры и качества.

2. Пояснение на Конкретной Математике
Возьмём пример: Товар / Деньги.
В учебнике: Это два отдельных показателя. Выручка 10 000 руб. и производство 100 единиц товара. Анализ линейный: «Надо производить больше, чтобы больше продать».
В данном подходе: Мы сразу смотрим на отношение Товар/Деньги = 100 / 10 000 = 0.01.

2.1 Что это число на самом деле означает?
Это коэффициент окупаемости или «ценность» товара в денежном выражении. Число 0.01 говорит, что 1 рубль выручки «обеспечен» всего 0.01 единицы товара. Это крайне низкая производительность труда или маржинальность.
А если бы отношение было равно 1? Это означало бы идеал: 1 единица товара приносит 1 условную единицу денег. То система работала бы на 100% своей эффективности.

2.2 Сравните анализ:
Учебник: «Мало товара -> надо производить больше».
Данный подход: «Система обладает низкой эффективностью преобразования товара в деньги (КПД=0.01). Рост количества товара без изменения этого коэффициента бесполезен.
Надо менять качество системы: повышать цену, переходить на более маржинальные товары, оптимизировать издержки». Это качественно иной вывод, основанный не на количестве, а на структурном соотношении.

3. Система Координат для Принятия Решений
Мы строим универсальную систему координат для любого рынка. Использую квадрат состояний вписанный в единичную окружность. Рычажные весы — это не метафора, а математическая модель. Любое экономическое состояние можно точно позиционировать на этом графике, получив исчерпывающую диагностику.

3.1 Возьмем кризис перепроизводства (например, падение цен на нефть):
  • Товар/Деньги >> 1 (товара много, денег он приносит мало)
  • Спрос/Предложение << 1 (предложение сильно превышает спрос)
  • Точка на графике будет четко находиться в левом нижнем квадранте («Кризис»).
3.2 Возьмем «горячий» стартап на подъеме:
  • Товар/Деньги < 1 (денег (инвестиций) пока вложено больше, чем создано продукта)
  • Спрос/Предложение > 1 (ажиотажный спрос опережает возможности)
  • Точка на графике будет в правом верхнем квадранте («Рост»).
Это не подбор примеров под теорию. Это классификация состояний системы на основе объективных измеряемых соотношений. Вы не игнорируете данные, а получаете их точный «диагноз».

4. Кому и для чего это реально нужно?
  1. Владельцу малого бизнеса: Чтобы не просто видеть «упала выручка», а понимать какое именно соотношение нарушилось: упал спрос? стало невыгодно производить? увеличились долги? Это позволяет бить точно в причину, а не по симптомам.
  2. Инвестору/Трейдеру: Чтобы оценивать не отдельные показатели компании (выручка, долги), а их системную сбалансированность. Компания с идеальными точками на этих весах — устойчива. Компания с точками в крайних положениях — кандидат на взлёт или банкротство.
  3. Экономисту-аналитику: Чтобы строить нелинейные прогнозы. Если точка ушла в крайнее положение («перегрев» рынка), система по законам маятника будет стремиться качнуться назад. Это позволяет предсказывать коррекции рынка и кризисы.
Итог: Это не «вольная интерпретация», а прикладной системный анализ, переводящий экономику с языка абсолютных величин на язык структурных отношений и балансов. Он не заменяет учебники, а дает инструмент для синтеза их данных в целостную картину, понятную для принятия решений на любом уровне.
 
Цитата
VPM написал:
VPM,
Без обид, но это очередное "открытие" дилетанта.
------------------
Это какой-то набор слов , а не математика.
Какая-то каша.
Например,
----------------------
Код
2. Пояснение на Конкретной Математике
Возьмём пример: Товар / Деньги.
В учебнике: Это два отдельных показателя. Выручка 10 000 руб. и производство 100 единиц товара. Анализ линейный: «Надо производить больше, чтобы больше продать».
В данном подходе: Мы сразу смотрим на отношение Товар/Деньги = 100 / 10 000 = 0.01.
------------------------ 
2.1 Что это число на самом деле означает?
Это коэффициент окупаемости или «ценность» товара в денежном выражении. Число 0.01 говорит, что 1 рубль выручки «обеспечен» всего 0.01 единицы товара. Это крайне низкая производительность труда или маржинальность.
А если бы отношение было равно 1? Это означало бы идеал: 1 единица товара приносит 1 условную единицу денег. То система работала бы на 100% своей эффективности.
=======================
А чем "ценность" товара  отличается от цены товара ?
Цена товара - говорит, что  1 единица товара дает 100 руб выручки.  Т е по смыслу, тоже самое что и придуманная вами "ценность" товара.
================
Про производительность у Вас вообще ерунда написана.
========================
Вы хотя бы сначала изучили учебники,
а потом придумывали бы отсебятину  из смеси понятий из механики ,математики и демагогии.
.
 
Цитата
nikolz написал:
А чем "ценность" товара  отличается от цены товара ?Цена товара - говорит, что  1 единица товара дает 100 руб выручки.  Т е по смыслу, тоже самое что и придуманная вами "ценность" товара.
Очень справедливое замечание. Давайте аккуратно разберёмся с терминами и математикой, без "придумывания" новых смыслов. Первый раз я с понятием  ценность лично столкнулся в работе А, Эльдара о аккуратненько ввел понятие не заделав пояснений, второй принципиальный у Ральфа Винса. Мне тоже изначально показалось некой надуманностью.
Обо всем и по порядку.
  • Цена товара — это объективная, фиксируемая характеристика: сколько рублей нужно заплатить за 1 единицу товара.
    Формально:       P = Выручка / Количество товара; Пример: 100 булок × 100 руб. = 10 000 руб. → Цена = 100 руб. за булку.

  • Ценность товара — это уже субъективная категория (экономическая теория, «полезность» ).
    Она не измеряется напрямую в рублях, а определяется тем, насколько товар удовлетворяет потребность потребителя.

  • цена = денежная мера;

  • ценность = мера полезности.

В математическом анализе лучше не путать эти термины.

Цена — это данность. Она как погода на рынке. Её можно наблюдать и подстраиваться, но нельзя контролировать напрямую.

Ценность в данном подходе (Язык Системы)
  • Это отношение Товар / Деньги. Это внутренний, системный параметр, который показывает, насколько эффективно  производство преобразует товар в деньги.

  • Как определяется? Только внутренними процессами: производительностью труда, качеством сырья, организацией работы. Это объективная мера эффективности бизнеса как системы.

Ценность (в нашем понимании) — это КПД вашего двигателя.  Аналогия: Цена - Спидометр (показывает текущую скорость); Ценность - Мощность двигателя (показывает потенциал автомобиля).

«Весы» можно корректно, переформулировать через классические экономические коэффициенты, и тогда не будет путаницы с терминами вроде «ценность», но я ставлю своей задачей вернуть Смыслы! Смыслы понятные даже бабушке решивший инвестировать.

 

Таким образом, цена говорит вам, где вы сейчас находитесь, а ценность (КПД) показывает, насколько далеко вы сможете уехать и пережить ли дорожные испытания.

Учебники экономики фокусируются на спидометре (цене, объёмах). Данный подход даёт вам диагностический сканер для двигателя вашего бизнеса.

 
Цитата
nikolz написал:
Про производительность у Вас вообще ерунда написана.
Согласен: в классическом определении производительность труда = выпуск продукции / затраты труда. Если я в примере некорректно связал это с коэффициентами «товар/деньги» — это моя ошибка. В нашем случае корректнее говорить не о производительности труда, а о рентабельности или ценовой структуре (доля себестоимости в выручке).
 
Цитата
nikolz написал:
Без обид, но это очередное "открытие" дилетанта.
Это можно даже не писать, давно знакомы, к Вашим выпадам уже привык не обращаю внимание, в крайне случае тоже самое получите.
Страницы: Пред. 1 ... 3 4 5 6 7
Читают тему
Наверх