-
Hi, once again me, HaHa.
I like you to inspire your thinking what is possible with HaasScript.
I like modularizing code as much as much as I can, as a Software Developer and so I do it with HaasScripts.
I developed a Spot Market Trading Bot Template that can ease your development very much.
You call it in your code like this: (easy peasy)
local bot = CC_SpotBot('Alfonso #002')
--- here you can add optional parts parts
bot:run()
Here, you can see an example:
-- Author: romdisc
-- test botlocal bot = CC_SpotBot('My Spot Bot #001')
bot.inputs = function(bot_name)
local dict = {}InputGroupHeader(bot_name .. ' - Settings')
dict.period = Input('Period', 14)
dict.buyLevel = Input('Buy level', 30)
dict.sellLevel = Input('Sell level', 70)return dict
end
bot.indicators = function(inputs)
local dict = {}dict.rsi = RSI(ClosePrices(), inputs.period)
return dict
endbot.signal = function(signal, indicators, inputs)
signal = IfNull(signal, SignalNone)
if indicators.rsi < inputs.buyLevel then signal = SignalBuy
elseif indicators.rsi > inputs.sellLevel then signal = SignalSell
else signal = SignalNone endreturn signal
endbot.plot = function(indicators, inputs)
Plot(1, 'RSI', indicators.rsi, SkyBlue)
PlotHorizontalLine(1, 'Buy', Cyan, inputs.sellLevel, Dotted)
PlotHorizontalLine(1, 'Buy', Cyan, inputs.buyLevel, Dotted)
endbot:run()
This bot template is very flexible. You can inherit your own version out of the super class SpotBot maybe for Future Trading or some other customazations.
DefineCommand('MyCustomBot', 'My Custom Bot inheritins SpotBot')local bot_name = DefineParameter(StringType, 'Bot', 'Bot Name', true, 'Bot')
local Bot = CC_SpotBot(bot_name)
-- override default behavour of your parent strategy and/or any other function
Bot.strategy = function(signal, indicators, inputs)
-- your different strategy algorithm (possibly your future strategy)
endDefineOutput(ListDynamicType, Bot(bot_name), 'Bot Template')
Happy Coding !!! – Cheers!!!