Support Board
Date/Time: Wed, 27 Nov 2024 18:06:55 +0000
Post From: Custom Study Trade DOM
[2024-07-22 12:10:51] |
User357489 - Posts: 72 |
EDIT: done it :) for anyone that wants to see what i was doing, here you are! :) enjoy do with it what you will #include "sierrachart.h"
SCDLLName("Custom DOM Study") /*==========================================================================*/ // Drawing function declaration void DrawToChart(HWND WindowHandle, HDC DeviceContext, SCStudyInterfaceRef sc); /*==========================================================================*/ SCSFExport scsf_CustomDOMStudy(SCStudyInterfaceRef sc) { if (sc.SetDefaults) { // Set the configuration and defaults sc.GraphName = "Custom DOM Highlighting Study"; sc.GraphRegion = 0; sc.AutoLoop = 0; // Auto-loop disabled // Input for volume threshold sc.Input[0].Name = "Volume Threshold"; sc.Input[0].SetInt(100); // Default threshold value // Input for number of levels to consider sc.Input[1].Name = "Number of Levels"; sc.Input[1].SetInt(5); // Default number of levels return; } // Ensure the drawing function is called sc.p_GDIFunction = DrawToChart; } /*==========================================================================*/ // This is the actual drawing function. This function is specified by the // "sc.p_GDIFunction" member in the main study function above. This drawing // function is called when Sierra Chart draws the study on the chart. void DrawToChart(HWND WindowHandle, HDC DeviceContext, SCStudyInterfaceRef sc) { int threshold = sc.Input[0].GetInt(); int numLevels = sc.Input[1].GetInt(); s_MarketDepthEntry depthEntry; for (int level = 0; level < numLevels; ++level) { // Ask side pulling/stacking if (sc.GetAskMarketDepthEntryAtLevel(depthEntry, level)) { double pullingStackingAsk = sc.GetAskMarketDepthStackPullValueAtPrice(depthEntry.Price); if (pullingStackingAsk >= threshold) { // Set the drawing color to red for ask n_ACSIL::s_GraphicsColor color; color.SetRGB(255, 0, 0); RECT rect; int yPixelCoordinate = sc.RegionValueToYPixelCoordinate(depthEntry.Price, 0); SetRect(&rect, sc.StudyRegionLeftCoordinate, yPixelCoordinate - 5, sc.StudyRegionRightCoordinate, yPixelCoordinate + 5); HBRUSH brush = CreateSolidBrush(RGB(255, 200, 200)); // Light red for ask FillRect(DeviceContext, &rect, brush); DeleteObject(brush); } } // Bid side pulling/stacking if (sc.GetBidMarketDepthEntryAtLevel(depthEntry, level)) { double pullingStackingBid = sc.GetBidMarketDepthStackPullValueAtPrice(depthEntry.Price); if (pullingStackingBid >= threshold) { // Set the drawing color to green for bid n_ACSIL::s_GraphicsColor color; color.SetRGB(0, 255, 0); RECT rect; int yPixelCoordinate = sc.RegionValueToYPixelCoordinate(depthEntry.Price, 0); SetRect(&rect, sc.StudyRegionLeftCoordinate, yPixelCoordinate - 5, sc.StudyRegionRightCoordinate, yPixelCoordinate + 5); HBRUSH brush = CreateSolidBrush(RGB(200, 255, 200)); // Light green for bid FillRect(DeviceContext, &rect, brush); DeleteObject(brush); } } } } |