@nsm51,
So you do not want to click on a Watchlist and select a symbol. 
Like @Milosz pointed out that would be ideal, however, I imagine you might want to hide the Watchlist section or might have long Watchlists. And during heat of intensive day trading simply toggle to some other Symbol instead of recalling the steps to reach that Symbol. Sometime back I had written a code but the subject is irrelevant to this topic. Anyways, here is a modified version of it tailored to your requirement. Hope it helps!
procedure SymGfxTxtWdth( List ) {
if( !Nz( StaticVarGet( "InitGfxTxtSz" + GetChartID() ) ) ) {
StaticVarSet( "InitGfxTxtSz" + GetChartID(), 1, False );
GfxTxtSz = 0;
for( i = 0; ( sym = StrExtract( List, i, ',' ) ) != ""; i++ ) GfxTxtSz = IIf( GfxGetTextWidth( sym ) > GfxTxtSz, GfxGetTextWidth( sym ), GfxTxtSz );
StaticVarSet( "GfxTxtSz" + GetChartID(), GfxTxtSz, False );
}
}
function SymPicker( SymList ) {
IsErr = 0;
if( GetAsyncKeyState( 17 ) < 0 && GetAsyncKeyState( 116 ) < 0 ) { // 17 = Ctrl, 116 = F5
SymGfxTxtWdth( SymList );
SymCount = StrCount( SymList, "," ) + 1;
BtnWidth = StaticVarGet( "GfxTxtSz" + GetChartID() ); BtnHight = 20; BtnOffsetXY = 3;
// Stipulated GUI Area
TopLeftPxX = 10; TopLeftPxY = 20;
BotRghtPxX = 200; BotRghtPxY = 200;
// GfxFillSolidRect( TopLeftPxX, TopLeftPxY, BotRghtPxX, BotRghtPxY, colorGrey40 );
if( SymCount > floor( BotRghtPxY / ( BtnHight + 2 * BtnOffsetXY ) * BotRghtPxX / ( BtnWidth + 2 * BtnOffsetXY ) ) ) IsErr = 1;
else {
id = GuiGetEvent( 0, 0 ); event = GuiGetEvent( 0, 1 );
GfxSelectPen( colorBlack, 1 ); GfxSelectSolidBrush( colorWhite );
GuiBtnPxX = TopLeftPxX + BtnOffsetXY; GuiBtnPxY = TopLeftPxY + BtnOffsetXY;
for( i = 1; i <= SymCount; i++ ) {
// Drawing the GUI Buttons
GuiButton( StrExtract( SymList, i - 1, ',' ), i, GuiBtnPxX, GuiBtnPxY, BtnWidth, BtnHight, 1 );
if( GuiBtnPxY > BotRghtPxY - BtnHight - BtnOffsetXY ) {
GuiBtnPxX += BtnWidth + BtnOffsetXY;
GuiBtnPxY = TopLeftPxY + BtnOffsetXY;
}
else GuiBtnPxY += BtnHight + BtnOffsetXY;
// Event triggers upon GUI Button clicks
if( id == i && event ) {
Ticker = StrExtract( SymList, i - 1, ',' );
fC = Foreign( Ticker, "C" );
if( !IsNull( fC[ 0 ] ) ) {
App = CreateObject( "Broker.Application" );
AppActvDoc = App.ActiveDocument;
AppActvDoc.Name = Ticker;
IsErr = 0;
}
else IsErr = 2;
}
}
}
}
else
if( !IsNull( StaticVarGet( "InitGfxTxtSz" + GetChartID() ) ) ) StaticVarSet( "InitGfxTxtSz" + GetChartID(), Null, False );
return IsErr;
}
_SECTION_BEGIN( "Dynamic Symbol Picker" );
// Using ParamStr here but you could use any other list type
FreqSymList = ParamStr( "Freq. Symbol list (comma-separated)", "EURUSD,GBPUSD,JPYUSD,USDCAD" ); // "Freq" means Frequent, "Sym" means Symbol
err = SymPicker( FreqSymList );
switch( err ) {
case 1:
ErrTxt = "Too many GuiButtons to fit in the stipulated area.\nChoose Parameters from Right-click menu and remove some of the unwanted symbols.";
if( !Nz( StaticVarGet( "PopupErr" + GetChartID() ) ) ) {
StaticVarSet( "PopupErr" + GetChartID(), 1, False );
PopupWindow( ErrTxt, "Error 99", 10, -1, -1, -1, -1, 1 );
}
Error( ErrTxt );
break;
case 2:
ErrTxt = "No such symbol exist.\nCheck and change the Parameter string list.";
if( !Nz( StaticVarGet( "PopupErr" + GetChartID() ) ) ) {
StaticVarSet( "PopupErr" + GetChartID(), 1, False );
PopupWindow( ErrTxt, "Error 99", 10, -1, -1, -1, -1, 1 );
}
Error( ErrTxt );
break;
default: // No error
SetChartOptions( 1, chartShowDates );
Plot( C, "Price", colorDefault, styleCandle );
if( !IsNull( StaticVarGet( "PopupErr" + GetChartID() ) ) ) StaticVarSet( "PopupErr" + GetChartID(), Null, False );
/* Do something else */
break;
}
_SECTION_END();
// The timed refresh is just for testing purposes which might be unnecessary during live datafeed and/or as per other segment(s) of your code.
// Also read this KB - When and how often AFL code is executed? (https://www.amibroker.com/kb/2015/02/03/when-and-how-often-afl-code-is-executed/).
RequestTimedRefresh( 1 );
/*_______________________________________________________________________________________________________________________
|This code is for AmiBroker Formula Language (AFL) learning (non-commercial) purposes only. Please do not copy this code|
|(or any other version of it) and paste it over on other forums or anywhere else on the Internet or in any other form |
|without the AmiBroker Forum owner's consent (https://forum.amibroker.com/). |
_______________________________________________________________________________________________________________________*/
// https://forum.amibroker.com/t/create-shortcuts-for-symbols/15573/3?u=cougar
Usage:
Press and hold Ctrl & F5
together for the GUI Buttons to populate on chart. While Ctrl & F5
are held down, click on the GuiButton
for desired symbol to show-up in the ActiveDocument
. Release the keys once done. You may also change the hotkey combination(s) by changing the argument of GetAsyncKeyState() directly from the code.

Otherwise as shown in the examples sought by Milosz, you could also create a customized toolbar.