<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="http://syndication.webwiz.co.uk/rss_namespace/">
 <channel>
  <title>BullCharts : Ross hook and 123 formations</title>
  <link>http://www.bullcharts.com.au/forum/</link>
  <description>This is an XML content feed of; BullCharts : Tips and Tricks : Ross hook and 123 formations</description>
  <copyright>Copyright (c) 2006-2009 Web Wiz Forums - All Rights Reserved.</copyright>
  <pubDate>Wed, 15 Apr 2026 07:24:30 +0000</pubDate>
  <lastBuildDate>Thu, 29 Mar 2012 19:09:40 +0000</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 9.69</generator>
  <ttl>360</ttl>
  <WebWizForums:feedURL>www.bullcharts.com.au/forum/RSS_post_feed.asp?TID=804</WebWizForums:feedURL>
  <image>
   <title>BullCharts</title>
   <url>http://www.bullcharts.com.au/forum/http://www.bullcharts.com.au/images/bull_logo.gif</url>
   <link>http://www.bullcharts.com.au/forum/</link>
  </image>
  <item>
   <title>Ross hook and 123 formations : Wow, that is a lot of coding....</title>
   <link>http://www.bullcharts.com.au/forum/forum_posts.asp?TID=804&amp;PID=2906#2906</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.bullcharts.com.au/forum/member_profile.asp?PF=643" rel="nofollow">peter1</a><br /><strong>Subject:</strong> 804<br /><strong>Posted:</strong> 29&nbsp;Mar&nbsp;2012 at 7:09pm<br /><br />Wow, that is a lot of coding. You might have to pay to get that amount of coding done. <br><br>I like the 123's also. They are good reversal trading setups especially at the end of a corrective move. <br>The 123's and Rh's look better on weekly charts. <br>]]>
   </description>
   <pubDate>Thu, 29 Mar 2012 19:09:40 +0000</pubDate>
   <guid isPermaLink="true">http://www.bullcharts.com.au/forum/forum_posts.asp?TID=804&amp;PID=2906#2906</guid>
  </item> 
  <item>
   <title>Ross hook and 123 formations : Hi there!  I trade using ross...</title>
   <link>http://www.bullcharts.com.au/forum/forum_posts.asp?TID=804&amp;PID=2899#2899</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.bullcharts.com.au/forum/member_profile.asp?PF=766" rel="nofollow">stefanols</a><br /><strong>Subject:</strong> 804<br /><strong>Posted:</strong> 17&nbsp;Mar&nbsp;2012 at 7:03pm<br /><br />Hi there!<DIV>&nbsp;</DIV><DIV>I trade using ross 123 formations etc. I do this by scrolling charts manually. </DIV><DIV>I have found some metastock indicators like the ones below. Not very good. </DIV><DIV>There is though a metatrader show ross123 that is good. Anyone that would be</DIV><DIV>able to convert that into bullcharts code? Beyond my knowledge. Thanks in advance. Stefan (Sweden)</DIV><DIV>&nbsp;</DIV><P><FONT size=1 face="Verdana, Arial, Helvetica, sans-serif">LOW<BR>Mx:=Mov(L,4,S);<BR>L &gt; Ref(L,-1) AND L&gt;Mx AND<BR>Ref(L,-1) &lt; Ref(Mx,-1) AND<BR>LLV(L,4 ) &gt; LLV(L,10 ) AND<BR>RSI(14)&lt;50</FONT></P><P><FONT size=1 face="Verdana, Arial, Helvetica, sans-serif">HIGH<BR>Mx:=Mov(H,4,S);<BR>H &lt; Ref(H,-1) AND H &lt; Mx AND<BR>Ref(H,-1) &gt; Ref(Mx,-1) AND<BR>HHV(H,4 ) &lt; HHV(H,10) AND<BR>RSI(14)&gt;50</P><DIV></DIV><DIV></DIV><DIV>Metatrader</DIV><DIV></DIV><DIV></DIV><DIV>//+------------------------------------------------------------------+<BR>//|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; show123.mq4 |<BR>//|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copyright © 2006, Computer Objectives Designed &amp; Evolved |<BR>//| Version 1.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<BR>//|Supplied as Freeware. Code can be replicated and used as desired&nbsp; |<BR>//|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Built on and for Meta Trader version 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<BR>//|&nbsp; No responsibility taken for ANY trade decision made using this&nbsp; |<BR>//| software. No responsibility taken for ANY side effects&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<BR>//| where this software is used.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<BR>//+------------------------------------------------------------------+<BR>#property copyright "Copyright © 2006, Computer Objectives Designed &amp; Evolved"</DIV><DIV>&nbsp;</DIV><DIV>#property indicator_chart_window</DIV><DIV><BR>extern color downcolor= Red;<BR>extern color upcolor = Green;<BR>extern color faildncolor = DarkSalmon;<BR>extern color failupcolor = DarkSeaGreen;<BR>extern color bbreakcolor = DodgerBlue;<BR>extern int&nbsp; maxbars=500;<BR>extern int aggression=1;<BR>extern int behaviourswitches=259;//1+2+256;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //allow 1&amp;2on same <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //allow 2&amp;3 on same <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // remove 123s where 2 is a RH<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>extern int rejectifheightlessthan=15;<BR>extern int targetpercent123=100;<BR>extern int targetstart123=2;<BR>extern bool showrosshooks=true;<BR>extern string fontname="Arial Black";<BR>extern int fontsize=8;<BR>extern int PipTextHeight=0;</DIV><DIV>extern bool showbandbreaks=false;<BR>extern bool onlyshow1stbreak=true;<BR>extern int bandperiod=20;<BR>extern double banddev=2.0;</DIV><DIV><BR>datetime upmarkers&#091;&#093;&#091;4&#093;,downmarkers&#091;&#093;&#091;4&#093;,uprh&#091;&#093;,dnrh&#091;&#093;,bbreakup&#091;&#093;,bbreakdn&#091;&#093;;<BR>int totdnmarkers,totupmarkers,totuprh,totdnrh,totbbup,totbbdn;</DIV><DIV>int oldmaxbars=0;<BR>double estpiptexth=0.0;<BR>bool bfirstrun=true;</DIV><DIV><BR>int totupit,totdnit;</DIV><DIV>//+------------------------------------------------------------------+<BR>//| Custom indicator initialization function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<BR>//+------------------------------------------------------------------+<BR>int init()<BR>&nbsp; {<BR>// reset marker counts<BR>&nbsp;&nbsp; bfirstrun=true;<BR>&nbsp;&nbsp; totdnmarkers =0;<BR>&nbsp;&nbsp; totupmarkers =0;<BR>&nbsp;&nbsp; totuprh=0;<BR>&nbsp;&nbsp; totdnrh=0;<BR>&nbsp;&nbsp; totbbdn=0;<BR>&nbsp;&nbsp; totbbup=0;<BR>&nbsp;&nbsp; estpiptexth=0.0;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // make sure sensible values are set<BR>&nbsp;&nbsp; if ((targetstart123 &lt;0) || (targetstart123 &gt;3)) targetstart123=2;<BR>&nbsp;&nbsp; if (targetpercent123 &lt;0) targetpercent123 = 100;<BR>&nbsp;&nbsp; if ((aggression &lt;1) || (aggression &gt;3)) aggression = 1;<BR>&nbsp;&nbsp; if (rejectifheightlessthan &lt;0) rejectifheightlessthan=0;<BR>&nbsp;&nbsp; if (bandperiod &lt;2) bandperiod =20;<BR>&nbsp;&nbsp; if (banddev &lt; 0.1) banddev =2.0;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // if user allows 1&amp;2 on&nbsp; same bar then definately dont allow <BR>&nbsp;&nbsp; // new 1 on prev 2 or a new 2 on prev 2<BR>&nbsp;&nbsp; if ((behaviourswitches &amp; 1)== 1)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; if ((behaviourswitches &amp; 4)== 4) behaviourswitches -=4;<BR>&nbsp;&nbsp;&nbsp; if ((behaviourswitches &amp; 16)== 16) behaviourswitches -=16;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; //if user allow 2&amp;3 on same bar then def dont allow<BR>&nbsp;&nbsp; // 2 on prev 3 or a 3 on prev 2<BR>&nbsp;&nbsp; if ((behaviourswitches &amp; 2)==2)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; if ((behaviourswitches &amp; 32)== 32) behaviourswitches -=32;<BR>&nbsp;&nbsp;&nbsp; if ((behaviourswitches &amp; 64)== 64) behaviourswitches -=64;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; return(0);<BR>&nbsp; }</DIV><DIV><BR>void moveallmarkers()<BR>{<BR>int pos;<BR>datetime tdt;</DIV><DIV>// get oldest date of all markers<BR>&nbsp;if (totupmarkers &gt;0) tdt = upmarkers&#091;0&#093;&#091;0&#093;;<BR>&nbsp;if ((totdnmarkers &gt;0) &amp;&amp;&nbsp; (downmarkers&#091;0&#093;&#091;0&#093; &lt; tdt)) tdt = downmarkers&#091;0&#093;&#091;0&#093;;<BR>&nbsp;if ((totuprh &gt;0) &amp;&amp;&nbsp; (uprh&#091;0&#093; &lt; tdt)) tdt = uprh&#091;0&#093;;<BR>&nbsp;if ((totdnrh &gt;0) &amp;&amp;&nbsp; (dnrh&#091;0&#093; &lt; tdt)) tdt = dnrh&#091;0&#093;;<BR>&nbsp;if ((totbbup &gt;0) &amp;&amp;&nbsp; (bbreakup&#091;0&#093; &lt; tdt)) tdt = bbreakup&#091;0&#093;;<BR>&nbsp;if ((totbbdn &gt;0) &amp;&amp;&nbsp; (bbreakdn&#091;0&#093; &lt; tdt)) tdt = bbreakdn&#091;0&#093;;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;//get barnum for date <BR>&nbsp; pos = iBarShift(NULL,0,tdt,true);<BR>&nbsp; <BR>&nbsp; // iterate all bars and force marker moves on hi &amp; lo of every bar<BR>&nbsp; while (pos &gt;=0)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; movemarkers("123Up1,"+DoubleToStr(Time&#091;pos&#093;,0));<BR>&nbsp;&nbsp;&nbsp; movemarkers("123Dp1,"+DoubleToStr(Time&#091;pos&#093;,0));&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; pos--;<BR>&nbsp; }</DIV><DIV>}</DIV><DIV><BR>// recalc &amp; set marker positions on a bars high or low that corresponds to the <BR>// type of marker supplied in obname<BR>void movemarkers(string obname)<BR>{<BR>&nbsp;&nbsp; double yp=0;<BR>&nbsp;&nbsp; int obindx=0;<BR>&nbsp;&nbsp; string tstr;<BR>&nbsp;&nbsp; int pos;</DIV><DIV>&nbsp;&nbsp; pos = iBarShift(NULL,0,StrToDouble(StringSubstr(obname,7,StringLen(obname)-7)),true); </DIV><DIV>&nbsp;&nbsp; <BR>&nbsp;&nbsp; if (obinset(obname,"B"))<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; /// move markers in bottom pos&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; yp = Low&#091;pos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp; tstr ="123Dp2,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp-estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; tstr ="123Up1,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp-estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp; tstr ="123Up3,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp-estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; tstr = "123Drh,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp-estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp; tstr = "123Dbb,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp-estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; //move markers in top pos<BR>&nbsp;&nbsp;&nbsp;&nbsp; yp = High&#091;pos&#093;+estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; tstr ="123Up2,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp+estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; tstr ="123Dp1,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp+estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp; tstr ="123Dp3,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp+estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp; tstr = "123Urh,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp+estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp; tstr = "123Ubb,"+StringSubstr(obname,7,StringLen(obname)-7);<BR>&nbsp;&nbsp;&nbsp;&nbsp; obindx = ObjectFind(tstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (obindx !=-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet(tstr,OBJPROP_PRICE1,yp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yp=yp+estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; }<BR>}</DIV><DIV>// delete old markers of the type specified in mtype <BR>// from pos specifies the <BR>void deleteoldmarkers(string mtype,int frompos)<BR>{<BR>&nbsp;&nbsp; // delete old 123 text markers<BR>&nbsp;&nbsp; // if frompos = -1 then delete all markers<BR>&nbsp;&nbsp; // else delete markers younger than the date supplied<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; if (mtype == "D")<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (totdnmarkers &gt; frompos) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Dp1,"+DoubleToStr(downmarkers&#091;totdnmarkers-1&#093;&#091;0&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Dp1,"+DoubleToStr(downmarkers&#091;totdnmarkers-1&#093;&#091;0&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Dp2,"+DoubleToStr(downmarkers&#091;totdnmarkers-1&#093;&#091;1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Dp2,"+DoubleToStr(downmarkers&#091;totdnmarkers-1&#093;&#091;1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Dp3,"+DoubleToStr(downmarkers&#091;totdnmarkers-1&#093;&#091;2&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Dp3,"+DoubleToStr(downmarkers&#091;totdnmarkers-1&#093;&#091;2&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totdnmarkers--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(downmarkers,totdnmarkers);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else if (mtype == "U")<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (totupmarkers &gt; frompos)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Up1,"+DoubleToStr(upmarkers&#091;totupmarkers-1&#093;&#091;0&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Up1,"+DoubleToStr(upmarkers&#091;totupmarkers-1&#093;&#091;0&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Up2,"+DoubleToStr(upmarkers&#091;totupmarkers-1&#093;&#091;1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Up2,"+DoubleToStr(upmarkers&#091;totupmarkers-1&#093;&#091;1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Up3,"+DoubleToStr(upmarkers&#091;totupmarkers-1&#093;&#091;2&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Up3,"+DoubleToStr(upmarkers&#091;totupmarkers-1&#093;&#091;2&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totupmarkers--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(upmarkers,totupmarkers);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else if (mtype == "URH")<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (totuprh &gt;frompos)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Urh,"+DoubleToStr(uprh&#091;totuprh-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Urh,"+DoubleToStr(uprh&#091;totuprh-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totuprh--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(uprh,totuprh);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else if (mtype == "DRH")<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; while (totdnrh &gt;frompos)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Drh,"+DoubleToStr(dnrh&#091;totdnrh-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Drh,"+DoubleToStr(dnrh&#091;totdnrh-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totdnrh--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(dnrh,totdnrh);<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else if (mtype == "DBB")<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; while (totbbdn &gt;frompos)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Dbb,"+DoubleToStr(bbreakdn&#091;totbbdn-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Dbb,"+DoubleToStr(bbreakdn&#091;totbbdn-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totbbdn--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(bbreakdn,totbbdn);<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else if (mtype == "UBB")<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; while (totbbup &gt;frompos)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Ubb,"+DoubleToStr(bbreakup&#091;totbbup-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Ubb,"+DoubleToStr(bbreakup&#091;totbbup-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totbbup--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(bbreakup,totbbup);<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp; <BR>&nbsp;&nbsp; <BR>}</DIV><DIV><BR>// close the indicator ... delete all old markers <BR>int deinit()<BR>{</DIV><DIV>&nbsp;&nbsp; deleteoldmarkers("D",0); // remove down 123s<BR>&nbsp;&nbsp; deleteoldmarkers("U",0); // remove up 123s <BR>&nbsp;&nbsp; deleteoldmarkers("DRH",0); // remove down ross hooks<BR>&nbsp;&nbsp; deleteoldmarkers("URH",0); // remove up ross hooks<BR>&nbsp;&nbsp; deleteoldmarkers("DBB",0); // remove down bol band breaks<BR>&nbsp;&nbsp; deleteoldmarkers("UBB",0); // remove up bol band breaks<BR>&nbsp;&nbsp; return(0);<BR>}</DIV><DIV><BR>// determine if an object is of the set type requested <BR>// basically determines if object is on the high or low of a bar<BR>bool obinset(string obname,string typeset)<BR>{</DIV><DIV>&nbsp; if (typeset=="T")<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // check if we have one 1 on top of price bar<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((StringSubstr(obname,0,6) =="123Dp1") || <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (StringSubstr(obname,0,6) =="123Dp3") ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (StringSubstr(obname,0,6) =="123Up2") ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (StringSubstr(obname,0,6) =="123Ubb") ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (StringSubstr(obname,0,6) =="123Urh")) return(true); <BR>&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; else<BR>&nbsp; if (typeset=="B")<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // check if we have one 1 on bottom of price bar<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((StringSubstr(obname,0,6) =="123Up1") || <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (StringSubstr(obname,0,6) =="123Up3") ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (StringSubstr(obname,0,6) =="123Dp2") ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (StringSubstr(obname,0,6) =="123Dbb") ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (StringSubstr(obname,0,6) =="123Drh")) return(true);<BR>&nbsp; }<BR>&nbsp; return(false);<BR>}</DIV><DIV><BR>// returns the number of objects of the requested type at the requested position<BR>int findobatpos(int barnum,string pointtype,string typeset)<BR>{<BR>int inx=0;<BR>int res=0;<BR>string tstr;<BR>string fstr;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // count&nbsp; markers at datetime supplied in barnum <BR>&nbsp;&nbsp; /// if point type = "" then count any 123 marker type<BR>&nbsp;&nbsp; /// else only count markers of type detailed in pointtype<BR>&nbsp;&nbsp; /// return number of markers at Point<BR>&nbsp;&nbsp; inx = ObjectsTotal();<BR>&nbsp;&nbsp; while ((inx &gt;=0)&amp;&amp; (res==0))<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tstr = ObjectName(inx);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fstr = "123"+pointtype;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((StringSubstr(tstr,0,StringLen(fstr)) ==fstr) &amp;&amp; (typeset =="")) || <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((typeset!= "") &amp;&amp; (obinset(tstr,typeset)) ))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (StrToDouble(StringSubstr(tstr,7,StringLen(tstr)-7)) == barnum)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inx--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (pointtype =="")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (inx &gt;=0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tstr = ObjectName(inx);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fstr = "123"+pointtype;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((StringSubstr(tstr,0,StringLen(fstr)) ==fstr) &amp;&amp; (typeset=="")) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((typeset!= "") &amp;&amp; (obinset(tstr,typeset)) ))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (StrToDouble(StringSubstr(tstr,7,StringLen(tstr)-7)) == barnum)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inx--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inx--;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; return(res);&nbsp;&nbsp; <BR>}</DIV><DIV><BR>/// cacluate &amp; return the estimated text height in pips<BR>double getestpiptexth()<BR>{<BR>double range=0;<BR>int st=0;<BR>double result;<BR>int texth=0;</DIV><DIV><BR>// get the barnumber of the first bar on right edge of chart<BR>st=FirstVisibleBar()-BarsPerWindow();<BR>if (st &lt;0) st=0;</DIV><DIV>&nbsp;</DIV><DIV>// calculate the pip range on screen<BR>//range =High&#091;Highest(NULL,0,MODE_HIGH,BarsPerWindow(),st)&#093;- Low&#091;Lowest(NULL,0,MODE_LOW,BarsPerWindow(),st)&#093;;<BR>range =High&#091;Highest(NULL,0,MODE_HIGH,FirstVisibleBar()-st,st)&#093;- Low&#091;Lowest(NULL,0,MODE_LOW,FirstVisibleBar()-st,st)&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>// add 8% of range to estimate window height in pips<BR>range = range+((range*0.08)*Point);</DIV><DIV>// scale the fontsize use result var cos we need a double not int<BR>result = fontsize;<BR>texth= MathRound((result /8)*4);</DIV><DIV><BR>result = (Point*texth)*(range/(range/(range/(Point*100))));</DIV><DIV>if (result &lt; Point ) result = Point;</DIV><DIV>return(result);</DIV><DIV>}</DIV><DIV>&nbsp;</DIV><DIV>void CheckUps()<BR>&nbsp; {<BR>int pos=0,tix;<BR>int up1pos =-1;<BR>int up2pos=-1;<BR>int up3pos=-1;<BR>int up123lock=0;<BR>double yadj=0;</DIV><DIV><BR>&nbsp;&nbsp; //check for Up 123s</DIV><DIV><BR>&nbsp; if (totupmarkers &gt;0)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; //use aggression setting to determine where to start from<BR>&nbsp;&nbsp;&nbsp; pos = iBarShift(NULL,0,upmarkers&#091;totupmarkers-1&#093;&#091;aggression-1&#093;,true)-1;<BR>&nbsp; }<BR>&nbsp; else pos = maxbars;</DIV><DIV>totupit=0;<BR>&nbsp; while ((pos &gt;0) &amp;&amp;(!IsStopped())) <BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; totupit++;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// find potential 1 ie where this bars low is lower than the previous &amp; next <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // or where we have an inside bar<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((pos &gt;0) &amp;&amp; (up1pos ==-1)) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ((Low&#091;pos&#093;&lt;= Low&#091;pos+1&#093;) &amp;&amp; (Low&#091;pos&#093; &lt;= Low&#091;pos-1&#093;))&nbsp; || <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((Low&#091;pos&#093; &gt;= Low&#091;pos+1&#093;) &amp;&amp; (High&#091;pos&#093; &lt; High&#091;pos+1&#093;) &amp;&amp; (Low&#091;pos&#093;&lt;Low&#091;pos-1&#093;)) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up1pos =pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we havent found a 1 marker quit to while <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (up1pos ==-1) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we havent got a 2 point &amp; we dont allow 1&amp;2 on same bar then move to next bar<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((up1pos == pos) &amp;&amp; ((behaviourswitches &amp; 1) !=1) ) pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// find potential 2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((pos &gt;0) &amp;&amp; (up2pos==-1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1&amp;2 is on same bar &amp; open &lt;= close (ie either doji or bar went up)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos==up1pos) &amp;&amp; (Open&#091;pos&#093;&lt;= Close&#091;pos&#093;)) up2pos=pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1 point broken then quit trying<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos !=up1pos) &amp;&amp; (Low&#091;Lowest(NULL,0,MODE_LOW,up1pos-pos,pos)&#093; &lt; Low&#091;up1pos&#093;)) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if we have broken the top of the 1 bar &amp;&amp; we have the highest high since breaking the top of the 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos !=up1pos) &amp;&amp; (High&#091;Highest(NULL,0,MODE_HIGH,up1pos-pos,pos)&#093; &gt;= High&#091;up1pos&#093;) &amp;&amp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (High&#091;pos&#093; == High&#091;Highest(NULL,0,MODE_HIGH,(up1pos-pos),pos)&#093;))&nbsp; up2pos =pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ///if we havent got a 2 marker then quit to while<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (up2pos ==-1) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos = up1pos-1; // restart at next bar after previous 1 pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up1pos =-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if pos1&amp;2 on same bar then must move to next<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((up1pos == up2pos) &amp;&amp; (pos == up1pos)) pos--; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if were not allowing 2&amp;3 on same bar must move to next<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((behaviourswitches &amp; 2) !=2) &amp;&amp; (pos == up2pos)) pos--; </DIV><DIV><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // find potential 3 marker<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((pos&gt;=0) &amp;&amp; (up3pos==-1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we break the 1 pos then quit trying<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Low&#091;Lowest(NULL,0,MODE_LOW,up1pos-pos,pos)&#093; &lt; Low&#091;up1pos&#093;) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 2&amp;3 on same bar &amp; the bar went down <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos==up2pos) &amp;&amp; (Open&#091;pos&#093; &gt; Close&#091;pos&#093;)) up3pos=pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1&amp;2 on same bar &amp;&amp; this is the lowest low since 1&amp;2 &amp;&amp; there is a lower high than the 2 pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((up1pos==up2pos) &amp;&amp; (Low&#091;pos&#093; == Low&#091;Lowest(NULL,0,MODE_LOW,up1pos-pos,pos)&#093;) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (High&#091;Lowest(NULL,0,MODE_HIGH,up1pos-pos,pos)&#093; &lt; High&#091;up2pos&#093;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp; ((up1pos!=up2pos)&amp;&amp;(pos!=up2pos)&amp;&amp;(Low&#091;Lowest(NULL,0,MODE_LOW,up2pos-pos,pos)&#093;== Low&#091;pos&#093;) &amp;&amp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;Lowest(NULL,0,MODE_LOW,up2pos-pos,pos)&#093;&lt;= Low&#091;up2pos&#093;))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=pos; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;pos&#093; &gt; High&#091;up2pos&#093;) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </DIV><DIV><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if no 3 marker then contiune from while<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (up3pos==-1) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 1 pos broken so pattern dead start again <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Low&#091;Lowest(NULL,0,MODE_LOW,up1pos-pos,pos)&#093; &lt; Low&#091;up1pos&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos = up1pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up1pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // else cant find 3 for this 12 so move 2 to next pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=up2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // we now have a 123 so lets see if <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // we can break the 3 (then we search for another 3 with same 1&amp;2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // or trigger the 2 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // or break the 1 then kill the pattern<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (pos &gt;=0) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 1 pos broken so pattern dead ... kill it<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Low&#091;Lowest(NULL,0,MODE_LOW,up1pos-pos,pos)&#093; &lt; Low&#091;up1pos&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos = up1pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up1pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if we find a lower 3 point then kill the 3 point &amp; resume main while<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Low&#091;pos&#093; &lt; Low&#091;up3pos&#093;) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos == up3pos) &amp;&amp; (High&#091;pos&#093; &gt; High&#091;up2pos&#093;) &amp;&amp; (Open&#091;pos&#093; &gt; Close&#091;pos&#093;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=up2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((up2pos==up3pos) &amp;&amp; (pos!=up2pos)&amp;&amp; (Low&#091;Lowest(NULL,0,MODE_LOW,up3pos-pos,pos)&#093; &gt; Low&#091;up3pos&#093;)&amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (High&#091;Lowest(NULL,0,MODE_HIGH,up2pos-pos,pos)&#093; &lt;= High&#091;up2pos&#093;) &amp;&amp; (High&#091;pos&#093;&gt; High&#091;up2pos&#093;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up123lock=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if no lower high after 2&amp;3 on same bar then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // keep 1 &amp; kill 3 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((up2pos==up3pos) &amp;&amp; (pos !=up2pos) &amp;&amp; ((Low&#091;Lowest(NULL,0,MODE_LOW,up3pos-pos,pos)&#093; &lt; Low&#091;up3pos&#093;)||(High&#091;pos&#093; &gt;High&#091;up2pos&#093;) ))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 2 pos triggered<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((up2pos != up3pos) &amp;&amp; (High&#091;pos&#093; &gt; High&#091;up2pos&#093;))// &amp;&amp; (Low&#091;pos&#093; &gt;= Low&#091;up3pos&#093;)) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //((High&#091;pos&#093; &gt; High&#091;up2pos&#093;) &amp;&amp; (up1pos==up2pos)) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up123lock =1; // lock it as triggered<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we have invalidated the 3 point then continue from while <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (up3pos ==-1) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // dismiss it if height is less than reject height<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((High&#091;up2pos&#093; - Low&#091;up1pos&#093;) &lt; rejectifheightlessthan *Point)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=up2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // dont print 123 if 1&amp;2 are on bar 1 &amp; 3 on bar 0 or if 2&amp;3 are on bar 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((up1pos==up2pos) &amp;&amp; (up1pos==1)&amp;&amp; (up3pos==0)) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((up2pos==up3pos)&amp;&amp;(pos==0)) ) continue;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if we have found a 123 that falls within a previous 123 &amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // its trigger point is below the previous trigger point</DIV><DIV>/*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tix=totupmarkers-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((totupmarkers &gt;0) &amp;&amp; (tix &gt;-1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (upmarkers&#091;tix&#093;&#091;3&#093; !=0) tix--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((Time&#091;up3pos&#093; &lt; upmarkers&#091;tix&#093;&#091;2&#093;) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (High&#091;up2pos&#093; &lt; High&#091;iBarShift(NULL,0,upmarkers&#091;tix&#093;&#091;1&#093;,true)&#093; ) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove123(tix,"U");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tix = totupmarkers-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (totupmarkers &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((Time&#091;up3pos&#093; &lt; upmarkers&#091;totupmarkers-1&#093;&#091;2&#093;) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (High&#091;up2pos&#093; &lt; High&#091;iBarShift(NULL,0,upmarkers&#091;totupmarkers-1&#093;&#091;1&#093;,true)&#093; ) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove123(totupmarkers-1,"U");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;</DIV><DIV>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if user doesnt want any following combo then restart at the appropriate pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ((findobatpos(Time&#091;up1pos&#093;,"Up2","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 4) != 4)) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((findobatpos(Time&#091;up1pos&#093;,"Up3","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 8) != 8)) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=up1pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up1pos =-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ((findobatpos(Time&#091;up2pos&#093;,"Up2","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 16) != 16)) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((findobatpos(Time&#091;up2pos&#093;,"Up3","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 32) != 32)) ||&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((findobatpos(Time&#091;up2pos&#093;,"Urh","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 256) == 256))&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=up2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ((findobatpos(Time&#091;up3pos&#093;,"Up2","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 64) != 64)) ||&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((findobatpos(Time&#091;up3pos&#093;,"Up3","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 128) != 128)) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=up3pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create 123 markers &amp; save positions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //get number of markers at this bars low * estpiptextheight<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj= (findobatpos(Time&#091;up1pos&#093;,"","B"))*estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create marker<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Up1,"+DoubleToStr(Time&#091;up1pos&#093;,0),OBJ_TEXT,0,Time&#091;up1pos&#093;,Low&#091;up1pos&#093;-yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Up1,"+DoubleToStr(Time&#091;up1pos&#093;,0),"1",fontsize,fontname,upcolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj = (findobatpos(Time&#091;up2pos&#093;,"","T")+1)*estpiptexth; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Up2,"+DoubleToStr(Time&#091;up2pos&#093;,0),OBJ_TEXT,0,Time&#091;up2pos&#093;,High&#091;up2pos&#093;+yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Up2,"+DoubleToStr(Time&#091;up2pos&#093;,0),"2",fontsize,fontname,upcolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj= (findobatpos(Time&#091;up3pos&#093;,"","B"))*estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Up3,"+DoubleToStr(Time&#091;up3pos&#093;,0),OBJ_TEXT,0,Time&#091;up3pos&#093;,Low&#091;up3pos&#093;-yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Up3,"+DoubleToStr(Time&#091;up3pos&#093;,0),"3",fontsize,fontname,upcolor);</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // resize array &amp; store times of markers &amp; its locked status<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totupmarkers++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(upmarkers,totupmarkers);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upmarkers&#091;totupmarkers-1&#093;&#091;0&#093; = Time&#091;up1pos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upmarkers&#091;totupmarkers-1&#093;&#091;1&#093; = Time&#091;up2pos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upmarkers&#091;totupmarkers-1&#093;&#091;2&#093; = Time&#091;up3pos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upmarkers&#091;totupmarkers-1&#093;&#091;3&#093; = up123lock;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // restart checking at 1 bar after either this 123s 1 pos or 2 pos <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (aggression ==1) pos = up1pos-1; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (aggression==2) pos=up2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos = up3pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // reset temp vars for next run<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up1pos =-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp; }//while</DIV><DIV>}//func</DIV><DIV>&nbsp;</DIV><DIV>&nbsp;</DIV><DIV>/*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// find potential 1 ie where this bars low is lower than the previous &amp; next <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // or where we have an inside bar<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((pos &gt;0) &amp;&amp; (dn1pos ==-1)) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ((High&#091;pos&#093;&gt;= High&#091;pos+1&#093;) &amp;&amp; (High&#091;pos&#093; &gt;= High&#091;pos-1&#093;))&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || ((High&#091;pos&#093; &lt;= High&#091;pos+1&#093;) &amp;&amp; (Low&#091;pos&#093; &gt; Low&#091;pos+1&#093; )) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos =pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we havent found a 1 marker quit to while <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dn1pos ==-1) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we havent got a 2 point &amp; we dont allow 1&amp;2 on same bar then move to next bar<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn1pos == pos) &amp;&amp; ((behaviourswitches &amp; 1) !=1) ) pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// find potential 2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((pos &gt;0) &amp;&amp; (dn2pos==-1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1&amp;2 is on same bar &amp; open &lt;= close (ie either doji or bar went up)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos==dn1pos) &amp;&amp; (Open&#091;pos&#093;&gt;= Close&#091;pos&#093;)) dn2pos=pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1 point broken then quit trying<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos !=dn1pos) &amp;&amp; (High&#091;Highest(NULL,0,MODE_HIGH,dn1pos-pos,pos)&#093; &gt; High&#091;dn1pos&#093;)) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if ((pos!=dn1pos) &amp;&amp; (High&#091;pos&#093;&gt;High&#091;dn1pos&#093;)) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if we have broken the top of the 1 bar &amp;&amp; we have the highest high since breaking the top of the 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos !=dn1pos) &amp;&amp; (Low&#091;Lowest(NULL,0,MODE_LOW,dn1pos-pos,pos)&#093; &lt;= Low&#091;dn1pos&#093;) &amp;&amp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;pos&#093; == Low&#091;Lowest(NULL,0,MODE_LOW,(dn1pos-pos),pos)&#093;))&nbsp; dn2pos =pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ///if we havent got a 2 marker then quit to while<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dn2pos ==-1) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos = dn1pos-1; // restart at next bar after previous 1 pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos =-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if pos1&amp;2 on same bar then must move to next<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn1pos == dn2pos) &amp;&amp; (pos == dn1pos)) pos--; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if were not allowing 2&amp;3 on same bar must move to next<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((behaviourswitches &amp; 2) !=2) &amp;&amp; (pos == dn2pos)) pos--; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // find potential 3 marker<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((pos&gt;=0) &amp;&amp; (dn3pos==-1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we break the 1 pos then quit trying<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;Highest(NULL,0,MODE_HIGH,dn1pos-pos,pos)&#093; &gt; High&#091;dn1pos&#093;) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 2&amp;3 on same bar &amp; the bar went down <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos==dn2pos) &amp;&amp; (Open&#091;pos&#093; &lt; Close&#091;pos&#093;)) dn3pos=pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1&amp;2 on same bar &amp;&amp; this is the lowest low since 1&amp;2 &amp;&amp; there is a lower high than the 2 pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn1pos==dn2pos) &amp;&amp; (High&#091;pos&#093; == High&#091;Highest(NULL,0,MODE_HIGH,dn1pos-pos,pos)&#093;) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;Highest(NULL,0,MODE_LOW,dn1pos-pos,pos)&#093; &gt; Low&#091;dn2pos&#093;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp; ((dn1pos!=dn2pos)&amp;&amp;(pos!=dn2pos)&amp;&amp;(High&#091;Highest(NULL,0,MODE_HIGH,dn2pos-pos,pos)&#093;== High&#091;pos&#093;) &amp;&amp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (High&#091;Highest(NULL,0,MODE_HIGH,dn2pos-pos,pos)&#093;&gt;= High&#091;dn2pos&#093;))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=pos; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Low&#091;pos&#093; &lt; Low&#091;dn2pos&#093;) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if no 3 marker then contiune from while<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dn3pos==-1) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 1 pos broken so pattern dead start again <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;Highest(NULL,0,MODE_HIGH,dn1pos-pos,pos)&#093; &gt; High&#091;dn1pos&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos = dn1pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // else cant find 3 for this 12 so move 2 to next pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=dn2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // we now have a 123 so lets see if <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // we can break the 3 (then we search for another 3 with same 1&amp;2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // or trigger the 2 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // or break the 1 then kill the pattern<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (pos &gt;=0) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 1 pos broken so pattern dead ... kill it<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;Highest(NULL,0,MODE_HIGH,dn1pos-pos,pos)&#093; &gt; High&#091;dn1pos&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos = dn1pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if we find a lower 3 point then kill the 3 point &amp; resume main while<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;pos&#093; &gt; High&#091;dn3pos&#093;) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos == dn3pos) &amp;&amp; (Low&#091;pos&#093; &lt; Low&#091;dn2pos&#093;) &amp;&amp; (Open&#091;pos&#093; &lt; Close&#091;pos&#093;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=dn2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn2pos==dn3pos) &amp;&amp; (pos!=dn2pos)&amp;&amp; (High&#091;Highest(NULL,0,MODE_HIGH,dn3pos-pos,pos)&#093; &lt; Low&#091;dn3pos&#093;)&amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;Highest(NULL,0,MODE_LOW,dn2pos-pos,pos)&#093; &gt;= Low&#091;dn2pos&#093;) &amp;&amp; (Low&#091;pos&#093;&lt; Low&#091;dn2pos&#093;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if no lower high after 2&amp;3 on same bar then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // keep 1 &amp; kill 3 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn2pos==dn3pos) &amp;&amp; (pos !=dn2pos) &amp;&amp; ((High&#091;Highest(NULL,0,MODE_HIGH,dn3pos-pos,pos)&#093; &gt; High&#091;dn3pos&#093;)||(Low&#091;pos&#093; &lt;Low&#091;dn2pos&#093;) ))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 2 pos triggered<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn2pos != dn3pos) &amp;&amp; (Low&#091;pos&#093; &lt; Low&#091;dn2pos&#093;))// &amp;&amp; (Low&#091;pos&#093; &gt;= Low&#091;up3pos&#093;)) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //((High&#091;pos&#093; &gt; High&#091;up2pos&#093;) &amp;&amp; (up1pos==up2pos)) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock =1; // lock it as triggered<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we have invalidated the 3 point then continue from while <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dn3pos ==-1) continue;</DIV><DIV>*/</DIV><DIV>&nbsp;</DIV><DIV>void CheckDowns()<BR>&nbsp; {<BR>int pos=0;<BR>int dn1pos =-1;<BR>int dn2pos=-1;<BR>int dn3pos=-1;<BR>int dn123lock=0;<BR>double yadj=0,tv1;</DIV><DIV><BR>&nbsp;&nbsp; //check for Down 123s</DIV><DIV><BR>&nbsp; if (totdnmarkers &gt;0)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; //use aggression setting to determine where to start from<BR>&nbsp;&nbsp;&nbsp; pos = iBarShift(NULL,0,downmarkers&#091;totdnmarkers-1&#093;&#091;aggression-1&#093;,true)-1;<BR>&nbsp; }<BR>&nbsp; else pos = maxbars;</DIV><DIV>totdnit=0;<BR>&nbsp; while ((pos &gt;0) &amp;&amp;(!IsStopped())) <BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; totdnit++;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// find potential 1 ie where this bars low is lower than the previous &amp; next <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // or where we have an inside bar<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((pos &gt;0) &amp;&amp; (dn1pos ==-1)) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ((High&#091;pos&#093;&gt;= High&#091;pos+1&#093;) &amp;&amp; (High&#091;pos&#093; &gt;= High&#091;pos-1&#093;))&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || ((High&#091;pos&#093; &lt;= High&#091;pos+1&#093;) &amp;&amp; (Low&#091;pos&#093; &gt; Low&#091;pos+1&#093;)&amp;&amp; (High&#091;pos&#093; &gt; High&#091;pos-1&#093;)) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos =pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we havent found a 1 marker quit to while <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dn1pos ==-1) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we havent got a 2 point &amp; we dont allow 1&amp;2 on same bar then move to next bar<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn1pos == pos) &amp;&amp; ((behaviourswitches &amp; 1) !=1) ) pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos==dn1pos) &amp;&amp; (Open&#091;pos&#093;&gt;= Close&#091;pos&#093;)) dn2pos=pos;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// find potential 2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((pos &gt;0) &amp;&amp; (dn2pos==-1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tv1 =Low&#091;Lowest(NULL,0,MODE_LOW,dn1pos-pos,pos)&#093;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1 point broken then quit trying<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if ((pos !=dn1pos) &amp;&amp; (High&#091;Highest(NULL,0,MODE_HIGH,dn1pos-pos,pos)&#093; &gt; High&#091;dn1pos&#093;)) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((High&#091;pos&#093;&gt;High&#091;dn1pos&#093;)) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if we have broken the top of the 1 bar &amp;&amp; we have the highest high since breaking the top of the 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((tv1 &lt;= Low&#091;dn1pos&#093;) &amp;&amp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;pos&#093; == tv1))&nbsp; dn2pos =pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ///if we havent got a 2 marker then quit to while<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dn2pos ==-1) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos = dn1pos-1; // restart at next bar after previous 1 pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos =-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if pos1&amp;2 on same bar then must move to next<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn1pos == dn2pos) &amp;&amp; (pos == dn1pos)) pos--; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if were not allowing 2&amp;3 on same bar must move to next<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((behaviourswitches &amp; 2) !=2) &amp;&amp; (pos == dn2pos)) pos--; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos==dn2pos) &amp;&amp; (Open&#091;pos&#093; &lt; Close&#091;pos&#093;)) dn3pos=pos;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // find potential 3 marker<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((pos&gt;=0) &amp;&amp; (dn3pos==-1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tv1= High&#091;Highest(NULL,0,MODE_HIGH,dn2pos-pos,pos)&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we break the 1 pos then quit trying<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;pos&#093; &gt; High&#091;dn1pos&#093;) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1&amp;2 on same bar &amp;&amp; this is the lowest low since 1&amp;2 &amp;&amp; there is a lower high than the 2 pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn1pos==dn2pos) &amp;&amp; (High&#091;pos&#093; == High&#091;Highest(NULL,0,MODE_HIGH,dn1pos-pos,pos)&#093;) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;Highest(NULL,0,MODE_LOW,dn1pos-pos,pos)&#093; &gt; Low&#091;dn2pos&#093;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp; ((dn1pos!=dn2pos)&amp;&amp;(pos!=dn2pos)&amp;&amp;(tv1== High&#091;pos&#093;) &amp;&amp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (tv1&gt;= High&#091;dn2pos&#093;))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=pos; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Low&#091;pos&#093; &lt; Low&#091;dn2pos&#093;) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if no 3 marker then contiune from while<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dn3pos==-1) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 1 pos broken so pattern dead start again <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;pos&#093; &gt; High&#091;dn1pos&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos = dn1pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // else cant find 3 for this 12 so move 2 to next pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=dn2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // we now have a 123 so lets see if <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // we can break the 3 (then we search for another 3 with same 1&amp;2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // or trigger the 2 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // or break the 1 then kill the pattern</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((Time&#091;dn1pos&#093; == StrToTime("2006.09.12 12:50")) &amp;&amp; (Time&#091;dn2pos&#093; == StrToTime("2006.09.12 12:55"))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (Time&#091;dn3pos&#093; == StrToTime("2006.09.12 13:10")))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alert("yes");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (pos &gt;=0) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 1 pos broken so pattern dead ... kill it<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;pos&#093; &gt; High&#091;dn1pos&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos = dn1pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if we find a lower 3 point then kill the 3 point &amp; resume main while<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;pos&#093; &gt; High&#091;dn3pos&#093;) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((pos == dn3pos) &amp;&amp; (Low&#091;pos&#093; &lt; Low&#091;dn2pos&#093;) &amp;&amp; (Open&#091;pos&#093; &lt; Close&#091;pos&#093;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=dn2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn2pos==dn3pos) &amp;&amp; (pos!=dn2pos)&amp;&amp; (High&#091;Highest(NULL,0,MODE_HIGH,dn3pos-pos,pos)&#093; &lt; Low&#091;dn3pos&#093;)&amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;Highest(NULL,0,MODE_LOW,dn2pos-pos,pos)&#093; &gt;= Low&#091;dn2pos&#093;) &amp;&amp; (Low&#091;pos&#093;&lt; Low&#091;dn2pos&#093;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if no lower high after 2&amp;3 on same bar then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // keep 1 &amp; kill 3 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn2pos==dn3pos) &amp;&amp; (pos !=dn2pos) &amp;&amp; ((High&#091;Highest(NULL,0,MODE_HIGH,dn3pos-pos,pos)&#093; &gt; High&#091;dn3pos&#093;)||(Low&#091;pos&#093; &lt;Low&#091;dn2pos&#093;) ))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //up2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 2 pos triggered<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((dn2pos != dn3pos) &amp;&amp; (Low&#091;pos&#093; &lt; Low&#091;dn2pos&#093;))// &amp;&amp; (Low&#091;pos&#093; &gt;= Low&#091;up3pos&#093;)) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //((High&#091;pos&#093; &gt; High&#091;up2pos&#093;) &amp;&amp; (up1pos==up2pos)) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock =1; // lock it as triggered<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we have invalidated the 3 point then continue from while <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dn3pos ==-1) continue;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // dismiss it if height is less than reject height<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((High&#091;dn1pos&#093; - Low&#091;dn2pos&#093;) &lt; rejectifheightlessthan *Point)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=dn2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // dont print 123 if 1&amp;2 are on bar 1 &amp; 3 on bar 0 or if 2&amp;3 are on bar 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((dn1pos==dn2pos) &amp;&amp; (dn1pos==1)&amp;&amp; (dn3pos==0)) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((dn2pos==dn3pos)&amp;&amp;(pos==0)) ) continue;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if we have found a 123 that falls within a previous 123 &amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // its trigger point is below the previous trigger point</DIV><DIV><BR>/*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tix=totdnmarkers-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((totdnmarkers &gt;0) &amp;&amp; (tix &gt;-1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dounmarkers&#091;tix&#093;&#091;3&#093; !=0) tix--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((Time&#091;dn3pos&#093; &lt; downmarkers&#091;tix&#093;&#091;2&#093;) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;dn2pos&#093; &gt; Low&#091;iBarShift(NULL,0,downmarkers&#091;tix&#093;&#091;1&#093;,true)&#093; ) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove123(tix,"D");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tix = totdnmarkers-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (totdnmarkers &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((Time&#091;dn3pos&#093; &lt; downmarkers&#091;totdnmarkers-1&#093;&#091;2&#093;) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;dn2pos&#093; &gt; Low&#091;iBarShift(NULL,0,downmarkers&#091;totdnmarkers-1&#093;&#091;1&#093;,true)&#093; ) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove123(totdnmarkers-1,"D");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV><BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((Time&#091;up1pos&#093; == StrToTime("2006.07.28 12:00")) &amp;&amp; (up1pos==up2pos))//&amp;&amp;(Time&#091;up3pos&#093; == StrToTime("2006.07.30 23:00")))<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alert(TimeToStr(Time&#091;up3pos&#093;));</DIV><DIV>&nbsp;</DIV><DIV><BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if user doesnt want any following combo then kill 123<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ((findobatpos(Time&#091;dn1pos&#093;,"Dp2","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 4) != 4)) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((findobatpos(Time&#091;dn1pos&#093;,"Dp3","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 8) != 8))&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=dn1pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos =-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ((findobatpos(Time&#091;dn2pos&#093;,"Dp2","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 16) != 16)) ||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((findobatpos(Time&#091;dn2pos&#093;,"Dp3","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 32) != 32)) || <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((findobatpos(Time&#091;dn2pos&#093;,"Drh","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 256) == 256))&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=dn2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp; ( ((findobatpos(Time&#091;dn3pos&#093;,"Dp2","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 64) != 64)) ||&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((findobatpos(Time&#091;dn3pos&#093;,"Dp3","") &gt; 0) &amp;&amp; ((behaviourswitches &amp; 128) != 128)) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos=dn3pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create 123 markers &amp; save positions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //get number of markers at this bars low * estpiptextheight<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj= (findobatpos(Time&#091;dn1pos&#093;,"","T")+1)*estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create marker<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Dp1,"+DoubleToStr(Time&#091;dn1pos&#093;,0),OBJ_TEXT,0,Time&#091;dn1pos&#093;,High&#091;dn1pos&#093;+yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Dp1,"+DoubleToStr(Time&#091;dn1pos&#093;,0),"1",fontsize,fontname,downcolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj = (findobatpos(Time&#091;dn2pos&#093;,"","B"))*estpiptexth; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Dp2,"+DoubleToStr(Time&#091;dn2pos&#093;,0),OBJ_TEXT,0,Time&#091;dn2pos&#093;,Low&#091;dn2pos&#093;-yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Dp2,"+DoubleToStr(Time&#091;dn2pos&#093;,0),"2",fontsize,fontname,downcolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj= (findobatpos(Time&#091;dn3pos&#093;,"","T")+1)*estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Dp3,"+DoubleToStr(Time&#091;dn3pos&#093;,0),OBJ_TEXT,0,Time&#091;dn3pos&#093;,High&#091;dn3pos&#093;+yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Dp3,"+DoubleToStr(Time&#091;dn3pos&#093;,0),"3",fontsize,fontname,downcolor);</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // resize array &amp; store times of markers &amp; its locked status<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totdnmarkers++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(downmarkers,totdnmarkers);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; downmarkers&#091;totdnmarkers-1&#093;&#091;0&#093; = Time&#091;dn1pos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; downmarkers&#091;totdnmarkers-1&#093;&#091;1&#093; = Time&#091;dn2pos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; downmarkers&#091;totdnmarkers-1&#093;&#091;2&#093; = Time&#091;dn3pos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; downmarkers&#091;totdnmarkers-1&#093;&#091;3&#093; = dn123lock;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // restart checking at 1 bar after either this 123s 1 pos or 2 pos <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (aggression ==1) pos = dn1pos-1; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (aggression==2) pos=dn2pos-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else pos = dn3pos-1;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // reset temp vars for next run<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn1pos =-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn2pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn3pos=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dn123lock=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp; }//while</DIV><DIV>}//func</DIV><DIV><BR>int start()<BR>{<BR>double tmpeh;</DIV><DIV>int ttix2;<BR>string logs;</DIV><DIV><BR>&nbsp; if (maxbars &gt;= Bars) maxbars = Bars-1;<BR>&nbsp; <BR>&nbsp; <BR>&nbsp; if (PipTextHeight == 0) <BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; // see if markers need to be moved <BR>&nbsp;&nbsp;&nbsp; // I.E. auto rescale has occured<BR>&nbsp;&nbsp;&nbsp; tmpeh =getestpiptexth();<BR>&nbsp;&nbsp;&nbsp; if (tmpeh != estpiptexth) <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; estpiptexth = tmpeh;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moveallmarkers();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp; }<BR>&nbsp; else<BR>&nbsp; estpiptexth = (PipTextHeight *Point);<BR>&nbsp;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // remove the most recent up &amp; down 123s if we have any <BR>&nbsp;&nbsp; // and if they havent triggered<BR>&nbsp;&nbsp; if (totupmarkers &gt;0)&nbsp; <BR>&nbsp;&nbsp; if (upmarkers&#091;totupmarkers-1&#093;&#091;3&#093; ==0) deleteoldmarkers("U",totupmarkers-1);<BR>&nbsp;&nbsp; if (totdnmarkers &gt;0) <BR>&nbsp;&nbsp; if (downmarkers&#091;totdnmarkers-1&#093;&#091;3&#093;==0) deleteoldmarkers("D",totdnmarkers-1);<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; //*** remove all rh younger than the last 123 3 pos<BR>&nbsp;&nbsp; if (totuprh &gt;0) removerhpost123("U");<BR>&nbsp;&nbsp; if (totdnrh &gt;0) removerhpost123("D");<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; ttix2 = GetTickCount();<BR>&nbsp;&nbsp; // check for 123s<BR>&nbsp;&nbsp; CheckDowns();<BR>&nbsp;&nbsp; logs= logs + "downs="+DoubleToStr(GetTickCount()-ttix2,0);<BR>&nbsp;&nbsp; ttix2 = GetTickCount();<BR>&nbsp;&nbsp; CheckUps();<BR>&nbsp;&nbsp; logs= logs + " ups="+DoubleToStr(GetTickCount()-ttix2,0);<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; // check if 123s have triggered / failed / or failed/hit target</DIV><DIV>&nbsp;&nbsp; check123locksntargets();<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // check for ross hooks<BR>&nbsp;&nbsp; if (showrosshooks) checkrosshooks();<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // remove most recent bol break markers if we have any<BR>&nbsp;&nbsp; if (totbbdn &gt;0) deleteoldmarkers("DBB",totbbdn-1);<BR>&nbsp;&nbsp; if (totbbup &gt;0) deleteoldmarkers("UBB",totbbup-1);</DIV><DIV>&nbsp;&nbsp; //check for bollinger band breaks<BR>&nbsp;&nbsp; if (showbandbreaks) checkbandbreaks();&nbsp;&nbsp; </DIV><DIV>&nbsp; bfirstrun=false; <BR>&nbsp; <BR>&nbsp; logs=logs+" upiter="+DoubleToStr(totupit,0);<BR>&nbsp; logs=logs+" dniter="+DoubleToStr(totdnit,0);<BR>&nbsp; <BR>//&nbsp; wlog(DoubleToStr(tmptix,0)) ;<BR>// Alert(Period()+"MINS ,",logs);<BR>&nbsp; return(0);<BR>}</DIV><DIV><BR>void removerhpost123(string mtype)<BR>{<BR>&nbsp;if (mtype == "U")<BR>&nbsp;{&nbsp; <BR>&nbsp;&nbsp; while (totuprh &gt;0)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (uprh&#091;totuprh-1&#093; &gt; upmarkers&#091;totupmarkers-1&#093;&#091;2&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Urh,"+DoubleToStr(uprh&#091;totuprh-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Urh,"+DoubleToStr(uprh&#091;totuprh-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totuprh--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(uprh,totuprh);<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; else break;<BR>&nbsp;&nbsp; }<BR>&nbsp;}<BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp;&nbsp; while (totdnrh &gt;0)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (dnrh&#091;totdnrh-1&#093; &gt; downmarkers&#091;totdnmarkers-1&#093;&#091;2&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectDelete("123Drh,"+DoubleToStr(dnrh&#091;totdnrh-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movemarkers("123Drh,"+DoubleToStr(dnrh&#091;totdnrh-1&#093;,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totdnrh--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(dnrh,totdnrh);<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; else break;<BR>&nbsp;&nbsp; }<BR>&nbsp;}<BR>}</DIV><DIV>int getnearest123(int barpos,string mtype)<BR>{<BR>&nbsp;int res;<BR>&nbsp; <BR>&nbsp;if (mtype == "U")<BR>&nbsp;{<BR>&nbsp; // while time of 3 pos &gt; this bar keep moving down 123 array<BR>&nbsp; res = totupmarkers-1;<BR>&nbsp; while ((upmarkers&#091;res&#093;&#091;2&#093; &gt; Time&#091;barpos&#093;) &amp;&amp; (res &gt;0)) res--; <BR>&nbsp;}<BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp; res = totdnmarkers-1;<BR>&nbsp; while ((downmarkers&#091;res&#093;&#091;2&#093; &gt; Time&#091;barpos&#093;) &amp;&amp; (res &gt;0)) res--;<BR>&nbsp;}<BR>&nbsp;return(res);<BR>}</DIV><DIV>void checkrosshooks()<BR>{<BR>int barpos;<BR>int indx123;<BR>int mpos2,mpos1;<BR>int mrhpos,tx;<BR>bool bmarkrh;<BR>double yadj;<BR>string tstr;<BR>&nbsp;&nbsp; // check Up rosshooks<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // if we dont have&nbsp; any 123 ups then cant have rosshooks<BR>&nbsp;&nbsp; if (totupmarkers &gt;0)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; // start at last known up ross hook or at 3 point of 1st 123<BR>&nbsp;&nbsp;&nbsp;&nbsp; // which ever is youngest<BR>&nbsp;&nbsp;&nbsp;&nbsp; barpos = iBarShift(NULL,0,upmarkers&#091;0&#093;&#091;2&#093;,true)-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; tx = barpos;<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (totuprh &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp; tx = iBarShift(NULL,0,uprh&#091;totuprh-1&#093;,true)-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (tx &lt; barpos) barpos=tx;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; while (barpos &gt;0) <BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get index of nearest previous 123 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; indx123 = getnearest123(barpos,"U");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get bar posits of previous 123s 1&amp; 2 pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos2 = iBarShift(NULL,0,upmarkers&#091;indx123&#093;&#091;1&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos1 = iBarShift(NULL,0,upmarkers&#091;indx123&#093;&#091;0&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get bar posit of previous rh that is younger than 3 point of the previous 123&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mrhpos = -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (totuprh &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (uprh&#091;totuprh-1&#093; &gt;= upmarkers&#091;indx123&#093;&#091;2&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mrhpos = iBarShift(NULL,0,uprh&#091;totuprh-1&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bmarkrh=false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we fail to make a new high <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( (High&#091;barpos&#093; &gt; High&#091;mpos2&#093;) &amp;&amp; (High&#091;barpos-1&#093; &lt;= High&#091;barpos&#093;)&amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;mpos1&#093; &lt;= Low&#091;Lowest(NULL,0,MODE_LOW,mpos1-(barpos+1),barpos+1)&#093;) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bmarkrh = true;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we have a rosshook younger than the nearest 123<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // &amp; price failed above Rh then mark as rh<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we are above the 123 2 pos &amp;&amp; we havent broken the 1 pos of 123 in the meantime<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mrhpos &gt;-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;barpos&#093; &lt;= High&#091;mrhpos&#093;) bmarkrh = false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((bmarkrh) &amp;&amp; (barpos &gt;1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tstr = "Rh";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if there is a 123 with 2 point at rh point then kill the 123<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if the user wants us to&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((behaviourswitches &amp; 256) == 256)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (findobatpos(Time&#091;barpos&#093;,"Up2","") &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tstr="RH";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tx = totupmarkers-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (upmarkers&#091;tx&#093;&#091;1&#093; != Time&#091;barpos&#093;) tx--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove123(tx,"U");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj= (findobatpos(Time&#091;barpos&#093;,"","T")+1)*estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create marker<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Urh,"+DoubleToStr(Time&#091;barpos&#093;,0),OBJ_TEXT,0,Time&#091;barpos&#093;,High&#091;barpos&#093;+yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Urh,"+DoubleToStr(Time&#091;barpos&#093;,0),tstr,fontsize,fontname,upcolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totuprh++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(uprh,totuprh);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uprh&#091;totuprh-1&#093; = Time&#091;barpos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; barpos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // check down ross hooks<BR>&nbsp;&nbsp; // if we dont have&nbsp; any 123 downs then cant have rosshooks<BR>&nbsp;&nbsp; if (totdnmarkers &gt;0)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; // start at last known up ross hook or at 3 point of 1st 123<BR>&nbsp;&nbsp;&nbsp;&nbsp; // which ever is youngest<BR>&nbsp;&nbsp;&nbsp;&nbsp; barpos = iBarShift(NULL,0,downmarkers&#091;0&#093;&#091;2&#093;,true)-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; tx = barpos;<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (totdnrh &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp; tx = iBarShift(NULL,0,dnrh&#091;totdnrh-1&#093;,true)-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (tx &lt; barpos) barpos=tx;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; while (barpos &gt;0) <BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get index of nearest previous 123 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; indx123 = getnearest123(barpos,"D");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get bar posits of previous 123s 1&amp; 2 pos<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos2 = iBarShift(NULL,0,downmarkers&#091;indx123&#093;&#091;1&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos1 = iBarShift(NULL,0,downmarkers&#091;indx123&#093;&#091;0&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get bar posit of previous rh that is younger than 3 point of the previous 123&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mrhpos = -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (totdnrh &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dnrh&#091;totdnrh-1&#093; &gt;= downmarkers&#091;indx123&#093;&#091;2&#093;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mrhpos = iBarShift(NULL,0,dnrh&#091;totdnrh-1&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bmarkrh =false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we fail to make a new Low<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( (Low&#091;barpos&#093; &lt; Low&#091;mpos2&#093;) &amp;&amp; (Low&#091;barpos-1&#093; &gt;= Low&#091;barpos&#093;) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (High&#091;mpos1&#093; &gt;= High&#091;Highest(NULL,0,MODE_HIGH,mpos1-(barpos+1),barpos+1)&#093;) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bmarkrh = true;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we have a rosshook younger than the nearest 123<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // &amp; price failed above Rh then mark as rh<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if we are above the 123 2 pos &amp;&amp; we havent broken the 1 pos of 123 in the meantime<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mrhpos &gt;-1) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Low&#091;barpos&#093; &gt;= Low&#091;mrhpos&#093;) bmarkrh = false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((bmarkrh) &amp;&amp; (barpos &gt;1))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tstr = "Rh";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if there is a 123 with 2 point at rh point then kill the 123<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if the user wants us to&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((behaviourswitches &amp; 256) == 256)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (findobatpos(Time&#091;barpos&#093;,"Dp2","") &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tstr= "RH";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tx = totdnmarkers-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (downmarkers&#091;tx&#093;&#091;1&#093; != Time&#091;barpos&#093;) tx--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove123(tx,"D");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj= (findobatpos(Time&#091;barpos&#093;,"","B"))*estpiptexth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create marker<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Drh,"+DoubleToStr(Time&#091;barpos&#093;,0),OBJ_TEXT,0,Time&#091;barpos&#093;,Low&#091;barpos&#093;-yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Drh,"+DoubleToStr(Time&#091;barpos&#093;,0),tstr,fontsize,fontname,downcolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totdnrh++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(dnrh,totdnrh);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dnrh&#091;totdnrh-1&#093; = Time&#091;barpos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; barpos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }</DIV><DIV><BR>}</DIV><DIV><BR>void check123locksntargets()<BR>{<BR>int pos,mpos1,mpos2,mpos3;<BR>int barpos;<BR>double tgtval;</DIV><DIV><BR>&nbsp;//check all non triggerd UP 123s ... delete non triggered&amp;failed&nbsp; or lock triggered<BR>&nbsp;pos=0;<BR>&nbsp;// iterate all up 123s<BR>&nbsp;while (pos &lt; totupmarkers) <BR>&nbsp;{<BR>&nbsp; <BR>&nbsp; // if 123 is not locked<BR>&nbsp; if (upmarkers&#091;pos&#093;&#091;3&#093; ==0)<BR>&nbsp; {<BR>&nbsp;&nbsp; mpos1=iBarShift(NULL,0,upmarkers&#091;pos&#093;&#091;0&#093;,true);<BR>&nbsp;&nbsp; mpos2=iBarShift(NULL,0,upmarkers&#091;pos&#093;&#091;1&#093;,true);<BR>&nbsp;&nbsp; mpos3=iBarShift(NULL,0,upmarkers&#091;pos&#093;&#091;2&#093;,true);<BR>&nbsp;&nbsp; barpos = mpos3-1; <BR>&nbsp;&nbsp; while (barpos &gt;0)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; // if 2 pos is triggered &amp;&amp; didnt break 1 pos on same bar<BR>&nbsp;&nbsp;&nbsp; // then lock as triggerd<BR>&nbsp;&nbsp;&nbsp; if ((High&#091;barpos&#093; &gt; High&#091;mpos2&#093;) &amp;&amp; (Low&#091;barpos&#093; &gt;= Low&#091;mpos1&#093;)) <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; upmarkers&#091;pos&#093;&#091;3&#093; =1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp; // if 1 pos broken then mark it as failed<BR>&nbsp;&nbsp;&nbsp; if (Low&#091;barpos&#093; &lt; Low&#091;mpos1&#093;) <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; upmarkers&#091;pos&#093;&#091;3&#093;=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; barpos--;<BR>&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; // if lock = -1 then delete as its a non triggered &amp; failed<BR>&nbsp; if (upmarkers&#091;pos&#093;&#091;3&#093;==-1)<BR>&nbsp; {<BR>&nbsp;&nbsp; remove123(pos,"U");<BR>&nbsp; }<BR>&nbsp; else<BR>&nbsp; pos++;<BR>&nbsp;}<BR>&nbsp; <BR>&nbsp;// test triggered up 123 for targets <BR>&nbsp;// Set as failed if target not met before 1 pos broken<BR>&nbsp;if (targetstart123 &gt;0)<BR>&nbsp;{<BR>&nbsp;&nbsp; pos =0;<BR>&nbsp;&nbsp; while (pos &lt; totupmarkers)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; //if triggered but not hit target then check it<BR>&nbsp;&nbsp;&nbsp; if (upmarkers&#091;pos&#093;&#091;3&#093; == 1)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos1=iBarShift(NULL,0,upmarkers&#091;pos&#093;&#091;0&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos2=iBarShift(NULL,0,upmarkers&#091;pos&#093;&#091;1&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos3=iBarShift(NULL,0,upmarkers&#091;pos&#093;&#091;2&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tgtval = ((High&#091;mpos2&#093; -Low&#091;mpos1&#093;) * targetpercent123)/100;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (targetstart123 ==1) tgtval = tgtval + Low&#091;mpos1&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (targetstart123 ==2) tgtval = tgtval + High&#091;mpos2&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (targetstart123 ==3) tgtval = tgtval + Low&#091;mpos3&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; barpos = mpos3-1; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (barpos &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; hit target so mark as 3 (triggered &amp; target hit)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;barpos&#093; &gt;= tgtval) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upmarkers&#091;pos&#093;&#091;3&#093; =3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1 pos broken then mark it as failed<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Low&#091;barpos&#093; &lt; Low&#091;mpos1&#093;) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upmarkers&#091;pos&#093;&#091;3&#093;=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; barpos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // recolor markers if its failed target<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (upmarkers&#091;pos&#093;&#091;3&#093; ==2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet("123Up1,"+DoubleToStr(upmarkers&#091;pos&#093;&#091;0&#093;,0),OBJPROP_COLOR,failupcolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet("123Up2,"+DoubleToStr(upmarkers&#091;pos&#093;&#091;1&#093;,0),OBJPROP_COLOR,failupcolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet("123Up3,"+DoubleToStr(upmarkers&#091;pos&#093;&#091;2&#093;,0),OBJPROP_COLOR,failupcolor);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; } <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp; pos++;<BR>&nbsp;&nbsp; }<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;// now do the downs<BR>&nbsp;</DIV><DIV>&nbsp;//check all non triggerd DOWN 123s ... delete non triggered&amp;failed&nbsp; or lock triggered<BR>&nbsp;pos=0;<BR>&nbsp;// iterate all up 123s<BR>&nbsp;while (pos &lt; totdnmarkers) <BR>&nbsp;{<BR>&nbsp; // if 123 is not locked<BR>&nbsp; if (downmarkers&#091;pos&#093;&#091;3&#093; ==0)<BR>&nbsp; {<BR>&nbsp;&nbsp; mpos1=iBarShift(NULL,0,downmarkers&#091;pos&#093;&#091;0&#093;,true);<BR>&nbsp;&nbsp; mpos2=iBarShift(NULL,0,downmarkers&#091;pos&#093;&#091;1&#093;,true);<BR>&nbsp;&nbsp; mpos3=iBarShift(NULL,0,downmarkers&#091;pos&#093;&#091;2&#093;,true);<BR>&nbsp;&nbsp; barpos = mpos3-1; <BR>&nbsp;&nbsp; while (barpos &gt;0)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; // if 2 pos is triggered &amp;&amp; didnt break 1 pos on same bar<BR>&nbsp;&nbsp;&nbsp; // then lock as triggerd<BR>&nbsp;&nbsp;&nbsp; if ((Low&#091;barpos&#093; &lt; Low&#091;mpos2&#093;) &amp;&amp; (High&#091;barpos&#093; &lt;= High&#091;mpos1&#093;)) <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; downmarkers&#091;pos&#093;&#091;3&#093; =1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp; // if 1 pos broken then mark it as failed<BR>&nbsp;&nbsp;&nbsp; if (High&#091;barpos&#093; &gt; High&#091;mpos1&#093;) <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; downmarkers&#091;pos&#093;&#091;3&#093;=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; barpos--;<BR>&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; // if lock = -1 then delete as its a non triggered &amp; failed<BR>&nbsp; if (downmarkers&#091;pos&#093;&#091;3&#093;==-1)<BR>&nbsp; {<BR>&nbsp;&nbsp; remove123(pos,"D");<BR>&nbsp; }<BR>&nbsp; else<BR>&nbsp; pos++;<BR>&nbsp;}</DIV><DIV><BR>&nbsp;// test triggered up 123 for targets <BR>&nbsp;// Set as failed if target not met before 1 pos broken<BR>&nbsp;if (targetstart123 &gt;0)<BR>&nbsp;{<BR>&nbsp;&nbsp; pos =0;<BR>&nbsp;&nbsp; while (pos &lt; totdnmarkers)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; //if triggered but not hit target then check it<BR>&nbsp;&nbsp;&nbsp; if (downmarkers&#091;pos&#093;&#091;3&#093; == 1)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos1=iBarShift(NULL,0,downmarkers&#091;pos&#093;&#091;0&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos2=iBarShift(NULL,0,downmarkers&#091;pos&#093;&#091;1&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpos3=iBarShift(NULL,0,downmarkers&#091;pos&#093;&#091;2&#093;,true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tgtval = ((Low&#091;mpos2&#093; -High&#091;mpos1&#093;) * targetpercent123)/100;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (targetstart123 ==1) tgtval = tgtval + High&#091;mpos1&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (targetstart123 ==2) tgtval = tgtval + Low&#091;mpos2&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (targetstart123 ==3) tgtval = tgtval + High&#091;mpos3&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; barpos = mpos3-1; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (barpos &gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; hit target so mark as 3 (triggered &amp; target hit)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Low&#091;barpos&#093; &lt;= tgtval) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; downmarkers&#091;pos&#093;&#091;3&#093; =3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if 1 pos broken then mark it as failed<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (High&#091;barpos&#093; &gt; High&#091;mpos1&#093;) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; downmarkers&#091;pos&#093;&#091;3&#093;=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; barpos--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // recolor markers if its failed target<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (downmarkers&#091;pos&#093;&#091;3&#093; ==2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet("123Dp1,"+DoubleToStr(downmarkers&#091;pos&#093;&#091;0&#093;,0),OBJPROP_COLOR,faildncolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet("123Dp2,"+DoubleToStr(downmarkers&#091;pos&#093;&#091;1&#093;,0),OBJPROP_COLOR,faildncolor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSet("123Dp3,"+DoubleToStr(downmarkers&#091;pos&#093;&#091;2&#093;,0),OBJPROP_COLOR,faildncolor);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; } <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp; pos++;<BR>&nbsp;&nbsp; }<BR>&nbsp;}<BR>&nbsp;<BR>}</DIV><DIV>// remove a 123 ... delete its markers and then shuffle all other 123s up the marker arrays &amp; resize arrays<BR>void remove123(int posi,string mtype)<BR>{<BR>&nbsp;int x;<BR>&nbsp;if (mtype == "U")<BR>&nbsp;{<BR>&nbsp;&nbsp; ObjectDelete("123Up1,"+DoubleToStr(upmarkers&#091;posi&#093;&#091;0&#093;,0));<BR>&nbsp;&nbsp; movemarkers("123Up1,"+DoubleToStr(upmarkers&#091;posi&#093;&#091;0&#093;,0));<BR>&nbsp;&nbsp; ObjectDelete("123Up2,"+DoubleToStr(upmarkers&#091;posi&#093;&#091;1&#093;,0));<BR>&nbsp;&nbsp; movemarkers("123Up2,"+DoubleToStr(upmarkers&#091;posi&#093;&#091;1&#093;,0));<BR>&nbsp;&nbsp; ObjectDelete("123Up3,"+DoubleToStr(upmarkers&#091;posi&#093;&#091;2&#093;,0)); <BR>&nbsp;&nbsp; movemarkers("123Up3,"+DoubleToStr(upmarkers&#091;posi&#093;&#091;2&#093;,0));<BR>&nbsp;&nbsp; for (x=posi; x &lt; totupmarkers-1;x++)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; upmarkers&#091;x&#093;&#091;0&#093; = upmarkers&#091;x+1&#093;&#091;0&#093;;<BR>&nbsp;&nbsp;&nbsp; upmarkers&#091;x&#093;&#091;1&#093; = upmarkers&#091;x+1&#093;&#091;1&#093;;<BR>&nbsp;&nbsp;&nbsp; upmarkers&#091;x&#093;&#091;2&#093; = upmarkers&#091;x+1&#093;&#091;2&#093;;<BR>&nbsp;&nbsp;&nbsp; upmarkers&#091;x&#093;&#091;3&#093; = upmarkers&#091;x+1&#093;&#091;3&#093;;&nbsp; <BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; totupmarkers--;<BR>&nbsp;&nbsp; ArrayResize(upmarkers,totupmarkers);<BR>&nbsp;}<BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp;&nbsp; ObjectDelete("123Dp1,"+DoubleToStr(downmarkers&#091;posi&#093;&#091;0&#093;,0));<BR>&nbsp;&nbsp; movemarkers("123Dp1,"+DoubleToStr(downmarkers&#091;posi&#093;&#091;0&#093;,0));<BR>&nbsp;&nbsp; ObjectDelete("123Dp2,"+DoubleToStr(downmarkers&#091;posi&#093;&#091;1&#093;,0));<BR>&nbsp;&nbsp; movemarkers("123Dp2,"+DoubleToStr(downmarkers&#091;posi&#093;&#091;1&#093;,0));<BR>&nbsp;&nbsp; ObjectDelete("123Dp3,"+DoubleToStr(downmarkers&#091;posi&#093;&#091;2&#093;,0)); <BR>&nbsp;&nbsp; movemarkers("123Dp3,"+DoubleToStr(downmarkers&#091;posi&#093;&#091;2&#093;,0));<BR>&nbsp;&nbsp; for (x=posi; x &lt; totdnmarkers-1;x++)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; downmarkers&#091;x&#093;&#091;0&#093; = downmarkers&#091;x+1&#093;&#091;0&#093;;<BR>&nbsp;&nbsp;&nbsp; downmarkers&#091;x&#093;&#091;1&#093; = downmarkers&#091;x+1&#093;&#091;1&#093;;<BR>&nbsp;&nbsp;&nbsp; downmarkers&#091;x&#093;&#091;2&#093; = downmarkers&#091;x+1&#093;&#091;2&#093;;<BR>&nbsp;&nbsp;&nbsp; downmarkers&#091;x&#093;&#091;3&#093; = downmarkers&#091;x+1&#093;&#091;3&#093;;&nbsp; <BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; totdnmarkers--;<BR>&nbsp;&nbsp; ArrayResize(downmarkers,totdnmarkers);<BR>&nbsp;}<BR>&nbsp;<BR>}</DIV><DIV>&nbsp;</DIV><DIV>void checkbandbreaks()<BR>{<BR>int pos;<BR>double yadj;<BR>bool bmark;</DIV><DIV>&nbsp;&nbsp; // check upper band breaks<BR>&nbsp; if (totbbup &gt;0)<BR>&nbsp; pos = iBarShift(NULL,0,bbreakup&#091;totbbup-1&#093;,true)-1;<BR>&nbsp; else pos = maxbars;<BR>&nbsp;<BR>&nbsp; while (pos &gt;=0) <BR>&nbsp; {<BR>&nbsp;&nbsp; if (High&#091;pos&#093; &gt; iBands(NULL,0,bandperiod,banddev,0,PRICE_CLOSE,MODE_UPPER,pos))<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; bmark = true;<BR>&nbsp;&nbsp;&nbsp;&nbsp; // if user only wants to see the 1st bb break &amp;&amp; this isnt the 1st then <BR>&nbsp;&nbsp;&nbsp;&nbsp; if ((onlyshow1stbreak) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (High&#091;pos+1&#093; &gt; iBands(NULL,0,bandperiod,banddev,0,PRICE_CLOSE,MODE_UPPER,pos+1)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bmark = false;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; if (bmark)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj = (findobatpos(Time&#091;pos&#093;,"","T")+1)*estpiptexth; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Ubb,"+DoubleToStr(Time&#091;pos&#093;,0),OBJ_TEXT,0,Time&#091;pos&#093;,High&#091;pos&#093;+yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Ubb,"+DoubleToStr(Time&#091;pos&#093;,0),"B",fontsize,fontname,bbreakcolor);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totbbup++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(bbreakup,totbbup);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bbreakup&#091;totbbup-1&#093; = Time&#091;pos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; pos--;<BR>&nbsp; }</DIV><DIV>&nbsp;&nbsp; // check lower band breaks<BR>&nbsp; if (totbbdn &gt;0)<BR>&nbsp; pos = iBarShift(NULL,0,bbreakdn&#091;totbbdn-1&#093;,true)-1;<BR>&nbsp; else pos = maxbars;<BR>&nbsp;<BR>&nbsp; while (pos &gt;=0) <BR>&nbsp; {<BR>&nbsp;&nbsp; if (Low&#091;pos&#093; &lt; iBands(NULL,0,bandperiod,banddev,0,PRICE_CLOSE,MODE_LOWER,pos))<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bmark = true;</DIV><DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((onlyshow1stbreak) &amp;&amp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Low&#091;pos+1&#093; &lt; iBands(NULL,0,bandperiod,banddev,0,PRICE_CLOSE,MODE_LOWER,pos+1)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bmark= false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (bmark)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yadj = (findobatpos(Time&#091;pos&#093;,"","B"))*estpiptexth; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectCreate("123Dbb,"+DoubleToStr(Time&#091;pos&#093;,0),OBJ_TEXT,0,Time&#091;pos&#093;,Low&#091;pos&#093;-yadj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectSetText("123Dbb,"+DoubleToStr(Time&#091;pos&#093;,0),"B",fontsize,fontname,bbreakcolor);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totbbdn++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayResize(bbreakdn,totbbdn);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bbreakdn&#091;totbbdn-1&#093; = Time&#091;pos&#093;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; pos--;<BR>&nbsp; }</DIV><DIV>}<BR></FONT></DIV>]]>
   </description>
   <pubDate>Sat, 17 Mar 2012 19:03:49 +0000</pubDate>
   <guid isPermaLink="true">http://www.bullcharts.com.au/forum/forum_posts.asp?TID=804&amp;PID=2899#2899</guid>
  </item> 
 </channel>
</rss>