Multi directional arrow

multi%20directional%20arrow

I was wondering if it is possible to capture the multi directional arrow that is supplied in amibroker from the code level.

Plotshapes does not have a multi directional arrow nor does GFX low level graphics. At least I could not find it. Any info appreciated.

Hello @Anthony we didnt see here you for long time i hope you doing well :heart_eyes:

If I understood well is, that you want to turn the arrow in deferent angle?

Yes we can do that in GFX by using GfxSelectFont() function and fonts that contains objects

https://www.amibroker.com/guide/afl/gfxselectfont.html

// a simple example afl code of how to rotate a font

Plot( C, "Price", colorDefault, 128 );

GfxSetOverlayMode( 1 );
GfxSetCoordsMode( 1 ); //1 = bar/price mode (instead of pixel)

GfxsetBkMode( 1 ); // 1 set transparent mode
GfxSetTextColor( colorYellow ); GfxSetTextAlign( 6 );

FntRotation= Param( "Font rotation",180,0,3600,1);  
GfxSelectFont( "Wingdings 3", 20, 500, 0, 0, FntRotation );
//GfxSelectFont( "Wingdings 3", 9, 500, 0, 0, 900 ); // vertical fonts

	
fnt = "$";	 //<<<<< selected sample fonts is an arrow
xfonts="Wingdings 3";
x0 = BarCount -2;
y0 = LastValue( ma( c,100));


GfxTextOut(fnt, x0,y0 );

// Also we can use the PlotTextSetFont() function
//PlotTextSetFont( fnt , xfonts, 10, x0,  y0, colorred, colorDefault, 50 );


rotation

9 Likes

Thanks PanoS, that is showing up as a Dollar sign on my computer $.
Where do I find the list of windings ?

1 Like

hi you have to goggle it

or play with below afl
nice to have it as template

// GFXFontSymbol Template By Panos 3-5-2012  
    SetChartBkColor( colorBlack );
	GfxSetBkMode(1);  // me to 1 den exei backround 
FontList = ParamList( "Fonts Name","Webdings|Wingdings 1|Wingdings 2|Wingdings 3|StarFont Sans|Monotype Corsiva|Impact|Marlett ",0);

GfxSelectFont(FontList , 20, 500 ); 
GfxSetTextColor( ParamColor("Fonts Color",colorAqua)); 

GfxTextOut("1 2 3 4 5 6 7 8 9 0 - =", 20, 10 );  //keyboard  first line Numbers
GfxTextOut("! @ # $ % ^ & * () _ +", 550, 10 );  //keyboard first line with Shift pressed

GfxTextOut("q w e r t y u i o p [ ]", 20, 40 );  // 2 line qwerty leters
GfxTextOut("Q W E R T Y U I O P [ ]", 550, 40 ); 

GfxTextOut("a s d f g h j k l ;", 20, 70 );   // 3 line
GfxTextOut("A S D F G H J K L :", 550, 70 ); 

GfxTextOut("z x c v b n m , . /", 20, 100 );   // 4 line
GfxTextOut("| z x C V b n m < > ?", 550, 100 ); 

//  this is just for testing 
GfxSetTextColor( ColorRGB( 100, 200, 100 ) ); 
GfxTextOut(" Type Here ,  ", 20, 140 );  

image

5 Likes

@PanoS @Anthony I wanted to write that to be able to do the full rotation you might want to modify the the param line to allow it to change from 0 to 3600 because the angle is specified in 0.1 degree units:

Arrow%203

... but I have just noticed, that you already modified your post that way :wink:

2 Likes

Hi Milosz

The fun is just started for Antony. As he’s going to spent some time now to make a loop to adjust the angle of the arrow to he’s needs.

Milosz, what have you used for the arrow ?

First arrow:

fnt = "$"; // arrow

Second arrow:

fnt = "a";	// arrow
2 Likes

Whatever I put in fnt comes out exactly at that on the chart, no arrow.

fnt = "$"; dollar sign on my chart
fnt = "a"; small a on my chart

@Anthony Apart from "Wingdings" you can also use UCN/Unicodes. I quote from: http://www.amibroker.com/devlog/wp-content/uploads/2015/03/readme5940.html

AFL: support for UCN (universal character numbers) \uXXXX where XXXX is hexadecimal character code. UCN output works in PlotText/PlotTextSetFont, GfxDrawText, GfxTextOut, Chart titles, Interpretation and Commentary windows. Requires Windows 2000 or higher

For example
heart "\u2764"
sun "\u2600"
star "\u2605"
EURO currency: "\u20ac"
Sigma (greek): "\u03a3"
alpha (greek): "\u03b1"
beta (greek): "\u03b2"
umbrella: "\u2602"
telephone: "\u260e"
hand pointing up "\u261D"

Tables of all UCN/Unicode characters
http://www.unicode.org
http://unicode-table.com/
http://www.unicodemap.org
http://en.wikipedia.org/wiki/List_of_Unicode_characters
Various arrows:
http://www.unicode.org/charts/PDF/U2190.pdf
Enclosed alphanumerics:
http://www.unicode.org/charts/PDF/U2460.pdf

NOT all glyphs (graphical representations of characters) are actually present in current font. This depends on your operating system. For example Segoe UI in Windows 7 has lots of characters, but Windows 8 has more

3 Likes

That means Antony you must look in your PC if you have installed that fonts, or accidently you delete one or most of them.
I cannot help in this. the code should work out of the box.

HINT: try to open word office and type something on Webdings fonts to find out if is there

Thank you PanoS, I am using windows 7. I will have a look around.

Thank you Milosz, I will have a look around.

1 Like

No problem Anthony. But if you still can, please do me a favour and correct this "Milsoz".

Milosz (Miłosz) is a quite nice - at least in my opinion, Slavic name (meaning someone who is loved). It used to be very rare, now it's becoming more and more popular in Poland :wink:

3 Likes

My apologies Milosz hands type faster than mind can transmit sometimes :slight_smile:

1 Like

@Anthony,

As far back as I can remember, Windows has had a utility program called "Character Map", which lives in the "Windows Accessories" folder on Windows 10, but in a similar folder on other versions.

The drop-down at the top has a list of all the fonts available on the PC:
image

, and it shows all of the glyphs available for each one:

image

That should give you plenty to choose from.

5 Likes

Thank you Phase21 very informative. I will look for it in windows 7.

Just for fun…… :slightly_smiling_face:

//@Fossil
Plot(C,"Close",colorDefault,styleCandle);

RequestTimedRefresh( 1 );

CountNo = Nz( StaticVarGet( "CountNumber") );
FlagNo = Nz( StaticVarGet( "FlagNumber") );

if( CountNo == 5 ) StaticVarSet( "FlagNumber", 1 );
else if ( CountNo == 0 ) StaticVarSet( "FlagNumber", 0 );

if(( FlagNo == 0 ) AND (CountNo < 5)) CountNo ++;
else if (CountNo > 0) CountNo --;

StaticVarSet( "CountNumber", CountNo );

GfxSetZOrder(-1);
GfxSetTextAlign(6);
GfxSetTextColor( colorRed);
GfxSelectFont("" , CountNo * 50 + 50, 400, 0, 0, 0); 
GfxTextOut("\u2606", 610, 220 - CountNo * 40 );
2 Likes