LogoLogo
Back to HaasOnline.comSwitch to Developer API
4.x
4.x
  • Welcome
  • TradeServer Cloud
    • Overview
    • Security
    • Troubleshooting
  • TradeServer Enterprise
    • Overview
    • Updates
    • Security
    • Installation
      • Windows
      • MacOS
      • Linux
    • Configuration
      • License Key
      • Login credentials
      • Hosting
        • Linux VPS Hosting
    • Special features
      • Price history
      • Backups
      • Machine Learning
        • Built-in Machine Learning
        • Custom Machine Learning
      • Scripted Exchange API (Coming Soon)
      • Local API (Coming Soon)
    • Troubleshooting
  • Interface
    • General Interface
      • Left Menu
      • Upper Right Items
        • Account data
        • Execute trade
        • AI Chatbots
          • Chatbot Julia
          • Chatbot David
          • Chatbot Thomas
        • Notifications
        • Menu
          • Exchange accounts
          • Settings
          • License information
          • Change Logs
          • Logout
      • Status bar
        • Price tickers
    • Dashboard
    • Bots
      • Bot management
      • Bot templates
    • HaasScript
      • Web Editor
      • Backtest Lab
        • Lab test setup
      • Backtest History
      • Manage Scripts
      • Manage Signals
    • Tools
      • Marketview
      • Market intelligence
      • Exchange profiler
      • Markets explorer
      • News
    • Finance
      • Portfolio
      • External Wallet
  • Haasscript
    • About
      • Change Log
    • Tutorials
      • Bot building
        • Trade-bot building
        • Visual bot building
        • Scripted bot building
      • Usage
        • HaasScript
          • Interval
          • Markets
          • Input Fields
          • Memory Management
          • Signal Handling
          • Position Information
          • Positions Handling
            • Fee correction
          • Order Handling
          • Trading
          • Charting
          • Optimizations
        • Visual Editor
          • Blocks
          • Parameters
          • Flow Control
          • Interaction
        • Script Editor
          • Classes
        • Managed Trading
        • Unmanaged Trading
    • Commands
      • Trade Bots
        • TradeBot Containers
        • Easy Indicators
        • Easy Safeties
        • Easy Insurances
      • Helpers
        • Array Helpers
        • Custom Command Helpers
        • Enumerations
        • Equations
        • Mathematical
        • Memory Helpers
        • Signal Helpers
        • String Helpers
        • Miscellaneous
        • Technical Analysis Helpers
      • Input data
        • Bot Settings
        • Input fields
        • Price Market Information
        • Script Settings
        • Time Information
        • Trade Market Information
      • Prices
      • Technical Analysis
      • Charting
      • Trading
        • Managed Trade Commands
        • Unmanaged Trade Commands
        • Order Information
        • Order Handeling
        • Position Information
        • Position Price Information
        • Profit Information
        • Wallet Information
      • Social Media
    • Built-in Bots
      • Version 3 bots
        • C# Scripted Bot
        • Email bot
        • Trendline Bot
        • Triangle Arbitrage Bot
      • Accumulation Bot
      • Enhanced RSI bot
      • FlashCrash (Grid) Bot
      • Crypto Index Bot
      • Intellibot Alice
      • Inter Exchange Arbitrage Bot
      • MadHatter Bot
      • Market Making Bot
      • Order Bot
      • PingPong Bot
      • Scalper bot
      • Zone-Recovery Bot
    • Community Bots
      • Simple Grid Bot (SPOT)
      • Simple Grid Bot (FUTURES)
      • Simple Market Maker (SPOT)
      • Simple Market Maker (FUTURES)
  • Usage
    • First Usage
    • Setup Exchange
      • Adding an API to the Platform
      • Binance
      • Binance US
      • Bit2me
      • Bitfinex
      • Bitget
      • BitMEX
      • ❌Bitpanda
      • Bitstamp
      • ❌Bittrex
      • Bybit
      • ❌Cex.IO (Legacy API)
      • ❌Coinbase
      • ❌Crypto.com
      • Deribit
      • Gemini
      • Gleec
      • ❌HitBTC
      • Huobi
      • ❌Ionomy
      • Kraken
      • Kraken Futures
      • KuCoin
      • KuCoin Futures
      • LBank
      • ❌OKCoin
      • OKX
      • OKX-Futures
      • OKX-Swap
      • Phemex
      • Poloniex
      • Poloniex Futures
      • WooX
    • Setup Telegram Notification Bot
    • Setup Discord Notification Bot
    • Use Signals
  • Other Resources
    • YouTube
    • Guides & Tutorials
    • Questions & Answers
    • Community Projects
  • Need Help?
    • Ask on Discord
    • Submit Support Ticket
Powered by GitBook
On this page
  • Optimizations
  • Loops (SE)
  • OptimizedForInterval (SE)
  • DefineIntervalOptimization (CC)
  • Finalize

Was this helpful?

  1. Haasscript
  2. Tutorials
  3. Usage
  4. HaasScript

Optimizations

Optimizations

When a script is backtested, we are testing every single minute in the whole backtest period. Although this hurts the backtest speed, it is necessary for the most accurate results. On this page, we will go over a few things that will help you improve the backtest speed.

Sections marked with SE (Script Editor), VE (Visual Editor), or CC (Custom Command), are specific for that type. ​

Loops (SE)

Looping/Iterating over data takes time. In all cases try to avoid this as much as possible or keep the loop counts to the absolute minimum. With over 500 commands in HaasScript, there is almost always a way to use the commands instead. ​

OptimizedForInterval (SE)

In the script editor we can use OptimizedForInterval() . This command takes an interval and a callback. The command reduces the number of times the callback is executed. Execution of the callback is allowed when the candle on the specified interval closes. If for example, the script uses a MACD on 1h interval it will calculate the MACD once every 60 minutes and reduces the time it takes for the whole script to execute and in the end a faster backtest.

MA = OptimizedForInterval(CurrentInterval(), function() 
    return MA(ClosePrices(), 12)
end)

DefineIntervalOptimization (CC)

If a custom command works on interval based data, like the MadHatter RSI, we can use DefineIntervalOptimization() in our command scripts. This command will have the same effect as OptimizedForInterval() and increases the backtest speed.

local interval = DefineParameter(NumberType, 'interval', 'The interval of the command', true, 1)
DefineIntervalOptimization(interval)

If the command takes a source as parameter we can get the interval with the CurrentInterval() command.

local source = DefineParameter(ListNumberType, 'source', 'Source data for the command', true, ClosePrices())
local interval = CurrentInterval(source)
DefineIntervalOptimization(interval)

Finalize

The Finalize() command works like the OptimizedForInterval. It takes a callback but is only executed when we are doing the last step in a backtest or running the script in a real bot. This command should only be used with specific commands (CustomReport) or under specific conditions (Log() with a cumulative value).

PreviousChartingNextVisual Editor

Last updated 1 year ago

Was this helpful?