Consulting

Page 3 of 13 FirstFirst 1 2 3 4 5 ... LastLast
Results 41 to 60 of 244

Thread: Bet Angel and Excel

  1. #41
    VBAX Contributor
    Joined
    Sep 2017
    Posts
    128
    Location
    Great to see the code is ticking along at a good speed. I've just sat down from work and started looking at this. I see the first mistake in the line:
    Recording(i) = Range("H45:K45").Value
    It has shown 'error 9' when I click debug it says 'Subscript out of range'. I have tried troubleshooting and reading Microsoft Excel's help page but nothing relevant, I have tried about 10 other pages but non give a relevant example similar to this of which part is incorrect in that line. I have tried putting ActiveSheet.Range but this is pointless as it's a sheet1 module so it knows that range. H45:K45 is the range I am trying to collect, so I'm confused as to how any part can be out of range? I have tried .variable, .array, .range instead of .value hoping to stumble upon something. Please can I have a clue as to which part of the code on that line is at fault so I can research further? I've hit a dead end else. I understand the basic structure of VBA now, still getting to the debugging specific terms.

    By the way, the actual system will only need the current back price in it's calculations so just H45. Are the second and third best back price and the three best lay prices other than the Weight of Money indicator?

    I shall continue to look until I get a reply as I see there is also another challenge you have set for me in this code and the races are happening only until 21:00.

  2. #42
    VBAX Contributor
    Joined
    Sep 2017
    Posts
    128
    Location
    I have also looked at other lines prior, for instance adding (1 to RecordLength, 1 To 2) before 'Dim Recording' as you have done in a previous code. I'm looking for context clues in past codes but still no dice, it just comes up then with "Compile error: Wrong number of dimensions". Debug shows that it is something to do with the part 'Range("H45:K45").Value
    But then I clicked end and it's working past that section now and is stuck at 'Public Sub StartLogging??? I have no idea how I got around it but I'm thinking it may still not work. Still researching!

  3. #43
    VBAX Contributor
    Joined
    Sep 2017
    Posts
    128
    Location
    Wait...

  4. #44
    VBAX Contributor
    Joined
    Sep 2017
    Posts
    128
    Location
    Data_For_SamT2.xls
    Ok, it took me just over an hour or so to figure out but here’s the data (attached) for 7 minutes out from the 19:15 race. I think I debugged it fine in the end, here’s the code I used (in case I accidentally made a typo which would affect the data you’re trying to collate):

    Option Explicit Const RecordingLength = 1000 'Records. 'Adjust to suit
    Dim Running As Boolean
    Dim Recording
    Dim i As Long
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Running Then Exit Sub
    If Target.Row < 45 Then Exit Sub
    Recording(i, 1) = Target.Address
    Recording(i, 2) = Now
    i = i + 1
    If i Mod 100 = 0 Then MsgBox "Recorded" & i & " Worksheet Changes"
    If i > RecordingLength Then MsgBox "Recorded " & i - 1 & " Updates" Running = False SaveRecording
    End If
    End Sub
    
    Private Sub SaveRecording() MsgBox "Saving " & RecordingLength & " records, with " & i & " Updates" Worksheets.Add Before:=Sheets("Bet Angel") 'Insure correct spelling of "Bet Angel"
    ActiveSheet.Range("A1:B" & CStr(RecordingLength)) = Recording End Sub Public Sub StopLogging()
    If Running Then Running = False SaveRecording
    End If MsgBox "Stopping Recording"
    End Sub
    
    Public Sub StartLogging() ReDim Recording(1 To RecordingLength, 1 To 2) Recording(1, 1) = "Changed Address" 'Recording(One, One) =... Recording(1, 2) = "Time of Change" 'Recording(One, Two) =... i = 2 If UBound(Recording) = RecordingLength Then MsgBox "Recording Array is defined" Else MsgBox "Failed to set recording Array"
    End If Running = True
    End Sub
    Also, with regard to what I said earlier about the Weight of Money. I found a formula for a Money Flow Index which may be more useful in gauging the price:

    Typical Price = (High + Low + Close)/3
    Raw Money Flow = Typical Price x Volume
    Money Flow Ratio = (14-period Positive Money Flow)/(14-period Negative Money Flow)
    Money Flow Index = 100 - 100/(1 + Money Flow Ratio)

    This site shows the VBA for MFI (Money Flow Index), it shows two methods. A is a function and B is a sub procedure to be quicker and more flexible.
    http://finance4traders.blogspot.co.u...d-chaikin.html

    Once you have shown me the full code, I will see if I can add this in so once done could you briefly explain me how to add indicators/functions to tweak my system and try to make it even more efficient by myself please? Again I really appreciate the help you have supplied thus far. I have an idea on how I want to triggers to call back/lay/close trade/green up commands. I will try and translate this into ‘excel talk’ and then from there dabble with ‘VBA talk’ but this will most possibly be a question soon in the near future. For now, I have the data you requested and eagerly await your reply.

    Cheers,

    CPerry.
    Last edited by CPerry; 10-18-2017 at 11:45 AM. Reason: Code was squished

  5. #45
    Moderator VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,814
    Location
    It has shown 'error 9' when I click debug it says 'Subscript out of range'.
    Yeah, I was afraid of that. That's why there are Question Mark Comments next to those to lines.
    The report you just uploaded is the same as the first, just different values.

    I'll get back soon on that

    I still need a list of all the variables for all the formulas (even those that you might use in the future,) and what VBA Type values they are.Adding those variables now, sure makes it a lot easier to code the formulas later, and they take no time away from calculations.
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

  6. #46
    Moderator VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,814
    Location
    Also, with regard to what I said earlier about the Weight of Money. I found a formula for a Money Flow Index which may be more useful in gauging the price:
    I am designing this to be very easy to change the formula for WoM, or any other metric, without touching the rest of the code. I am assuming that you will tweak this as you get experience with it.
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

  7. #47
    Moderator VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,814
    Location
    I am using lots of Class Modules (User Defined Objects) in this code. The advantage of UDOs is that they only use CPU cycles wile they are actually calculating, else they just sit there waiting for something to input or request a Property value. They also enable parallel processing, which speeds up the App if your computer can use it. Another utility of UDOs is that you only have to code one, and it can be duplicated and used in many different places. If you need to change the code inside a UDO, it does not affect any code outside the UDO. The only way to "communicate with a UDO is thru its Properties. This is the main reason why I always code all foreseeable Properties, although, they can be added without affecting any previous code.

    This is the simplest UDO I have made so far. All it does is calculate a single EMA value from an array of values. This means, for example, that you would use it three times for MACD.
    Option Explicit
    'Class Module Name = "clsEMA_Calculator"
    
    Private pSmoother As Double
    Private pValuesSeries As Variant
    Private pValue As Variant
    
    
    Public Property Let CurveSmoothingFactor(SmoothingFactor As Double)
      pSmoother = SmoothingFactor
    End Property
    
    Public Property Let ValuesSeries(FIFO_ArrayOfValues_ThisSeries As Variant)
      pValuesSeries = FIFO_ArrayOfValues_ThisSeries
      CalculateEMA
    End Property
    
    Public Property Get Value() As Double
    'This Class's Default Property 'Thanks, 'http://www.cpearson.com/Excel/DefaultMember.aspx
    'Note: Absolutely no leading/trailing spaces in Pearson's line of code
    'Attribute Value.VB_UserMemId = 0
    
      Value = pValue
    End Property
    
    
    
    Private Function CalculateEMA() As Double
        Dim x As Double
        Dim i As Integer
         
        x = 1 - pSmoother 'Used for speed
        CalculateEMA = pValuesSeries(LBound(pValuesSeries))
         
        For i = LBound(pValuesSeries) + 1 To UBound(pValuesSeries)
            CalculateEMA = pSmoother * (pValuesSeries(i) - x) * CalculateEMA
        Next i
        
        pValue = CalculateEMA
    End Function
     
    Private Sub Class_Initialize()
    'I always start by placing Initiate and Terminate subs in all classes
    'whether or not I foresee a use for them.
    End Sub
    
    Private Sub Class_Terminate()
    End Sub
    This is an example of how one might use the UDO clsEMA_Calculator
    Dim ShortValue as New clsEMA_Calculator 'Creates a new Calculator in the ShortValue Object
    Dim LongValue as New clsEMA_Calculator
    Dim SignalValue as new clsEMA_Calculator
    
    'Initilize each smoothing factor. only needs to be done once, since the UDO stores the value
    'If you change the CurveSmoothingFactor for one or more UDOs, the next value it/they calculate/s
    '   will be based on the new CurveSmoothingFactor.
    SignalValue.CurveSmoothingFactor = .9
    LongValue.CurveSmoothingFactor = .9
    ShortValue.CurveSmoothingFactor = .9
    
    'For each set of Values, input an array of BA data for each Calculation
    ShortValue.ValuesSeries = ArrayA
    LongValue.ValuesSeries = ArrayB
    SignalValue.ValuesSeries = ArrayC'
    'Each time you input a new ValuesSeries, the next UDO.Value is instantly caculated based on the new series of data
    
    'Later, someplace else, but after the ValuesSeries Arrays have been entered.
    X = LongValue 
    'The above line is the same as
    'X = LongValue.Value 'Value is the Default Property.
    Y = SignalValue
    Z = ShortValue
    Any Questions?

    You need at least a basic understanding of how VBA Class Modules work. I will be showing/explaining particular details of the ones I build for you.
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

  8. #48
    VBAX Expert
    Joined
    May 2016
    Posts
    604
    Location
    Hi Sam,
    While it is a very good idea to program this using object classes, I don't think for a "real time" application that it is very sensible because the way you have coded this means that the comuter will be recalculating the entire ema series whenever a new value is added, this is going to gobble up processing time unnecessarily.
       For i = LBound(pValuesSeries) + 1 To UBound(pValuesSeries)         
    CalculateEMA = pSmoother * (pValuesSeries(i) - x) * CalculateEMA 
        Next i
    This loop is going to get longer and longer as the data keeps coming in.

    One of the reason Welles Wilder used exponential moving averages when he wrote his book about various financial indicators ( RSI being one of them) was the calculation to update an EMA each day is very very simple, he could do it by hand since in those days there weren't any computers to do it.

    The Op requirements seem to be that once every 200ms there are a whole series of indicators which need to be updated for each one of horses. There is probably only about 20ms to get this done before the next change event comes in. Thus recalculating the indicators must be done in the most efficient way. This means always saving the last time value of the indicator and recalculating the indicator using last time Indicator, new value and the time constant.

    Finally Welles Wilder used a different definition of the time constant for his exponential moving average from the standard:

    EMA formula = price today * K + EMA yesterday * (1-K)
    where K = 2 / (N+1)


    Wilder EMA formula = price today * K + EMA yesterday (1-K)
    where K =1/N


    Where N = the number of periods.

    I have written a function to do the stand ema calcualtions:

    Function EMA(Period, Lasttime, Drive)
    If Not (IsNumeric(Period)) Then
      EMA = "This functions calculates the Expontial Moving average, it has three parameters: Period (days), The last time Value of the EMA, the latest value of variable"
    Else
        TC = 2 / (Period + 1)
        EMA = Lasttime + TC * (Drive - Lasttime)
    End If
    End Function
    Last edited by offthelip; 10-19-2017 at 09:40 AM. Reason: EMa function added

  9. #49
    Moderator VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,814
    Location
    recalculating the entire ema series
    That is a requirement of the App's sponser

    Yes it would be marginally faster to
    X = ((X*13) + X)/14
    And I will probably use that in a slightly advanced form of the EMA Calculator, But I don't want to swamp CPerry right now.

    Yes, I am well aware that Speed is of the Essence. Both the Sponsor and I must accept that some BA values will be missed. I am working to minimize that effect.

    What Wilder uses is irrelevant to me. I only care what CPerry wants to use. That is one of the reasons for using UDOs as calculators, Each can easily be customized without affecting anything else.

    I have written a function to do the stand ema calcualtions:
    Function EMA(Period, Lasttime, Drive) 
        If Not (IsNumeric(Period)) Then 
            EMA = "This functions calculates the Expontial Moving average, it has three parameters: Period (days), The last time Value of the EMA, the latest value of variable" 
        Else 
            TC = 2 / (Period + 1) 
            EMA = Lasttime + TC * (Drive - Lasttime) 
        End If 
    End Function
    That fails to meet the Timing Standards of the App I'm developing:
    static values must only be entered at App.Initialization, Ie one time only.
    LastTime is already stored in the UDO as pValue
    Drive*, (*Not = "C:\",) is entered via the Property ValueSeries, but can be one value instead of an Array. I understand that you are using standard Financial terminology, but they don't make sense to anyone only familiar with VBA and or Bet Angel.

    Because Speed is of the Essence, I am NOT including any error checking. We must be careful to not encode any wrong inputs/outputs. One reason I am Naming Let Property Sub Parameters with such long winded explanatory names. I may put some in temporarily as we get more advanced. Maybe with Compiler Directives. :

    otl, you are much more experienced with Financial algorithms than I. If you want to to write a UDO for this Project just add your name and a link to the Post number as a comment. I don't promise that CPerry will use it, but I will place it in the Project.

    Note that the naming convention I am using is in consideration of a new coder who understands and is using Bet Angel. The only times I deviate from this is when something out of that Domain is used, such as the clsEMA_Calculator name. The "EMA" should send any coder to Google to research EMA. The same with the up and coming clsMACD_Calculator UDO. The Property and Variable names will be taken from Bet Angel, but, again, the "MACD' should send any coder to Google. PLease! Use the same convention as I have started.

    This will not be a highly polished App unless CPerry continues its development after we get it barely working properly with Bet Angel horse races.
    Last edited by SamT; 10-19-2017 at 12:40 PM.
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

  10. #50
    VBAX Expert
    Joined
    May 2016
    Posts
    604
    Location
    Hi Sam
    First can I say that I am very pleased that you have picked this up because I didn't want to be helping Cperry on my own.
    All I have been trying to do is to review how things are going and to make suggestions based on my experience in doing something very very similar for financial trading.
    My main concern right from the start has been about time, see post #2. The requirements as specified by Cperry are going to be difficult to meet. 20 ms update rate, how many horses?? 10?? 15?? how many indicators ??
    Thus I would design the whole system to maximise the throughput.
    For example, I would recalculate one of the indicators every 20 ms( or update) and then cycle through the indicators in turn, thus if there are 10 indicators they would all get updated every 200ms but not all at the same time. This would then minimise the maximum calculation time. If there are more than 10 indicators then they won't update every 200 ms but the system will still run ok. i.e share the available time between them
    Alternatively I would cycle each horse and calculate all the indicators for that horse every 20 ms, thus each horse gets upated every 20*N ms where N is the number of horses.

    Minimising the Maximum calculation time is one aspect of maximising throughput without loss of updates.


    I note that it is quite possible to use your object in support of this, since passing a single value as pvalueseries will do the calculation based on the three minimum variables. The way it is coded doesn't really suggest using it like this.


    In response to you last post:
    recalculating the entire ema series
    The fact that the sponsor has asked for this does not make it the best way of doing this. Specially as it is unnessary

    If you want to to write a UDO for this Project just add your name and a link to the Post number as a comment.
    Thanks for asking, but I don't want to take this on, I am happy to make suggestions and happy for them to be ignored.
    I am interested is seeing how this turns out.

    What Wilder uses is irrelevant to me. I only care what CPerry wants to use.
    I should have specifically addressed those comments about Wilder to Cperry because I totally agree he/she needs to decide what EMA calculation should be used.

  11. #51
    VBAX Contributor
    Joined
    Sep 2017
    Posts
    128
    Location
    I will use the standard (9,12,26) EMA calculations to begin with and then explore changed values later; for the most part I want to keep with the default settings of these indicators before I start looking for my ‘edge’ in the market. I will do further reading in the basics of class modules so have a solid understanding of how these work. Again, thank you for your input offthelip! With how quick my system will hopefully be running, the odd missed numeral will not affect my trading strategy too much – as well I will be using very small stakes to start until I have fully tested the system to confirm that this wont prove to be too much of a downfall.

    Until I get skilled with VBA, the system will only look at the front four horses and use 3 indicators, the next update maybe gradually increasing this to about 8 at an absolute maximum – it all ultimately comes down to running time for me. So the best system in my opinion would be one that is as accurate as can be, without sacrificing ‘number crunch time’ and it monitors all 4 horses (and each of their respective 3 indicators) simultaneously. The trades will only activate if all three of the triggers (one each from three different indicators) for one horse activates at least once within around 3 seconds of each other (a look back period of 15). I think I have worked out the value in which these indicators should trigger which will be coming up soon I presume. What additional further reading do you recommend I look at next? Also, are there any more tests on the live markets you need me to do at this moment in time, SamT?

    Cheers,

    CPerry.

  12. #52
    VBAX Expert
    Joined
    May 2016
    Posts
    604
    Location
    With 4 horses and 3 indicators, I would suggest that you calculate just one horse and one indicator on each iteration, this will give you a cycle of 12 which would repeat once every 240ms ( assuiming a 20ms update rate). I would guess that this should work ok.
    Missing the odd numeral is not really the issue when it comes to running out of time. If the "onchange" event triggers before the last one has finished the code, the software will start running the same code again, this can cause all sorts of problems; mainly getting into an infinite loop where it can never "catchup". so the whole app justs hangs up!! It is possible to add code to prevent this by using a "code" started" and a "code Finished" flag. If the onchange event triggers when "code finished" is not set then exit the onchange event immediately. ( i.e. forget that update)


    One think you might want to consider before you go "live" with real money, is doing some testing of the system using a demo account ( if Betangel provide that facility). If they don't provide that facility what you could consider is setting up your own "demo" system. You already have a very good system for capturing real live data from Betangel. What you could do is write a bit of software which will feed this data into the same cells a Betangel does in a loop. Where this has real advantage is that you can repeat exactly the same test many many times. This is particuarly useful for sorting out the overall integration of the indicators and the triggers. If you go "live" is is very difficult to work out afterwards what should have happened because every race is different.

  13. #53
    VBAX Contributor
    Joined
    Sep 2017
    Posts
    128
    Location
    There is a practise mode present so I've just been spending a bit of time developing a way of presenting P/L in a way that's easy to identify pros and cons of this system i.e. which indicators are proving most useful, occurrences that get missed etc. Quite a lengthly process like all of this aha but hopefully soon all of this hard work will pay off. I'm doing my reading each day, watching trading videos, learning the terminology and trying to perfect every aspect I can think of. Looking forward to your next reply!

    CPerry.

  14. #54
    Moderator VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,814
    Location
    otl, I value your input and do carefully consider it.

    I am thinking to capture the BA output into a Data Array UDO, This will be done as fast as the Worksheet Change Event can handle it. This is a simple DataArrayUDO.Add RangeArray operation, which should be pretty fast.

    My thoughts are to have an "Accumulator" UDO that separates all the Brands from the Data Array into Brand Series. The DataArrayUDO will Push the data to the Accumulator UDO

    As each Brand UDO is ready, it can access the AccumulatorUDO Dictionary by Brand Name to Pull only that Brands series.

    My thoughts are to "touch" the BA sheet as little as possible. That might mean combining the DataArrayUDO and the AccumulatorUDO into one Object. We'll see.


    Until I get skilled with VBA, the system will only look at the front four horses and use 3 indicators,
    Just another Cell on the "Settings" Worksheet.

    External Links on Multithreading:
    https://stackoverflow.com/questions/...xcel-using-vba
    https://msdn.microsoft.com/en-us/lib.../bb687899.aspx
    https://msdn.microsoft.com/en-us/lib.../bb687868.aspx

    To enable Multithreading, we will have to convert the internals of some UDOs to call VBScripts. This can, and should, be done after we get the BA Helper App working, however slow. And You will have to upgrade to Excel 2007.

    Or we can move the BA Helper app to a different Workbook. The only interface between the two Workbooks would be access to the data and a "Writer" object to write the outputs from the App the the BA Sheet. This is actually a minor code change. Which is faster must be determined after both versions are working... After some slight consideration, I plan to convert the BA Helper App to a separate Workbook ATT. It will still work in Excel <= 2003, but will make a significant speed difference in Excel >= 2007

    The goal is to minimize the interruptions to the BA Data Stream and allow the App access to the very latest BA Data, being aware that each Brand UDO will not ever see all the BA Data.

    CPerry, can you arrange the BA Data Columns to suit the BA Helper App? I would like to see all the Data you want to process being in the closest columns to the Brand (Horse) Name Column ("B".) It's not strictly necessary, but the less work the code does, the faster it runs.

    So... What do you think about that UDO I posted, the EMA Calculator? Do you see how the Property Subs Work?

    BTW, C. You now have your own Folder on my HD

    I have started designing and laying out a BA Helper App Help file (html) using a free version of PageBreeze. I will leave it to you to add most of the text to the file, and I will check it for errors and omissions after you do (or Don't) finish it.

    My immediate task is to go back over this entire thread and exrtact the restrictions and requirements of this Project. Bleh

    Do not worry if I miss a day or two here, I have other things going on... First, re-plumb my house, I have no inside running water at the moment See the Doctor about muh bum knee. Next, fix muh truck. Next ..., Next..., Next..., Etc, etc, etc.

    Sam
    Last edited by SamT; 10-20-2017 at 09:00 AM.
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

  15. #55
    Moderator VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,814
    Location
    Here is the crude first draft of the Tread's most salient points, from the viewpoints of a Project Designer and a Coder. It is just snips of Posts, Some with "Sam's Note:"s after the Snippet. Please note any significant changes you see, and answer any "Sam's Note" Questions.
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

  16. #56
    VBAX Expert
    Joined
    May 2016
    Posts
    604
    Location
    Cperry:
    Looking at Sam's excellent summary of this thread, I have spotted that the indicator "Money Flow Index" is exactly the same calculation as the RSI calculation the only difference is the input variable is Typical price*Volume instead of just price. So you only need two indicator calculations EMA and RSI the others (MACD, MFI) are just combinations of these.

  17. #57
    VBAX Expert
    Joined
    May 2016
    Posts
    604
    Location
    Hi Sam,
    Your "data array object" looks like it could be a very useful object for storing some of the intermediate values that don't need to be written out to the worksheet.
    In particular the "ups" and "downs" needed to calculate the RSI. Also the first two EMa that are used to calculate the MACD, probably don't need to be displayed (obviously CPerry needs to make that descision)

    Since the "look back" time required is only 15 samples, the object will only need give access to maximum of 15 samples.
    So I see the data structure being
    top level the DATAArray object, capturing the BA data
    Next level the Accumulator object splitting this into Brand price data series
    Next level Indicator objects that calculate and store the indicator data series

  18. #58
    Moderator VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,814
    Location
    So I see the data structure being
    top level the DATAArray object, capturing the BA data
    Next level the Accumulator object splitting this into Brand price data series
    Next level Indicator objects that calculate and store the indicator data series
    Yep. Me 2

    I'm thinking of putting a DataArray Object in the BA workBook With...
    pValue as Variant
    Property Get Value() As Variant 'Called from Helper Workbook
    Value = pValue
    End Property
    Property Let Value(By Val LatestDataFromBA As Variant) ' Set by BA Workbook
    pvalue = LatestDataFromBA
    End Property
    Note: the size of the LatestDataFromBA array will be set by the User's Custom Settings.

    ... To further isolate the BA book from the Helper book. This really needs a multli-core processor and Windows 7 and Excel 7, But not Excel 10. MS Rewrote Excel 10 to make it a PITA to open multiple instances of Excel, which is best for utilizing Multiple CPU cores. However, the Project will run on a single core machine, but much slower.

    @ CPerry, Buy a top of the line Gaming Computer, but you can substitute a Business grade Video card. Gaming Machines are all about computing speed.

    Attached is a very crude drawing of the Physical Object Model of this Project. Zipped to overcome VBAX limits.
    Attachment 20713
    Thumbnail, smaller than Attached Zip File.

    @ otl, IYO would it be faster to use the current system with two workbooks?
    OR, Would it be faster to Move all the BA Helper Workbook code to an XLA and have the XLA read the Custom Settings from the DashBoard and Settings Workbook and Write the outputs to both Workbooks. I know that it will be easier for me to use the current schema, but if the speed difference is significant... I'll try to suffer thru.
    Last edited by SamT; 10-21-2017 at 08:34 AM.
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

  19. #59
    Moderator VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,814
    Location
    For Timing, I'm putting a "Ready" Property (RO) in Each UDO. As each UDO is finished calculating it sets it's Ready to True and "Raises an Event"/"calls" a Main Method, "getReady"
    Dim pReady As Boolean
    Sub GetReady()
    pReady = UDO1.Ready And Udo2.Ready And UDOx.Ready
    If pReady then 
    Write All outputs
    Start Over
    End If
    End Sub
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

  20. #60
    Moderator VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,814
    Location
    @ CPerry,

    For ease of Testing, regardless of how we eventually organize the Project, we will keep it all in one Workbook for now. I am designing the Project so as to easily separate it into as many parcels as needed for speed and stability.
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •