Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

thrunner

Members
  • Content Count

    316
  • Joined

  • Last visited

Everything posted by thrunner

  1. dcstrategies' suggestion is correct, but you can always find a time frame to fit an indicator after the fact The point is that it is unlikely the TTM branded indicator is any better, it is a limitation of any indicator to give the signal you 'expect' at any given setting.
  2. Thank you Richsan, but I don't think Multicharts can read TS elds. In addition, there are so many required functions in this indicator that it may be difficult to import them one by one manually into MC. The best solution may be for raven to ask this in the tssuport (MC) forum. Someone there should have had done a study on this.
  3. The waivers is in effect March 3, 2008, and continue through December of this year. The volume of EMD is about 4-5x lower and there may be some range spread at opening, closing and near EST lunchtime 11-1, 2. As some have mentioned in the other thread: http://www.traderslaboratory.com/forums/f18/fyi-er2-is-moving-1918.html EMD may be a little less jumpy than ER2 during these periods (see cyan line below for the range spread). http://cmegroup.mediaroom.com/index.php?s=43&item=693 CME Group to Waive Fees for S&P 400 MidCap Equity Index Contracts PRNewswire-FirstCall CHICAGO (:CME) CHICAGO, Feb. 15 /PRNewswire-FirstCall/ -- CME Group, the world's largest and most diverse exchange, announced that CME Globex® and clearing fees will be waived for all S&P MidCap 400® and E-mini® S&P MidCap 400 Index futures and options on futures for all market participants. The waivers will go into effect March 3, 2008, and continue through December of this year. The waivers in the S&P MidCap 400 products are similar to the fee waivers for the S&P SmallCap 600® products already in place. The S&P SmallCap 600 and MidCap 400 contracts, along with other products in the equity index complex, are attractive alternatives to the Russell 2000 contract, which will no longer be listed on CME Globex following the September 2008 contract expiration.
  4. A bit of shadenfreude with Bear Sterns. Someone stucked a $2 bill to the entrance.
  5. For example if you are doing analysis using tick charts, the volume could be aggregated differently over time so that the volume data looks quite different. Attached please find comparison of two charts from TS, one @ES and the other @ES.D (day session version of ES continuos futures); the magenta arrows show some of the differences. If you apply some indicators based on volume, you will get quite different looking signals. Even the candles looked different. However, using a time chart, the differences are absent (not shown).
  6. If you are reading Suri's book, I don't see how you can avoid trying out TS; almost everything Suri does is done on TS. After all that has been said about TS, it is a fairly reliable, inexpensive and popular platform with good support.
  7. You will probably get more answers if you could please post a chart of live vs historical data and the chart/testing platform with one or two volume indicators. Volume data integrity is one of those dirty little secrets in data feeds. It is like making, or God forbid, eating sausages, you don't want to know how they make it ; but I guess you gotta know.In the end, you may have to try different feeds until you find one that works with your strategy. I am guessing you are using NT, you may find Zenfire a good datafeed for your purpose.
  8. Januson, there is nothing wrong with looking at the MP levels because there are so many traders looking at them. Just as there are so many looking at the VWAP, SD1,2,3. I am not sure what data feed you are getting for the Nordic OMX (Esignal ?), but you can probably try some of the free/low cost MP indicators for Tradestation/Multicharts or Ninjatrader; and try the free VWAP indicators as well.
  9. Even if it increases your sampling size, overtrading is wrong for most beginners because there is no edge and commission and slippage adds up easily. It also reinforce bad habits if you don't have an edge and it tires you out before you can find a better set up - often you will get into a bad trade and become reluctant to enter the next trade which could be a much better setup. LBR (Raschke) has mentioned how most professionals will trade less with less size and break even on a lot of choppy days but make it up on large, usually trending days where their setups are optimal. LBR doesn't need any plugs, but there are many free articles on her site as well.
  10. Thanks for the indicator, BR. The problem with MC may be with scaling to symbol setting. By default the scaling of a MC indicator is to screen, which is something TS doesn't do.
  11. BF is right about the TS forum, there are more detailed info there, unless you don't have an account yet, in that case you can't browse TS forum. MINI DOW JONES ($5) * YM $3,503 $2,802 $1,000** You'll need 10 transactions; but don't forget the exchange fees for YM which is about $60/month. I don't know the minimum account size.
  12. Absolutely not an expert here. But why don't you start looking at Bid/Ask volume (from a reliable tick datafeed source) at support and resistance levels? These are transient data which will not be stored but it will give you insight into the nature of the auctioning process.
  13. Thanks. No price indicator can paint that reversal in real time. This is like a Zigzag or price action indicator, it won't know the price peak (HH) or trough (LL) until 2 or more bars later.
  14. Not that I am aware of. Suri has begun to market quite of few of his indicators, although the prices are not explicitly listed on his website. The closest free indicator is the Suri ZigzagFib from the TS forum.
  15. Change to March 2008 Contract Expiration Date Due to Good Friday Holiday Because the Good Friday exchange holiday coincides with the third Friday of March (the standard March quarterly expiration date), March 2008 CME Group Equity index futures and options will expire on Thursday, March 20, 2008 instead of Friday, March 21, 2008. Specifically: • The open outcry trading of expiring contracts will conclude at the close of the regular trading hours on Wednesday, March 19, 2008. • Trading of expiring E-mini equity index futures and options contracts will conclude prior to the open of regular open outcry trading hours on Thursday, March 20, 2008. Expiration dates/times by contract are provided below:
  16. Now I see a sample chart of the bars in question I can see why you say they are simple. In real life, you won't find too many adjacent bar double top or double bottoms like that (I don't think the sample chart is even an actual chart). If you just want to program such a pattern, the logic provided above (or similar logic) will let you program such pattern matching in EL, but you are unlikely to find many matches. There are a lot more practical three bar group patterns you can explore, for example the ones mention in Suri's book {Suri TBG1; Go Long above H[3]} if H[3] > H[2] and C[2] < C[1] and L[1] > L[2] and H[1] > H[2] and C > H[3] then TB1Long = true else TB1Long = false ; {Suri TBG2; Go Long above H[2]} if H[3] > H[2] and C[2] < C[1] and L[2] < L[3] and O[1] < C[2] and C[1] > C[2] and L[1] < L[2] and C > H[2] then TB2Long = true else TB2Long = false ; {Suri TBG3; Go Long above H[1]} if H[3] > H[2] and C[2] < C[3] and O[1] > C[2] and H[1] > H[3] and C > H[1] then TB3Long = true else TB3Long = false ; {Suri TBG4; Go Long above H[3]} if H[3] > H[2] and H[2] > H[1] and L[3] < L[2] and L[2] < L[1] and C > H[3] then TB4Long = true else TB4Long = false ; {Suri TBG4; Go Short below L[3]} if L[3] < L[2] and L[2] < L[1] and H[3] > H[2] and H[2] > H[1] and C < L[3] then TB4Short = true else TB4Short = false ; The first ELD ...SURIBARS below is not an actual indicator, just the functions for matching the three bar groups pattern. The second ELD, ...SURI.CANDLEREADER is an indicator, capable of matching several candle stick patterns, written by Suri. You should be able to use that as an example to explore more simple patterns. 20070716084205SURIBARS 1.ELD 20061205194606SURI.CANDLEREADER.ELD
  17. They locked the forum to nonsubscribers. That is actually one of the few benefits of TS, the collective wisdom of close to 10 years of programmatic and strategic trading experience from those who are willing to share. You could probably share a TS account with a trusted friend or family member just to get to the TS forum. And yes, they do lock threads and censor/delete posts and threads and you can be banned from that forum; they also know the TS account number of every poster.
  18. I suggest you take a look at the code for Head & Shoulders ShowMe within TS for example of how to find these patterns. These are not simple one, two or three bar patterns (for example, looking for a doji, which is basically Open=Close for the current bar) and it requires looking at pivots or swing bars over many bars (could be dozens of bars). The code for H&S is about 200 lines. In addition, no two independent implementation of these indicators will look exactly the same because there are too many variables involved. Even if you don't do Easylanguage, you could start by drawing a few bars of what the rules entailed in the pictures you posted and see if you could have defined them mathmatically (e.g., H[4] < H[3] AND H[3] = H[1] AND C[3] <> H[3] AND C[1] <> H[1] AND C[0] < L[1] in the simplest 5 bar permutation for the Double top reversal bar pattern).
  19. I doubt it will affect performance. You will find that a 20 day moving average of volume is a pretty much a flat line (look at it on a chart) on a minute chart.
  20. The Hang Seng index futures front month is slightly different from US stock index futures in that it is a monthly contract and the front month is the current month and the roll over is Last Trading Day = The Business Day immediately preceding the last Business Day of the Contract Month; Trading Hours on Last Trading Day 9:45 a.m. - 12:30 p.m. and 2:30 p.m. - 4:00 p.m. They take a 2 hour lunch break, how civilized In the sample IB chart of HSI below, the option pricing is not to scale to the underlying futures.
  21. Try this Volume Avg indicator modified for RS. Adjust the input for AvgLength to longer periods e.g. 20 days x 390min /5 on 5 min charts; 390min is 6.5 hrs Reg Trade Hrs. inputs: AvgLength( 30 ), AlertPct( 50 ), UpColor( Green ), DownColor( Red ) ; variables: VVol( 0 ), AvgVVol( 0 ), TVol( 0 ), AvgTVol( 0 ), AlertFactor( 1 + AlertPct * .01 ), AlertStr( NumToStr( AlertPct, 2 ) ) ; if BarType >= 2 then { ie, not tick/minute data } begin VVol = Volume ; AvgVVol = AverageFC( Volume, AvgLength ) ; Plot1( VVol, "Vol" ) ; Plot2( AvgVVol, "VolAvg" ) ; { Alert criteria } if VVol crosses over AvgVVol * AlertFactor then Alert( "Volume breaking through " + AlertStr + "% above its avg" ) ; end else { if tick/minute data; in the case of minute data, also set the "For volume, use:" field in the Format Symbol dialog to Trade Vol or Tick Count, as desired } begin TVol = Ticks ; AvgTVol = AverageFC( Ticks, AvgLength ) ; Plot1( TVol, "Vol" ) ; Plot2( AvgTVol, "VolAvg" ) ; { Alert criteria } if TVol crosses over AvgTVol * AlertFactor then Alert( "Volume breaking through " + AlertStr + "% above its avg" ) ; end ; { Color criteria } if UpTicks > DownTicks then SetPlotColor( 1, UpColor ) else if UpTicks < DownTicks then SetPlotColor( 1, DownColor ) ;
  22. Thanks for the update, O Z. The Bill Williams Awesome Oscillator is not well known in the TS circle, but it seems to be a staple with Metatraders. Code listed below is a similar system without the use of stochastics, using the Awesome Oscillator and Parabolic SAR stops. Perhaps those who use Metatrader could report on the result of this similar system: /*[[ Description: Awesome Scalper V1.3 Awesome Oscillator auto Trader for 15 minutes charts Name := 2Extreme4U - Awesome Scalper 1.3 Author := 2Extreme4U Link := www.omniscienttrader.com Notes := Scalping expert/Trend follower Lots := 1.00 Stop Loss := 25 Take Profit := 50 Trailing Stop := 15 ]]*/ ///////////////////////////////////////////////////// // Defines ///////////////////////////////////////////////////// Defines: Slippage(5); // Slippage Defines: EMA1(11); // EMA 10 Defines: PSARStep(0.0150); // Parabolic SAR Step Defines: PSARMaximum(0.2000); // Parabolic SAR Maximum Defines: PrimaryTarget(29); // Primary target to close 1 lot Defines: BreakEvenSL(11); // Number of points made before the stop is moved to breakeven Defines: TradesPerCurrency(1); // Number of lots to trade ///////////////////////////////////////////////////// // Variables ///////////////////////////////////////////////////// var: EMA101(0), EMA102(0); // EMA 10 Values var: Psar(0), PsarP(0); // Parabolic SAR Value var: Awesome(0), AwesomeP(0), AwesomePP(0); // Awesome Occillator Value var: Accel(0), AccelP(1); // Accelerator Occillator Value var: OpenSell(0); // Sell Trades Counter var: OpenBuy(0); // Buy Trades Counter var: PriceOpen(0); // Price Open var: I(0); // Misc Counter var: Mode(0); // Squirl the Mode variable for multiple use ///////////////////////////////////////////////// // Main Script Conditions ///////////////////////////////////////////////// If Curtime - LastTradeTime < 5 then Exit; If FreeMargin < 500 then Exit; ///////////////////////////////////////////////////// // Calculations / Setting Values ///////////////////////////////////////////////////// OpenSell = 0; OpenBuy = 0; for I = 1 to TotalTrades { Mode = ord(I, VAL_TYPE); if ord(I, VAL_SYMBOL) == Symbol then { //Calculates how many Sell we have for the current Symbol if Mode == OP_SELL then { OpenSell++; }; //Calculates how many Buy we have for the current Symbol if Mode == OP_BUY then { OpenBuy++; }; }; }; Awesome = iAO(0); AwesomeP = iAO(1); AwesomePP = iAO(2); Accel = iAC(0); AccelP = iAC(1); Psar = iSAR(PSARStep, PSARMaximum, 0); PsarP = iSAR(PSARStep, PSARMaximum, 1); ///////////////////////////////////////////////// // Comment on the chart ///////////////////////////////////////////////// ///////////////////////////////////////////////// // Long/Short Trade Opening ///////////////////////////////////////////////// If OpenBuy < TradesPerCurrency then { // Buy 4 points higher than last candle close PriceOpen = Close[1] + 4 * Point; If Awesome > 0 and AwesomeP > 0 and Awesome > AwesomeP and AwesomePP < 0 and Accel > AccelP and Psar < Ask then { if High[0] >= High[1] then { Alert(Symbol, " BUY ALERT. Awesome Scalper. Buy at ", PriceOpen, " or better."); if Ask <= PriceOpen then { SetOrder(OP_BUY, Lots, Ask, Slippage, Psar, Ask + TakeProfit * Point , BLUE); Exit; }; }; }; }; If OpenSell < TradesPerCurrency then { // Buy 4 points lower than last candle close PriceOpen = Close[1] - 4 * Point; If Awesome < 0 and AwesomeP < 0 and AwesomePP > 0 and Accel < AccelP and Psar > Bid then { If Low[0] <= Low[1] then { Alert(Symbol, " SELL ALERT. Awesome Scalper. Sell at ", PriceOpen, " or better."); if Bid >= PriceOpen then { SetOrder(OP_SELL, Lots, Bid, Slippage, Psar, Bid - TakeProfit * Point, RED); Exit; }; }; }; }; ///////////////////////////////////////////////// // Trade Management ///////////////////////////////////////////////// for I = 1 to TotalTrades { Mode = ord(I, VAL_TYPE); if ord(I, VAL_SYMBOL) == Symbol then { If OpenBuy > 0 then { //If Primary target is met, close half play and move stop to 0 for other lot. if (Bid - ord(I, VAL_OPENPRICE)) >= PrimaryTarget * Point then { Alert("Primary Target met. BID = " + Bid + ". Closing order at market for " + Symbol + " on " + Period + " Period."); CloseOrder(ord(I, VAL_TICKET), ord(I, VAL_LOTS), Bid, Slippage, Orange); Exit; }; // PSAR Stop if Psar > PsarP and ord(I, VAL_STOPLOSS) != Psar and (Bid - Psar >= 4) and (Psar < Bid) then { ModifyOrder(ord(I, VAL_TICKET), ord(I, VAL_OPENPRICE), Psar, ord(I, VAL_TAKEPROFIT), BlueViolet); Exit; }; // If 10 pips profit, move Stop to BreakEven if bid - ord(I, VAL_OPENPRICE) >= BreakEvenSL * Point and ord(I, VAL_STOPLOSS) < ord(I, VAL_OPENPRICE)) then { ModifyOrder(ord(I, VAL_TICKET), ord(I, VAL_OPENPRICE), ord(I, VAL_OPENPRICE), ord(I, VAL_TAKEPROFIT), Cyan); Exit; }; /* // Psar has changed direction so we want to exit at breakeven if psar > Bid and ceil(ord(i, VAL_OPENPRICE)*10000) != ceil(ord(I, VAL_TAKEPROFIT)*10000) then { ModifyOrder(ord(I, VAL_TICKET), ord(I, VAL_OPENPRICE), ord(I, VAL_OPENPRICE), ord(I, VAL_OPENPRICE), Orange); Exit; }; */ }; If OpenSell > 0 then { //If Primary target is met, close half play and move stop to 0 for other lot. if (ord(I, VAL_OPENPRICE) - Ask) >= PrimaryTarget * Point then { Alert("Primary Target met. Ask = " + Ask + ". Closing order at market for " + Symbol + " on " + Period + " Period."); CloseOrder(ord(I, VAL_TICKET), ord(I, VAL_LOTS), Ask, Slippage, Orange); Exit; }; // Psar Stop if (Psar < PsarP) and (ord(i, VAL_STOPLOSS) != Psar) and (Psar - Ask >= 4) and (Psar > Ask) then { ModifyOrder(ord(I, VAL_TICKET), ord(I, VAL_OPENPRICE), Psar, ord(I, VAL_TAKEPROFIT), BlueViolet); Exit; }; // If 10 pips profit, move Stop to BreakEven if ord(I, VAL_OPENPRICE) - Ask >= BreakEvenSL * Point and ord(I, VAL_STOPLOSS) > ord(I, VAL_OPENPRICE)) then { ModifyOrder(ord(I, VAL_TICKET), ord(I, VAL_OPENPRICE), ord(I, VAL_OPENPRICE), ord(I, VAL_TAKEPROFIT), Cyan); Exit; }; /* // Psar has changed direction so we want to exit at breakeven if psar < Ask and ceil(ord(i, VAL_OPENPRICE)*10000) != ceil(ord(I, VAL_TAKEPROFIT)*10000) then { ModifyOrder(ord(I, VAL_TICKET), ord(I, VAL_OPENPRICE), ord(I, VAL_OPENPRICE), ord(I, VAL_OPENPRICE), Orange); Exit; }; */ }; }; };
  23. The Scapler is actually part of the indicator package in the latest NT so currently you don't need to import it. It was originally ported/coded by Gumphrie, but there is no guarantee that NT won't remove it from NT once TTM starts marketing their TTM suite for NT. So here it is the attached and code listed : // Scalper v0.1 by Gumphrie, inspired by John Carter's TTMScalper // v0.2 - removed the period parameter as pretty much useless and changed all the high/low calaculations to be one bar ahead // v0.3 - fixed possible plotting error // v0.4 - additional check for highest and lowest // v0.5 - reduced cpu usage & added trigger bar alert arrows #region Using declarations using System; using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.ComponentModel; using System.Xml.Serialization; using System.Text; using NinjaTrader.Cbi; using NinjaTrader.Data; using NinjaTrader.Gui.Chart; using NinjaTrader.Gui.Design; #endregion // This namespace holds all indicators and is required. Do not change it. namespace NinjaTrader.Indicator { /// <summary> /// Scalper /// </summary> [Description("Scalper")] [Gui.Design.DisplayName("Scalper")] public class Scalper : Indicator { #region Variables private SolidBrush ScalpBarBrush = new SolidBrush(Color.Lavender); private int counter = 0; private int ExtremeBar = 0; private int lastBar=0; private bool HighPainted = false; private bool LowPainted = true; private bool showTriggers = false; private double ExtremeBarHigh = 0; private double TriggerBarLow = 0; private double ExtremeBarLow = 0; private double TriggerBarHigh = 0; private int TriggerBarLowNo=0; private int TriggerBarHighNo=0; private DataSeries scalpSeries; private DataSeries open; private DataSeries high; private DataSeries low; private DataSeries close; #endregion /// <summary> /// This method is used to configure the indicator and is called once before any bar data is loaded. /// </summary> protected override void Initialize() { Overlay = true; scalpSeries = new DataSeries(this); open = new DataSeries(this); high = new DataSeries(this); low = new DataSeries(this); close = new DataSeries(this); CalculateOnBarClose = true; } /// <summary> /// Called on each bar update event (incoming tick) /// </summary> protected override void OnBarUpdate() { open.Set(Open[0]); high.Set(High[0]); low.Set(Low[0]); close.Set(Close[0]); if (CurrentBar <= 4) { scalpSeries.Set(0); } else { //Up if (HighPainted==false) { if ((High[1] < High[2]) && (0==ExtremeBar)) //if ((High[1] < High[2]) && (2 == Bars.HighestBar(3)) && (0==ExtremeBar)) { ExtremeBar = 2; ExtremeBarHigh = High[2]; TriggerBarLow = Low[1]; TriggerBarLowNo = CurrentBar-1; // if (ExtremeBarLow > High[4]) ExtremeBar = 4; } if (High[0] > ExtremeBarHigh) { ExtremeBar = 0; ExtremeBarHigh = 0; TriggerBarLow = 0; TriggerBarLowNo = 0; counter=-1; } if (0!=ExtremeBar) counter++; if ((Close[0] < TriggerBarLow) && (0!=ExtremeBar)) { ExtremeBar = ExtremeBar + counter; HighPainted = true; counter=-1; scalpSeries.Set(CurrentBar-ExtremeBar); ExtremeBar=0; } } //Down if (HighPainted==true) { if ((Low[1] > Low[2]) && (0==ExtremeBar)) //if ((Low[1] > Low[2]) && (2 == Bars.LowestBar(3)) && (0==ExtremeBar)) { ExtremeBar = 2; ExtremeBarLow = Low[2]; TriggerBarHigh = High[1]; TriggerBarHighNo = CurrentBar-1; // if (ExtremeBarLow > Low[4]) ExtremeBar = 4; } if (Low[0] < ExtremeBarLow) { ExtremeBar = 0; ExtremeBarLow = 0; TriggerBarHigh = 0; TriggerBarHighNo = 0; counter=-1; } if (0!=ExtremeBar) counter++; if ((Close[0] > TriggerBarHigh) && (0!=ExtremeBar)) { ExtremeBar = ExtremeBar + counter; HighPainted = false; counter=-1; scalpSeries.Set(CurrentBar-ExtremeBar); ExtremeBar=0; } } // else scalpSeries.Set(0); } lastBar=CurrentBar; } public override void Plot(Graphics graphics, Rectangle bounds, double min, double max) { // Default plotting in base class. //base.Plot(graphics, bounds, min, max); if (base.Bars == null) return; if (ChartControl.ChartStyleType.ToString()=="LineOnClose") return; int index = -1; Exception caughtException; int barPaintWidth = ChartControl.ChartStyle.GetBarPaintWidth(ChartControl.BarWidth); int bars = ChartControl.BarsPainted; while (bars >= 0) { index = ((ChartControl.LastBarPainted - ChartControl.BarsPainted) + 1) + bars; if (ChartControl.ShowBarsRequired || ((index - Displacement) >= BarsRequired)) { try { bool ScalpBar=false; for (int scalpBar=index;scalpBar<=lastBar;scalpBar++) { if (scalpSeries.Get(scalpBar)==index) { ScalpBar=true; break; } } if (ScalpBar) { int x1 = (((ChartControl.CanvasRight - ChartControl.BarMarginRight) - (barPaintWidth / 2)) - ((ChartControl.BarsPainted - 1) * ChartControl.BarSpace)) + (bars * ChartControl.BarSpace); int y1 = (bounds.Y + bounds.Height) - ((int) (((high.Get(index) - min) / ChartControl.MaxMinusMin(max, min)) * bounds.Height)); int y2 = (bounds.Y + bounds.Height) - ((int) (((close.Get(index) - min) / ChartControl.MaxMinusMin(max, min)) * bounds.Height)); int y3 = (bounds.Y + bounds.Height) - ((int) (((open.Get(index) - min) / ChartControl.MaxMinusMin(max, min)) * bounds.Height)); int y4 = (bounds.Y + bounds.Height) - ((int) (((low.Get(index) - min) / ChartControl.MaxMinusMin(max, min)) * bounds.Height)); if (ChartControl.ChartStyleType.ToString()=="OHLC") graphics.DrawLine(new Pen(ScalpBarBrush.Color,(int)((((double)ChartControl.BarWidth)/3)*2)),x1,y1,x1,y4); else if (ChartControl.ChartStyleType.ToString()=="HiLoBars") graphics.DrawLine(new Pen(ScalpBarBrush.Color,ChartControl.BarWidth),x1,y1,x1,y4); else { byte bRed = (byte)~(ChartControl.BackColor.R); byte bGreen = (byte)~(ChartControl.BackColor.G); byte bBlue = (byte)~(ChartControl.BackColor.B); Pen pen = new Pen(Color.FromArgb(bRed,bGreen,bBlue), 1); graphics.FillRectangle(ScalpBarBrush,x1-(barPaintWidth/2)+1,y1,barPaintWidth-2,y4-y1); if (y2>y3) { graphics.DrawLine(pen,x1,y1,x1,y3); graphics.DrawLine(pen,x1,y2,x1,y4); } else { graphics.DrawLine(pen,x1,y1,x1,y2); graphics.DrawLine(pen,x1,y3,x1,y4); } graphics.DrawLine(pen,x1-(barPaintWidth/2)+1,y3,x1+(barPaintWidth/2)-2,y3); graphics.DrawLine(pen,x1-(barPaintWidth/2),y2,x1+(barPaintWidth/2),y2); graphics.DrawLine(pen,x1-(barPaintWidth/2),y2,x1-(barPaintWidth/2),y3); graphics.DrawLine(pen,x1+(barPaintWidth/2),y2,x1+(barPaintWidth/2),y3); } } else if (showTriggers) { if ((TriggerBarLowNo>0) && (TriggerBarLowNo==index)) { int x1 = (((ChartControl.CanvasRight - ChartControl.BarMarginRight) - (barPaintWidth / 2)) - ((ChartControl.BarsPainted - 1) * ChartControl.BarSpace)) + (bars * ChartControl.BarSpace); int y1 = (bounds.Y + bounds.Height) - ((int) ((((high.Get(index)+(2*TickSize)) - min) / ChartControl.MaxMinusMin(max, min)) * bounds.Height)); DrawArrow((barPaintWidth/5)*4, graphics,x1,y1,ScalpBarBrush,false); } if ((TriggerBarHighNo>0) && (TriggerBarHighNo==index)) { int x1 = (((ChartControl.CanvasRight - ChartControl.BarMarginRight) - (barPaintWidth / 2)) - ((ChartControl.BarsPainted - 1) * ChartControl.BarSpace)) + (bars * ChartControl.BarSpace); int y1 = (bounds.Y + bounds.Height) - ((int) ((((low.Get(index)-(2*TickSize)) - min) / ChartControl.MaxMinusMin(max, min)) * bounds.Height)); DrawArrow((barPaintWidth/5)*4, graphics,x1,y1,ScalpBarBrush,true); } } } catch (Exception exception) { caughtException = exception; } } bars--; } } private void DrawArrow(int arrowSize, Graphics graphics, int x, int y, SolidBrush brush, bool up) { Point[] points; int halfSize = (int) Math.Floor((double) (((double) arrowSize) / 2)); Point[] upPoints = new Point[] { new Point(0, 0), new Point(arrowSize, arrowSize), new Point(halfSize, arrowSize), new Point(halfSize, arrowSize * 2), new Point(-halfSize, arrowSize * 2), new Point(-halfSize, arrowSize), new Point(-arrowSize, arrowSize), new Point(0, 0) }; //Point[] dnPoints = new Point[] { new Point(-halfSize, -arrowSize * 2), new Point(halfSize, -arrowSize * 2), new Point(halfSize, -arrowSize), new Point(arrowSize, -arrowSize), new Point(0, 0), new Point(-arrowSize, -arrowSize), new Point(-halfSize, -arrowSize), new Point(-halfSize, -arrowSize * 2) }; //Point[] upPoints = new Point[] { new Point(0, -arrowSize), new Point(arrowSize, arrowSize), new Point(0, arrowSize/2), new Point(-arrowSize, arrowSize), new Point(0, -arrowSize) }; Point[] dnPoints = new Point[] { new Point(-halfSize, -arrowSize * 2), new Point(halfSize, -arrowSize * 2), new Point(halfSize, -arrowSize), new Point(arrowSize, -arrowSize), new Point(0, 0), new Point(-arrowSize, -arrowSize), new Point(-halfSize, -arrowSize), new Point(-halfSize, -arrowSize * 2) }; if (up) { points = upPoints; } else { points = dnPoints; } for (int i = 0; i < points.Length; i++) { points[i].Offset(x, y); } byte bRed = (byte)~(base.ChartControl.BackColor.R); byte bGreen = (byte)~(base.ChartControl.BackColor.G); byte bBlue = (byte)~(base.ChartControl.BackColor.B); graphics.FillPolygon(brush, points); graphics.DrawPolygon(new Pen(Color.FromArgb(bRed,bGreen,bBlue)), points); } Scalper0.5.zip
  24. Thanks for the video, I think However, we really didn't needed to hear "next slide please" and waited 30 seconds and then "Gavin, did you hear me, next slide please" :rofl: I don't think we needed to hear "you will make obscenely amount of money" either. There is some truth to what he presented, but this video really has zero technical content as to setups until about 35 minutes into this 41 minute video, and all of that was about following the Tom Williams' Trade Guider indicator. I did learn, however, that Richard Ney was a good looking guy, no wonder he was a Hollywood actor. erierambler, a hint for your next avatar ?
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.