A Subliminal Intraday Trading Tool

Subliminal Messaging

Subliminal messaging involves presenting messages below perceptible visual and auditory levels. Visual messages are displayed for durations too short to be perceived consciously, but long enough to be perceived subconsciously. Auditory subliminal messages are presented with a volume level too low to be heard consciously, but high enough to be heard subconsciously. The assumption is that exposing your subconsciously mind to a repetitive subliminal message, for example “BE HAPPY”, will eventually influence your mood and make you a happier person. The program presented here can present perceptible as well as subliminal messages, audibly and visually, with the aim of improving your trading skills.To read more about Subliminal Messaging visit WikiPedia-Subliminal stimuli.

The purpose of this tool

It has happened to all of us that we place an order only to realize too late that we forgot to check some critical indicator or parameter. Haphazard chart inspections and random system checks result in a lack of confidence, is stressful, delays your action, leads to errors, and will eventually cost you money.

If you are always fully aware of all factors that influence your trading decisions you will trade with greater confidence, greater expediency, less stress, and hopefully with greater profitability.

It is hoped that the tool presented here can help you develop such professional trading habits.

How to use this tool

First you create a checklist of all the tasks you should remember to do but that you are likely to forget. Messages are entered in csv format using a ParamStr(). Use commas to separate messages. Messages should be as short as possible, make them only as long as is needed to make you remember the tasks to perform.

The program reads messages from this checklist and displays them, or reads them to you, at periodic intervals. Messages can be presented sequentially or randomly. To learn you must comply with each prompt.

You can buy similar programs and they seem to work. It seems logical that if you routinely perform the tasks prompted for, these will eventually become habitual. Good practice is, when you get a prompt, to take note if you are already aware of the condition prompted for. This will give you an idea of how good or bad your trading habits are. Eventually you should already know all conditions you are prompted for.

Try to keep the list moderately short so that there is not too much time between the same message. Place the visual prompts at a location where you most often look at your chart, that way they are less of a distraction and can be read more easily and quickly. Use font properties that lets you read the messages at a glance. You should periodically go over the checklist and remove/replace prompts you no longer need.

Technical considerations

To experiment with subliminal sound levels you can set your speaker volume to a barely audible level (at very close range) and then gradually increase their distance until the sound level becomes imperceptible. There are no technical limitation with respect to subliminal audio messaging.

If you have enabled a timed refresh rate of 0.1 second you can obtain a guaranteed minimum message duration of 100 milliseconds. This may be brief but this is not subliminal. If you trade high liquidity instruments and set Preferences -> Intraday -> Real-time chart refresh interval to zero, you might be able to further reduce the message display time and reach subliminal durations.

You can adjust text and background colors in the parameter window. To make messages appear more subliminal, or less obtrusive, you can reduce their contrast with the background. You can do this by setting the text-color to your background-color, clicking ‘more’ at the bottom of the color menu, and then use the color slider to shift the color to select the desired contrast. Here is an example of a “soft” message.

Since I prefer conscious learning, I didn’t spend much time trying to obtain true subliminal performance. However, I added adjustable parameters so that you can experiment with both subliminal and perceptible messaging.

Typical messages

Below are a few arbitrary conditions you might want to check routinely before placing an order. Messages are in upper case, please substitute you own.

    Are we in a Squeeze? BB SQUEEZE.
    What is the BB range? BB RANGE
    Do we have a BB breakout? BB BREAKOUT
    Does the price move have volume support? VOLUME
    Did we have an opening gap? OPEN GAP
    Where are we wrt the Open price? OPEN PRICE
    Where are we wrt the previous Close? PREVIOUS CLOSE
    Where are we wrt the dail Hi/Lo? DAILY HIGH LOW
    What is the daily trend? DAILY TREND
    What is the intraday trend? INTRADAY TREND
    What is the current trade profit? TRADE PROFIT
    What is the current DD? TRADE DRAWDOWN
    What is the trading pattern for this time of day? TIME OF DAY
    How long are we in the trade? TRADE DURATION

Make the message as short as possible, all it needs to do is trigger your memory. You’ll have to create your own list that meets the requirements of your own trading style and system. When a message appears it reminds you to check a condition: you should always comply with the prompt.

Features you can add

This is just a starter program for you to use as a base for further experimentation. Possible features you might like to add:

    Using a dynamic checklist, i.e., you add and remove items depending on market conditions, or depending on system or position status (short list are more effective).
    Use text colors to indicate the importance of checklist items.
    A button to remove the last item displayed from the checklist.
    Beginner and advanced lists.

Programming notes

The program selects messages randomly from a file and displays them briefly for 0-2000 milliseconds, at intervals of 5-60 seconds. You can adjust the following settings in the Parameter window;

// SubTrainer.afl
// You may want to save this formula in an include file so that you can 
// easily append it to your system.
RequestTimedRefresh0.1 );
pxchartwidth Status"pxchartwidth" );
pxchartheight Status"pxchartheight" );

PresMode ParamList"Presentation""VISUAL|AUDIBLE|VISUAL AND AUDIBLE"0);
MsgDuration Max1Param"Display duration (mSec)"2000200010 ) );
MsgInterval Param"Display Interval (Sec)"101300.5 ) * 1000;
RandomMode ParamToggle"Display Mode""SEQUENTIAL,RANDOM");
FontSize Param"Font size"3610112);
FontName ParamStr"Font Name""Lucida Console" );
TextColor ParamColor"Text"colorBlack );
BackColor ParamColor"Background"colorWhite );
OverLayMode Param"Overlay Mode"102);
BackMode Param"Background Mode"112);
XPosition Param"x-Position"50003000);
YPosition Param"y-Position"30003000);

CheckList =
    "BB SQUEEZE,BB RANGE,BB BREAKOUT,VOLUME,OPEN GAP,OPEN PRICE,PREV CLOSE," +
    "DAILY HIGH LOW,DAILY TREND,INTRADAY TREND,TRADE PROFIT,TRADE DRAWDOWN,TIME OF DAY,TRADE DURATION,"// end with comma
Msgs ParamStr"CSV Message List"CheckList );
NumMsgs StrCountCheckList"," );

HRCount GetPerformanceCounterFalse );
MsgTime NzStaticVarGet"MsgTime" ));
if( HRCount MsgTime) 
{
    StaticVarSet"MsgTime"HRCount+MsgInterval );
    StaticVarSet"EndMsgTime"HRCount+MsgDuration );
    if( RandomMode ) 
    {
        PrevMsgIndex StaticVarGet"PrevMsgIndex" );
        MsgIndex mtRandom() * NumMsgs;
        while( PrevMsgIndex == MsgIndex // never repeat the same index
            MsgIndex mtRandom() * NumMsgs;
        
    }
    else
    {
        MsgIndex Nz(StaticVarGet"MsgIndex" )) + 1;
        if( MsgIndex >= NumMsgs MsgIndex 0;
    } 
    StaticVarSet"MsgIndex"MsgIndex );
}

if ( HRCount StaticVarGet"EndMsgTime" ) )
{
    MsgIndex StaticVarGet"MsgIndex" );
    Msg StrExtractCheckListMsgIndex );

    if ( StrFindPresMode"VISUAL" ) )
    {
        GfxSelectFontFontNameFontSize );
        GfxSetTextAlign);// center alignment
        GfxSetTextColorTextColor );
        GfxSetBkModeBackMode ); // 1=transparent, 2=Opaque
        GfxSetOverlayModeOverlayMode ); // 0=Top, 1=under, only
        GfxSetBkColorBackColor );
        GfxTextOutMsgXPositionYPosition );
    }

    if ( StrFindPresMode"AUDIBLE" ) )
    {
        if ( StaticVarGetText"LastMessage" ) != Msg // Say only once
        {
            SayMsgTrue );
            StaticVarSetText"LastMessage"Msg );
        }
    }
}

Title "\n" CheckList// For debug only