Перейти к содержимому
  • 0
DESHLI

QUIK: Как сделать из индикатора торгового робота?

Вопрос

Мне надо сделать из xsarATR.lua Торгового робота.

кто поможет пожалуйста, где там вывод покупки и продажи?

xsarATR.lua:

Скрытый текст

Settings = 
{
    Name = "xSarATR",

    periodATR =21,
    
    ddd=3,
    line=
    {
        {
            Name = "xSarATR",
            Color = RGB(0, 192, 0),
            Type = TYPET_BAR,
            Width = 2
        },
        {
            Name = "xSarATR",
            Color = RGB(192, 0, 0),
            Type =  TYPET_BAR,
            Width = 2
        }
    ,
        {
            Name = "xSarATR",
            Color = RGB(0, 0, 255),
            Type = TYPE_TRIANGLE_UP,
            Width = 3
        }
    ,
        {
            Name = "xSarATR",
            Color = RGB(255, 0, 0),
            Type = TYPE_TRIANGLE_DOWN,
            Width = 3
        }
    }
}


function cached_SAR()
    local cache_H={}
    local cache_L={}
    local cache_SAR={}
    local cache_ST={}
    local AMA2={}
    local CC={}
    local CC_N={}    
    local ATR={}
    
    return function(ind,  _p4,_ddd)

        local index = ind
        local ZZZ = 0
                
        if index == 1 then
            cache_H={}
            cache_L={}
            cache_SAR={}
            cache_ST={}
            AMA2={}
            CC={}
            CC_N={}
            ATR={}

------------------
            CC[index]=C(index)
            CC_N[index]=(C(index)+H(index)+L(index))/3
            cache_H[index]=H(index)
            cache_L[index]=L(index)
            cache_SAR[index]=L(index)-2*(H(index)-L(index))
            AMA2[index]=(C(index)+O(index))/2
            cache_ST[index]=1
            ATR[index]=math.abs(H(index)-L(index))
            return nil
        end
        ------------------------------
            ZZZ=math.max(math.abs(H(index)-L(index)),math.abs(H(index)-C(index-1)),math.abs(L(index)-C(index-1)))
            ATR[index]=(ATR[index-1]*(_p4-1)+ZZZ)/_p4
            cache_SAR[index]=cache_SAR[index-1]
            CC[index]=C(index)
            AMA2[index]=(2/(_p4/2+1))*CC[index]+(1-2/(_p4/2+1))*AMA2[index-1]
            CC_N[index]=(C(index)-AMA2[index])/2+AMA2[index]
            cache_ST[index]=cache_ST[index-1]
            cache_H[index]=cache_H[index-1] 
            cache_L[index]=cache_L[index-1]
---------------------------------------------------------------------------------------
        if index ==2 then
            return nil
        end
----------------------------------------------------------------------        
        if cache_ST[index]==1 then
                
                if cache_H[index] < CC[index] then 
                    cache_H[index]=CC[index]
                end
            cache_SAR[index]=math.max((cache_H[index]-ATR[index]*_ddd),cache_SAR[index-1])
            if (cache_SAR[index] > CC_N[index])and(cache_SAR[index] > C(index)) then 
                cache_ST[index]=0
                cache_L[index]=CC[index]
                cache_SAR[index]=cache_L[index]+ATR[index]*_ddd*1
                return  nil,cache_SAR[index],  nil,cache_H[index]-ATR[index]*_ddd
            end
            return cache_SAR[index], nil, nil, nil
        end
---------------------------------------------------------------------------------------
        if cache_ST[index]==0 then
                if cache_L[index] > CC[index] then 
                    cache_L[index]=CC[index]
                end
            cache_SAR[index]=math.min((cache_L[index]+ATR[index]*_ddd),cache_SAR[index-1])
            if (cache_SAR[index] < CC_N[index])and (cache_SAR[index] < C(index)) then 
                cache_ST[index]=1
                cache_H[index]=CC[index]
                cache_SAR[index]=cache_H[index]-ATR[index]*_ddd*1
                return cache_SAR[index], nil, cache_L[index]+ATR[index]*_ddd,nil
            end
        return nil,cache_SAR[index],  nil, nil
        end


    end
end
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------

function Init()
    mySAR = cached_SAR()
    return 4
end
function OnCalculate(index)
    return mySAR(index, Settings.periodATR,Settings.ddd)
end

 

 

 


 

 

Изменено пользователем Alex
Установка спойлера и тега код

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

2 часа назад, Zer0Galaxy сказал:

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

Вместо куска кода, выдранного непонятно откуда...

Это не кусок кода, а индикатор для квика, которых очень и очень много в природе. А QUIK - это прога, торговый терминал, с помощью которого можно покупать и продавать различные валюты, фьючерсы, акции и пр. посредством отправки торгового поручения на биржу через брокера. Это просто луа скрипт, который рисует графики для трейдера, чтобы понимать, что покупать и что продавать в зависимости от роста или падения цены на рынке того или иного финансового инструмента. Сам по себе этот скриптик ничем не торгует и торговать не может в принципе, так как это не торговый робот на Lua для квик, это просто индикатор.

 

Ну а чтобы этот скрипт что-то вообще делал,  нужно в корневой папочке квика создать папку LuaIndicators и закинуть этот скрипт в эту папку, а в проге в меню "графики" выбрать этот скрипт.

п.с. Скрипт сам по себе вроде рабочий, по крайней мере на тестовом квик-джуниор (для обучения трейдеров который), с тестовым сервером он работает, проверил только-что его...

Скрытый текст

97ffc948d5.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, DESHLI сказал:

где там вывод покупки и продажи?

А там, это где?

 

Индикаторы сами по себе не сигнализируют о покупке и продаже. Они преобразуют сырые данные котировок с целью выделить на графике нужные нам особенности движения цен. Зная смысл значений, вычисляемых индикатором, трейдер определяет условия совершения покупок и продаж. Со смысла я и предлагаю начать. Что вычисляет этот индикатор?

 

И ещё раз спрошу: в какой среде должен работать этот индикатор?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ага. Начинает проясняться. Есть некая биржа, на которой можно продавать реальные либо игрушечные валюты. Операции с валютами можно поручить ботам (роботам), которые программируются на Lua. Наверное, где-то есть и руководство по написанию таких Lua-скриптов.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, Zer0Galaxy сказал:

Ага. Начинает проясняться. Есть некая биржа

Это по информации от @Alex проясняется. А что хочет автор вопроса, остаётся лишь предполагать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Zer0Galaxy Так ок, у меня сейчас достаточно времени и я могу всё подробно описать... И так , ЧТО ДЕЛАЕТ ЭТОТ ИНДИКАТОР: он рисует точки на графике по которым можно отследить общую тенденсыю (надеюсь правильно написал) и он работает примерно как BB (Bollinger Bance)  но у него вместо линей точки, а вместо трёх линёй одно полос на которой он выставляет точки. Так вот он мжет менять направление точек т.е ставить их либо над графиком или под него, выыполняя определённые математические операции. Воооот так, ага, то есть теми такая: когда точки посались (или рисовались не важно) под графиком, а потом поменяли своё положение и начали рисоваться над графиком то мы открываемся, а если наоборот то... Наоборот! 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...