Jump to content
Medved Trader Forums

Mike Medved

Administrators
  • Posts

    1,543
  • Joined

  • Last visited

  • Days Won

    124

Everything posted by Mike Medved

  1. Ok - you can reference the values in FIFOQueues by using indexing - but the indexing is backwards. That is, [0] is the last value you added. [1] is the one before last. [2] is 2 before last etc. Assignment of those values - I didn't do before. I put that in, will send you email where to pick up latest exe so you can do queue[3]=2;
  2. Yes for what you want (I think) it is best just to use StateFIFOQueue(20) for each of the arrays. You still have to manually save and restore state for each like you're already doing for the one StateFIFOQueue that you have. And you can only store Doubles of course...
  3. Look in the save and restore functions. Instead of copying just the structs, I specifically made it copy the arrays...
  4. Ok, I just realized something... I should mention it in help file. A struct that has arrays in it is a mutable struct. Which means that if you just do struct1=struct2, the arrays are not copied. They are there by reference, so both structs would be pointing to the same array. Let me figure out how to change your code the most elegantly so that this doesn't happen (and that the efficiency does not suffer).
  5. I haven't looked yet but here is a detail that may explain what you're seeing: MT's paintbars are a "state machine". There is a "state", and the new candle changes the "state". The thing is, this state-changing for the new candle may not be called only once per candle. It is for "past" candles, but for the new, latest candle, the "state" is restored to the condition right BEFORE the new candle - then the state-changing code is called for the new, latest candle. Hope this makes sense?
  6. Please send me the whole paintbar - export it and attach it to an email to support email....
  7. Scanner at the top allows you to add indicators as variables. Add Volume indicator with MA as secondary parameter.
  8. I am not sure what you mean. Wouldn't the "Average" line in the Volume indicator do (if you use "Never" in Extended settings)?
  9. If you backfill (so that the gap is filled) sure it will work. And yes, that code works for every day. It only draws the line for the last day though. You can change it so it draws the line for every day.
  10. What value do you want to average? The "Change from Open" basically? Over how many candles? .fctbNone{ color:#000000; } .fctbStyle8{ color:#000000; }Average(20, Close-SymbolData.Open) - would do it for the last 20 candles BUT it would only show correctly for the last day (since SymbolData.Open is for current session only) If you want it correct for every day going back, the code needs to figure out what the Open for each day is, so would be a bit more elaborate.
  11. There is a shortcut for that. Just do a search in the shortcuts with "bead".
  12. First of all, am happy someone found trade beads useful. We have a lot of nifty features that I thought would be useful to traders - such as the trade beads, of option interest trees, or max pain box, that I don't get much feedback on, so I think no one uses them. There is already a clear beads shortcut. Look at keyboard shortcuts page in settings and do a search (the field uptop) for "bead".... The other two - will do although am not sure how useful the NumBeads variable will be. Also - if you have beads 1 2 and 5 turned on, the NumBeads will be 3.
  13. You found a bug The fix will be in next beta.
  14. Not sure. But you can manually backfill. Just right click on TSLA and choose the option to backfill.
  15. I will look at this. The way it is right now is on purpose.. but maybe it can be changed.
  16. OK I got your scan. Help me here so I don't have to dig through this - do I have to run the scan during the day or afterhours is ok? Which particular symbol does it fail on and what exactly is it showing that is incorrect?
  17. 1. EMA is weird. It wants a LOT of data. 2. You do have the extended hours in scan set to "Always" same as in the chart right? 3. Try this: if your chart is showing let's say 20 days, do a SetDaysNeeded(20) call in your paintbar code.
  18. Yes, Auto-Backfill needs to be checked if you want all the stocks in your portfolio to be backfilled before a scan (and of course if your scan needs past data).
  19. I checked, and the MA is calculated on whatever shows, if you show premarket, MA is calculated using premarket values. Of course, as soon as the market starts, the volume jumps, becomes way over MA and you would get an alert. What you see (first opened the chart only with bars within the regular session. And after a few seconds he added the MA) is if you don't have premarket data to begin with, and get it from a backfill. But once you do get the backfilled data, next time you open the chart, it will be there. Also - alerts in MT only happen on "latest" data - that is, if you have a chart for a day and the alert condition is satisfied let's say 20 minutes ago, it won't trigger. It is only triggered on the last - rightmost - candle.
  20. You already have the TriggerAlert in there. When you edit the parameters of your scan, there will be an Alert button in there - click on it to activate it and it will give you alert parameters where you can specify sound etc.
  21. The scan, when it runs, does not run only on the very last candle. It runs on every candle first (then, as the real time data comes in, it keeps running on the last and then new candles). So something like this will work .fctbNone{ color:#000000; } .fctbStyle4{ color:#0000ff; } .fctbStyle3{ color:#000000; } .fctbStyle2{ color:#008000; } .fctbStyle2Style4{ color:#0000ff; } .fctbStyle2Style3{ color:#000000; } .fctbNone{ color:#000000; } .fctbStyle4{ color:#0000ff; } .fctbStyle3{ color:#000000; } .fctbStyle2{ color:#008000; } .fctbStyle2Style4{ color:#0000ff; } .fctbStyle2Style3{ color:#000000; }int lastdaynum = -1; double CloseAt7 = 0; public void MainCalculation() { if (TradingDay.DayNumber != lastdaynum) { CloseAt7 = 0; lastdaynum = TradingDay.DayNumber; } if (CloseAt7 == 0 && Timestamp >= TradingDay.SessionStart.AddHours(3)) // session starts at 4am, so add 3 to get 7am { CloseAt7 = Close; } if (CloseAt7 == 0) SetScanResult(0); else SetScanResult(Close-CloseAt7); }
  22. Let's say your scan result (that you pass in SetScanResult) is Double. Just have a Double variable set in the scan (outside the functions). Call it TriggeredValue. At start, set it to 0 (or some "invalid" value). When the condition is satisfied, set it to whatever you're passing to SetScanResult. And before you check for the condition, just say if TriggeredValue is not 0, SetScanResult to it and don't even continue checking for the condition.
  23. High/Low of the day or of previous day etc: put 2 horizontal lines on the chart, set one to show High of the Day, other show Low. Can play with parameters - make it regular session only High/Low of premarket - Opening Range indicator with a "trick" - set both the "opening period" and "go back into premarket" to something high. Like 900.
  24. .fctbNone{ color:#000000; } .fctbStyle5{ color:#0000ff; } .fctbStyle6{ color:#800000; } PBShape shape = PBShape.A; string ShapeString = "Square"; Enum.TryParse(ShapeString, out shape);
×
×
  • Create New...