[pshaiBot] MassEve

stable
By pshai in Trading Bots Published December 2020 👁 1,613 views 💬 0 comments

Description

Happy holidays everyone! This masseve trend trader is my present for you all wonderful people! Ideal setups will be found in the higher timeframes (or labs, lol), as this bot is designed to ride trends. Required custom commands: - CC_SuperTrendExt ~May the profits be with you~ ~pshai
HaasScript
local src_types = {
    'Close',
    'Open',
    'HL',
    'HLC',
    'OHLC'
}

InputGroupHeader('Timeframe Settings')
local tf_update = InputInterval('1. Update Timeframe', 1440, 'Update timeframe, how frequently does the bot logic update.')
local tf_price = InputInterval('2. Prices Timeframe', 1440, 'Prices timeframe to use.')

InputGroupHeader('SuperTrend Settings')
local st_atr_len = Input('1. ATR Length', 15, 'SuperTrend ATR period lenth.')
local st_atr_mul = Input('2. ATR Mult', 2, 'SuperTrend ATR multiplier.')
local st_src_type = InputOptions('3. Price Source Type', src_types[1], src_types, 'Price source used for SuperTrend.')
local st_use_smooth = Input('4. Use Smoothing', false, 'Whether or not use MA smoothing on SuperTrend price source.')
local st_smooth_type = InputMaTypes('5. Smooth Type', SmaType, 'MA type for smoothing, if enabled.')
local st_smooth_len = Input('6. Smooth Length', 10, 'MA length for smoothing, if enabled.')

InputGroupHeader('Stochastic Settings')
local stoch_fk_len = Input('1. Fast %K Length', 5)
local stoch_sk_len = Input('2. Slow %K Length', 6)
local stoch_sd_len = Input('3. Slow %D Length', 2)
local stoch_upper_limit = Input('4. CrossUnder Limit', 60, 'CrossUnder limit. This determines how high the stochastic cross-under must occur before short entry is allowed.')
local stoch_lower_limit = Input('5. CrossOver Limit', 40, 'CrossOver limit. This determines how low the stochastic cross-over must occur before long entry is allowed.') 


-- all trading logic etc happens
-- inside this command's callback.
OptimizedForInterval(
    tf_update, -- update interval

    -- the callback function
    function()
        local o = OpenPrices(tf_price)
        local h = HighPrices(tf_price)
        local l = LowPrices(tf_price)
        local c = ClosePrices(tf_price)

        -- get source prices
        local st_src

        if st_src_type == src_types[1] then
            st_src = c
        elseif st_src_type == src_types[2] then
            st_src = o
        elseif st_src_type == src_types[3] then
            st_src = (h+l)/2
        elseif st_src_type == src_types[4] then
            st_src = (h+l+c)/3
        elseif st_src_type == src_types[5] then
            st_src = (o+h+l+c)/4
        end

        -- apply smoothing if used
        if st_use_smooth then
            st_src = MA(st_src, st_smooth_len, st_smooth_type)
        end

        -- super trend
        local st = CC_SuperTrendExt(h, l, st_src, st_atr_len, st_atr_mul)
        Plot(0, 'st', st) 

        -- stochastic
        local stoch = STOCH(h, l, c, stoch_fk_len, stoch_sk_len, stoch_sd_len)
        Plot(1, 'k', stoch.slowK, Yellow)
        Plot(1, 'd', stoch.slowD, Red)

        -- entry logic
        if st_src > st and stoch.slowK[2] <= stoch_lower_limit and CrossOver(stoch.slowK, stoch.slowD) then
            DoBuy()
        elseif st_src < st and stoch.slowK[2] >= stoch_upper_limit and CrossUnder(stoch.slowK, stoch.slowD) then
            DoSell()
        end

        -- exit logic
        local pos_dir = GetPositionDirection()
        if pos_dir == PositionLong and st_src < st then
            DoExitPosition()
        elseif pos_dir == PositionShort and st_src > st then
            DoExitPosition()
        end
    end
)

0 Comments

Sign in to leave a comment.

No comments yet. Be the first!