[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Increase and decrease a var with two GFX buttons.



PureBytes Links

Trading Reference Links


Slight disappointment this morning.
My nice formula is not as efficient in real time due to 
RequestTimedRefresh random interval.
 From time to time, there is a lag between the click and the code 
action, execution/reaction times are better in static usage (not in RT).

LButtonTrigger = GetCursorMouseButtons() & 1; seems better than & 9

I'am looking for AB built-in improvements better than CTRL R.




reinsley a écrit :
> Thank you Ed, I learn by small step.
> 
> Here is the application that is easier to use than CTRL R.
> 
> It seems that I can't store the default value to retrieve it at the 
> openning, I need a click to display Fibo lines.
> 
> Next evolution will be to use the same formula in two panes without 
> interaction between the vars.
> 
> Best regards
> 
> // Fibonacci with GFX adjustment
> 
> /*
> Fibonacci with GFX adjument by two buttons in right margin
> Easier to use than AB parameters windows.
> Set "Blank bars in the right margin = 10"
> to avoid the following SetChartOptions
> 
> //SetChartOptions( 2, chartHideQuoteMarker );
> 
> */
> 
> RequestTimedRefresh( 1 );
> 
> SetChartBkColor(49);
> 
> function DrawButton( Text, x1, y1, x2, y2, BackColor )
> {
>      GfxSetOverlayMode( 0 );
>      GfxSelectFont( "Tahoma", 12, 800 );
>      GfxSelectPen( colorBlack );
>      GfxSetBkMode( 1 );
>      GfxSelectSolidBrush( BackColor );
>      GfxSetBkColor( BackColor );
>      GfxSetTextColor( 1 );
>      GfxRectangle( x1, y1, x2, y2 );
>      GfxDrawText( Text, x1, y1, x2, y2, 32 | 1 | 4 );
> }
> 
> step = 0.05;
> 
> pds = Param("pds", 0.30, 0.05, 5, 0.05);
> StaticVarSet("pds", pds);
> sDefaultValue= Nz(StaticVarGet("pds"));
> /*
> sDefaultValue = StaticVarGet ( "sDefaultValue" );
> StaticVarSet( "sDefaultValue", 0.30 ); // medium value in 5 minutes 
> timeframe
> 
> _TRACE("sDefaultValue= "+sDefaultValue);
> */
> 
> pxchartwidth = Status( "pxchartwidth" );
> shiftM = 40;
> XOffset  = StaticVarGet( "XOffset" );
> YOffset  = StaticVarGet( "YOffset" );
> XOffset  = pxchartwidth - shiftM ; // X1 minus button
> YOffset  = 0;//Y1 minus button
> SquareSide = 20;
> X1m = XOffset  ;
> X2m = Xoffset + SquareSide ;
> Y1m = YOffset  ;
> Y2m = yOffset + SquareSide ;
> // Draw Minus Button
> DrawButton( "-", Xoffset, yOffset, Xoffset + SquareSide , yOffset + 
> SquareSide , colorRed );
> 
> shiftP = 17;
> XOffsetP  = StaticVarGet( "XOffset" );
> YOffsetP  = StaticVarGet( "YOffset" );
> XOffsetP  = pxchartwidth - shiftP ; // X1 plus button
> YOffsetP  = 0;//Y1 plus button
> X1p = XOffsetP  ;
> X2p = XoffsetP + SquareSide ;
> Y1p = YOffsetP  ;
> Y2p = yOffsetP + SquareSide ;
> // Draw Plus Button
> DrawButton( "+", XoffsetP, yOffsetP, XoffsetP + SquareSide , yOffsetP + 
> SquareSide , colorGreen );
> 
> //LButtonTrigger = GetCursorMouseButtons() & 1;
> LButtonTrigger	= GetCursorMouseButtons() == 9;
> numClicks = Nz( StaticVarGet( "counter" ), sDefaultValue );
> 
> if ( LButtonTrigger )
> {
>      MousePx  = Nz( GetCursorXPosition( 1 ) );
>      MousePy  = Nz( GetCursorYPosition( 1 ) );
> 
>      CursorInMinus = MousePx > X1m AND MousePx < X2m AND MousePy > Y1m 
> AND MousePy < Y2m;
>      CursorInPlus = MousePx > X1p AND MousePx < X2p AND MousePy > Y1p 
> AND MousePy < Y2p;
> 
>      if ( CursorInMinus )
>      {
>          DrawButton( "-", Xoffset, yOffset, Xoffset + SquareSide , 
> yOffset + SquareSide , colorYellow );
>          StaticVarSet( "counter", numClicks - step   );
>      }
> 
>      if ( CursorInPlus )
>      {
>          DrawButton( "+", XoffsetP, yOffsetP, XoffsetP + SquareSide , 
> yOffsetP + SquareSide , colorYellow );
>          StaticVarSet( "counter", numClicks + step   );
>      }
> }
> 
> //Title = "Clicks Counter: " + StaticVarGet( "counter" );
> 
> _SECTION_BEGIN( "Price" );
> //_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} \nOp %g, \nHi 
> %g, \nLo %g, \nCl %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( 
> ROC( C, 1 ) ) ));
> Plot( C, "Close", ParamColor( "Color", colorBlack ), styleNoTitle | 
> styleCandle  | styleThick );
> _SECTION_END();
> 
> _SECTION_BEGIN( "Fibonacci" );
> //Offset = 5; //use two sheets: one with 5 and another with 7, or maybe 
> other offset value
> //Avgmov = Offset * MA( abs( ROC( C, 1 ) ), 20 );
> //per = LastValue( Avgmov );//original value
> per = StaticVarGet( "counter" );//Param( "Pivot %", 0.3, 0.05, 6, 0.05 );
> _TRACE("per = "+per );
> x = Cum( 1 );
> Range = 0.01;
> PS = TroughBars( L, per, 1 ) == 0;
> xa = LastValue( ValueWhen( PS, x, 1 ) );//x from last trough
> Ya = LastValue( ValueWhen( PS, L, 1 ) );//y (Low) last trough
> PR = PeakBars( H, per, 1 ) == 0;
> xb = LastValue( ValueWhen( PR, x, 1 ) );//x from last peak
> Yb = LastValue( ValueWhen( PR, H, 1 ) );//y (High) last peak
> Trough_ReTest = abs( ( L / ya ) - 1 ) < Range;
> Peak_ReTest = abs( ( H / yb ) - 1 ) < Range;
> Trough_Cross = Cross( ya, C );
> Peak_Cross = Cross( C, yb );
> 
> //UP = upSwing DN = downSwing
> UP = xb > xa;
> //upSwing
> DN = xa > xb;
> //DownSwing
> 
> 
> RT23_6 = IIf( UP, yb - ( yb - ya ) * 0.236, IIf( DN, ya + ( yb - ya ) * 
> 0.236, -1e10 ) );
> 
> RT38_2 = IIf( UP, yb - ( yb - ya ) * 0.382, IIf( DN, ya + ( yb - ya ) * 
> 0.382, -1e10 ) );
> 
> RT50_0 = IIf( UP, yb - ( yb - ya ) * 0.500, IIf( DN, ya + ( yb - ya ) * 
> 0.500, -1e10 ) );
> 
> RT61_8 = IIf( UP, yb - ( yb - ya ) * 0.618, IIf( DN, ya + ( yb - ya ) * 
> 0.618, -1e10 ) );
> 
> RT78_6 = IIf( UP, yb - ( yb - ya ) * 0.786, IIf( DN, ya + ( yb - ya ) * 
> 0.786, -1e10 ) );
> 
> RT127_2 = IIf( UP, yb - ( yb - ya ) * 1.272, IIf( DN, ya + ( yb - ya ) * 
> 1.272, -1e10 ) );
> 
> RT161_8 = IIf( UP, yb - ( yb - ya ) * 1.618, IIf( DN, ya + ( yb - ya ) * 
> 1.618, -1e10 ) );
> 
> //RT261_8 = IIf( UP, yb - ( yb - ya ) * 2.618, IIf( DN, ya + ( yb - ya ) 
> * 2.618, -1e10 ) );
> 
> RT = IIf( UP, -100 * ( yb - L ) / ( yb - ya ), 100 * ( H - ya ) / ( yb - 
> ya ) );//Retracement_Value
> 
> InZone = C<yb & C>ya;
> 
> Plot( IIf( x > xa, ya, -1e10 ), "", colorBrown, 1 + 8 );//"Bottom"
> Plot( IIf( x > xb, yb, -1e10 ), "", colorBrown, 1 + 8 );//"Top"
> 
> xab = IIf( xb > xa, xb, xa );
> 
> //Retracements
> 
> Plot( IIf( x >= xab + 1, RT23_6, -1e10 ), "", colorWhite, 1 );//"23,6% 
> Retr."
> 
> Plot( IIf( x >= xab + 1, RT38_2, -1e10 ), "", colorGreen, 1 );//"38,2% 
> Retr."
> 
> Plot( IIf( x >= xab + 1, RT50_0, -1e10 ), "", colorYellow, 1 );//"50,0% 
> Retr."
> 
> Plot( IIf( x >= xab + 1, RT61_8, -1e10 ), "", colorRed, 1 + 8 );//"61,8% 
> Retr."
> 
> Plot( IIf( x >= xab + 1, RT78_6, -1e10 ), "", colorBlue, 1 + 8 
> );//"78,6% Retr."
> 
> Plot( IIf( x >= xab + 1, RT127_2, -1e10 ), "", colorSkyblue, 1 
> );//"127,2% Retr."
> 
> Plot( IIf( x >= xab + 1, RT161_8, -1e10 ), "", colorLavender, 1 
> );//"161,8% Retr."
> 
> //Plot( IIf( x >= xab + 1, RT261_8, -1e10 ), "", colorDarkGreen, 1 
> );//"261,8% Retr."
> 
> _SECTION_END();
> 
> _N( Title =  StrFormat( "{{NAME}} - {{INTERVAL}} {{DATE}} \nOp : %g \nHi 
> : %g \nLo : %g \nCl : %g (%.1f%%) {{VALUES}}\n", O, H, L, C, 
> SelectedValue( ROC( C, 1 ) ) )
>               + "per Fib = " + WriteVal( per, 1.2 ) + " \nCurrent 
> Correction = " + WriteVal( RT, 1.0 ) + "%" );
> 
> 
> Edward Pottasch a écrit :
>> Reinsley,
>>
>> I believe you need to use set and get, like:
>>
>> pds = Param("pds", 10, 5, 100, 1);
>> StaticVarSet("pds", pds);
>> pds = Nz(StaticVarGet("pds"));
>>
>> Title = "pds: " + pds;
>>
>> rgds, Ed
>>
>>
>> ----- Original Message ----- 
>> From: "reinsley" <reinsley@xxxxxxxx>
>> To: <amibroker@xxxxxxxxxxxxxxx>
>> Sent: Sunday, November 08, 2009 2:38 PM
>> Subject: Re: [amibroker] Increase and decrease a var with two GFX buttons.
>>
>>
>>
>> Hello Ed,
>>
>> Yes, I started from examples in the UKB. I missed the library entry,
>> however this code is huge and not easy to understand the vars.
>> Thank you to point this interesting formula, a lot of things to dissect...
>>
>> One of the many issues I met before to see the Aron's example is in the
>> following code.
>> For some reason, the default value is 1 as I expected 10 !
>> AB's rules have reasons that basic user ignores.
>>
>> // param static var
>>
>> pds = Param("pds", 10, 5, 100, 1);
>> pds = StaticVarSet("pds", pds);
>> Title = "pds: " + pds;
>>
>> Best regards
>>
>>
>>
>> Edward Pottasch a écrit :
>>> not sure about the answer to your question but I am sure you know about
>>> the code on buttons that has been published in the UKB. You might also
>>> want to check this library entry which I also still have to study but
>>> looks very interesting:
>>>
>>> http://www.amibroker.com/members/library/formula.php?id=1175
>>> <http://www.amibroker.com/members/library/formula.php?id=1175>
>>>
>>> regards, Ed
>>>
>>>
>>>
>>>
>>>
>>>
>>>     ----- Original Message -----
>>>     *From:* Reinsley <mailto:reinsley@xxxxxxxx>
>>>     *To:* amibroker@xxxxxxxxxxxxxxx <mailto:amibroker@xxxxxxxxxxxxxxx>
>>>     *Sent:* Saturday, November 07, 2009 6:58 PM
>>>     *Subject:* [amibroker] Increase and decrease a var with two GFX 
>>> buttons.
>>>
>>>
>>>
>>>     Hello,
>>>
>>>     I would like to decrease Myparam of 0.25 on each clic inside the red
>>>     button.
>>>
>>>     I complicated with static var but Myparam comes back to 5 as it is
>>>     declared at the beginning of the formula.
>>>
>>>     How to decrease a var with a GFX button ?
>>>
>>>     To give an idea of what I want to do , once this point solved, my
>>>     next step will be to increase of 0.25 the same Myparam with a Plus
>>>     button to adjust a Fibonacci step. I will add Fibonacci code at the
>>>     very end.
>>>
>>>     AB parameters windows lacks some ergonomics in real time.
>>>
>>>     I draw the buttons in the upper right side, after the bars, as quote
>>>     marker will not be activate.
>>>
>>>     Thanks for the help
>>>
>>>     Best regards
>>>
>>>     // draw a red square + inside click
>>>
>>>     //SetChartOptions( 2, chartHideQuoteMarker );
>>>
>>>     Myparam = Param( "TheValue", 5, 0, 5, 0.25 );
>>>     StaticVarSet( "Myparamstat ", Myparam );
>>>
>>>     Myparam = StaticVarGet( "Myparamstat " );
>>>     _TRACE( "Myparamstat = " + Myparam );
>>>
>>>     function DrawButton( Text, x1, y1, x2, y2, BackColor )
>>>     {
>>>     GfxSetOverlayMode( 0 );
>>>     GfxSelectFont( "Tahoma", 12, 800 );
>>>     GfxSelectPen( colorBlack );
>>>     GfxSetBkMode( 1 );
>>>     GfxSelectSolidBrush( BackColor );
>>>     GfxSetBkColor( BackColor );
>>>     GfxSetTextColor( 1 );
>>>     GfxRectangle( x1, y1, x2, y2 );
>>>     GfxDrawText( Text, x1, y1, x2, y2, 32 | 1 | 4 );
>>>     }
>>>
>>>     shift = 40;
>>>     XOffset = StaticVarGet( "XOffset" );
>>>     YOffset = StaticVarGet( "YOffset" );
>>>
>>>     pxchartwidth = Status( "pxchartwidth" );
>>>     XOffset = pxchartwidth - shift ; // X1
>>>     YOffset = 0;//Y1
>>>     SquareSide = 20;
>>>
>>>     X1m = XOffset ;
>>>     X2m = Xoffset + SquareSide ;
>>>     Y1m = YOffset ;
>>>     Y2m = yOffset + SquareSide ;
>>>
>>>     DrawButton( "-", Xoffset, yOffset, Xoffset + SquareSide , yOffset +
>>>     SquareSide , colorRed );
>>>
>>>     LButtonTrigger = GetCursorMouseButtons() == 9;
>>>     _TRACE( "LButtonTrigger = " + LButtonTrigger );
>>>
>>>     if ( LButtonTrigger )
>>>     {
>>>     MousePx = Nz( GetCursorXPosition( 1 ) );
>>>     MousePy = Nz( GetCursorYPosition( 1 ) );
>>>
>>>     CursorInMinus = MousePx > X1m AND MousePx < X2m AND MousePy > Y1m
>>>     AND MousePy < Y2m;
>>>     _TRACE( "CursorInMinus = " + CursorInMinus );
>>>
>>>     if ( CursorInMinus )
>>>     {
>>>     DrawButton( "-", Xoffset, yOffset, Xoffset + SquareSide , yOffset +
>>>     SquareSide , colorYellow );
>>>     Myparam = StaticVarGet( "Myparamstat " );
>>>     Myparam = Myparam - 0.25;
>>>     _TRACE( "Myparamstat2 = " + Myparam );
>>>     RequestTimedRefresh( 1 );
>>>     }
>>>     }
>>>
>>>
>>
>>
>> ------------------------------------
>>
>> **** IMPORTANT PLEASE READ ****
>> This group is for the discussion between users only.
>> This is *NOT* technical support channel.
>>
>> TO GET TECHNICAL SUPPORT send an e-mail directly to
>> SUPPORT {at} amibroker.com
>>
>> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>> http://www.amibroker.com/feedback/
>> (submissions sent via other channels won't be considered)
>>
>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>> http://www.amibroker.com/devlog/
>>
>> Yahoo! Groups Links
>>
>>
>>
>>
>>
>> ------------------------------------
>>
>> **** IMPORTANT PLEASE READ ****
>> This group is for the discussion between users only.
>> This is *NOT* technical support channel.
>>
>> TO GET TECHNICAL SUPPORT send an e-mail directly to 
>> SUPPORT {at} amibroker.com
>>
>> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>> http://www.amibroker.com/feedback/
>> (submissions sent via other channels won't be considered)
>>
>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>> http://www.amibroker.com/devlog/
>>
>> Yahoo! Groups Links
>>
>>
>>
>>
> 
> 
> 
> ------------------------------------
> 
> **** IMPORTANT PLEASE READ ****
> This group is for the discussion between users only.
> This is *NOT* technical support channel.
> 
> TO GET TECHNICAL SUPPORT send an e-mail directly to 
> SUPPORT {at} amibroker.com
> 
> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> http://www.amibroker.com/feedback/
> (submissions sent via other channels won't be considered)
> 
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
> 
> Yahoo! Groups Links
> 
> 
> 
> 



------------------------------------

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    amibroker-digest@xxxxxxxxxxxxxxx 
    amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/