TWM Wiki
TWM comes preset with default indicators. Each indicator source code is open for review within the Custom project. Below you can find overall description of Indicator API.
Each indicator should be assigned a unique GUID. Each indicator class name must match indicator file name exactly. To create a GUID in Visual Studio proceed to Tools -> Create Guid -> New Guid and paste the string into new Guid("GUID string") method. GUID and name should be assigned inside the SetDefaults part of OnStaeChanged override.
In the below example we can see that the Input[0] is used. This indicates that anyhting that the user assigns as the input will be passed into this series. This is true for UI as well as for bringing input from other indicators and/or strategies. By default the Close prices are passed, however this can be adjusted if the indicator is designed to do so.
Below we can see the EMA indicator gets initialized with a High and Low series passed as input. If we do not pass anything as the first parameter, the Close series will be passed by default under the hood.
The indicator will be plotted on chart by default if it is initialized without ScriptOptions parameter passed. User has an option to hide the indicator from chart or hide the indicator panel from chart by assigning appropriate ShowPlots and ShowPanes booleans in the ScriptOptions object.
The indicator has to be created in a certain order.
The plot can have some parameters that are possible to be assigned.
If you plan to interact with plot colors inside the script, for instance by conditionally updating their color you need to make some extra settings and pass the PlotColors context.
You can also make your calculations within the script and pass the calculated values into another indicator. This is quite common for averaging purposes. For instance calculating something inside the OnBarUpdate and passing the calculated series into an SMA.
Below is an illustrated example with SMA indicator initialized on the main price pane and two extra indicators engaged on an extra pane. The additional indicators are MIN and MAX indicators using the calculated SMA value from within a single instance of the same indicator.
Although the exact same output can be achieved using the next example, it is highly unrecommended to use do this because this boosts up CPU usage significantly especially of complex calculations.
The most common mistake users will make is get index out of range exception. When OnBarUpdate method executes on the first bar you cannot address a previous bar yet because it does not exist. If your logic requires that, in that case you need to skip this bar. See example below. Please note that in TWM first bar on the left hand side of the chart is CurrentBar = 1.
Another common mistake would be placing cs files into the project by manually copying them into the file structure. If you do so make sure the information about the file exists inside the csproj file. Usually you would use Add Existing File command inside VS to add it properly so it imports correctly into the project structure. TWM uses the project file XML information and therefore if the newly added file meta data does not exist inside the csproj file there is no way for it to be seen within TWM.
We use necessary cookies to make our site work. We also use optional cookies for functionality, analytics, advertising, campaign measurement, and service integrations.
You can choose to accept only necessary cookies or customize your preferences.
Clicking the “X” at the top right will apply the same choice as “Only necessary”.
Necessary cookies help make the website usable by enabling basic functions such as consent storage, security protection, language preferences, authentication, and preserving the active navigation context.
Necessary cookies
Technical identifier used to manage and persist cookie consent preferences.
Maximum storage duration: 12 Months | Type: Necessary cookiesStores your cookie consent choices and selected preferences.
Maximum storage duration: 12 Months | Type: Necessary cookiesPreserves the active navigation context, for example keeping the user in the standard website flow or the Start Trading flow when shared navigation elements are used.
Maximum storage duration: Up to 30 Days | Type: Necessary cookiesIndicates whether the user has provided cookie consent.
Maximum storage duration: 1 Year | Type: Necessary cookiesUsed to prevent CSRF attacks and protect form submissions and user data.
Maximum storage duration: Session | Type: Necessary cookiesUsed to manage authentication information and signed-in sessions.
Maximum storage duration: 1 Year | Type: Necessary cookiesStores the user’s language and localization preferences.
Maximum storage duration: 1 Year | Type: Necessary cookies
Functional cookies allow the website to remember preferences and support enhanced features or integrations such as Google services, maps, embedded media, or account-related personalization.
Functional Cookies
Used by Google to store session information and support service-related functionality.
Used by Google to remember settings and improve navigation across integrated services.
Maximum storage duration: 6 Months | Type: Functional CookiesRemembers which Google accounts have been used on the device.
Maximum storage duration: 1 Year | Type: Functional CookiesUsed by Google to store preferences and information when using integrated Google services such as Maps.
Maximum storage duration: 2 Years | Type: Functional CookiesUsed by Google to store preferences while viewing pages that incorporate Google services.
Maximum storage duration: 2 Years | Type: Functional CookiesUsed by Google to remember preferences such as preferred language and interface settings.
Maximum storage duration: 6 Months | Type: Functional CookiesUsed by Google services to support embedded content, maps, and account-related personalization.
Maximum storage duration: 2 Years | Type: Functional CookiesUsed by Google to support service preferences and related functionality on pages integrating Google services.
Maximum storage duration: 2 Years | Type: Functional Cookies
Statistical cookies help us understand how visitors interact with the site, measure performance, and improve services. Depending on configuration, data may be processed in aggregated or pseudonymized form.
Statistical Cookies
Microsoft Clarity identifier used to distinguish visitors and support analytics reporting.
Microsoft cookie used for analytics-related measurement and service improvement.
Maximum storage duration: 7 Days | Type: Statistical CookiesUsed by Microsoft Clarity to maintain the current analytics session.
Maximum storage duration: Session | Type: Statistical Cookies
Marketing cookies are used for advertising, campaign attribution, conversion tracking, personalization, and cross-platform measurement by providers such as Google, Microsoft, Meta, and TikTok.
Marketing Cookies
Used by Google to link activity across devices and improve ad attribution.
Used by Microsoft Advertising to validate and support ad-related requests.
Maximum storage duration: 10 Minutes | Type: Marketing CookiesMicrosoft advertising identifier used to recognize browsers across Microsoft domains.
Maximum storage duration: 13 Months | Type: Marketing CookiesGoogle advertising and personalization cookies used to build preference profiles and support ad delivery.
Maximum storage duration: 2 Years | Type: Marketing CookiesUsed by Google to identify visitors for advertising and attribution purposes.
Maximum storage duration: 2 Years | Type: Marketing CookiesUsed by Google to support ad personalization and service optimization.
Maximum storage duration: 1 Month | Type: Marketing CookiesGoogle cookies used to support more relevant ads and account-related ad security.
Maximum storage duration: 2 Years | Type: Marketing CookiesDoubleClick / Google Ads cookies used for campaign attribution, ad delivery, and remarketing.
Maximum storage duration: Varies by cookie | Type: Marketing CookiesMeta / Facebook cookies used for browser recognition, security, ad measurement, and personalization across Meta services and partner sites.
Maximum storage duration: Varies by cookie | Type: Marketing CookiesTikTok identifier used for session-level event attribution, conversion tracking, and advertising measurement.
Maximum storage duration: Varies by configuration | Type: Marketing CookiesTikTok pixel-specific session cookie used for conversion attribution and advertising performance reporting.
Maximum storage duration: Varies by configuration | Type: Marketing CookiesTikTok cookie used for campaign attribution, browser recognition, and advertising performance measurement.
Maximum storage duration: Varies by cookie | Type: Marketing CookiesTikTok cookie used for event attribution and campaign linkage across sessions.
Maximum storage duration: Varies by cookie | Type: Marketing CookiesTikTok browser identifier used for attribution, advertising measurement, and remarketing support.
Maximum storage duration: Varies by cookie | Type: Marketing CookiesGoogle cookies that may support ad personalization, localization, and service preference handling depending on the integration and browser state.
Maximum storage duration: Varies by cookie | Type: Marketing CookiesGoogle cookie used to support secure cookie handling across requests and service interactions.
Maximum storage duration: 6 Months | Type: Marketing CookiesThis website uses cookies and similar technologies to ensure its proper functioning and, with your consent, to support functionality, measure usage, improve performance, and provide advertising, attribution, or personalized content. The legal basis for the use of necessary cookies is the legitimate interest of the data controller (Art. 6(1)(f) GDPR), while functional, statistical, and marketing cookies are used only upon your explicit consent (Art. 6(1)(a) GDPR).
Cookies are small text files stored on your device to make the website work efficiently and improve your experience. Some cookies are placed directly by us, while others may be set by third-party services integrated into our pages.
Your cookie preferences are stored locally in a cookie named consent, valid for 12 months, and pseudonymously
on our systems using a technical identifier (UserUUID), which does not allow direct identification of the user.
A technical cookie named site_mode may also be used to preserve the current navigation context across pages.
You may change or withdraw your consent at any time via the cookie settings button visible at the bottom left of the site.
Some cookies are provided by third-party services such as Google, Microsoft, Meta, and TikTok. These third parties may act as independent controllers for the data collected through their own technologies and services.
You can withdraw or modify your consent at any time, delete cookies through your browser settings, and exercise your rights under Articles 15–22 GDPR (access, rectification, deletion, limitation, opposition, portability) by contacting us via the details provided in the Privacy Policy.
This Cookie Policy is aligned with Regulation (EU) 2016/679 (GDPR) and the ePrivacy Directive.