Stock Portfolio Organizer

The ultimate porfolio management solution.

Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
For Portfolio Manager Click Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

TWS Trade Plotter for Amibroker (AFL)
kaiji
about 14 years ago
Amibroker (AFL)

Rating:
5 / 5 (Votes 1)
Tags:

Plots auto-exported tws trades

By Yofa

Indicator / Formula

Copy & Paste Friendly
_SECTION_BEGIN("IB Trades");

//********************************************************************************************
// 
// Plotting TWS trade excutions
// Coded by Yofa
// Original experimental code from Herman
//
//********************************************************************************************
//
// Goals: to present TWS real time trade execution data on any price pane.
//
// This code reads the auto exported TWS trade executions file and plots BOT AND SLD transactions on a price pane.
// It is intended for Real-Time intraday trading.
// Tws auto exports only the current trading day's data! 
//
// To use this, you need to configure your TWS to auto export the trade executions list (TWSTrades.csv) each Minute:
// Select Configure-Misc-Auto Export menu in TWS.
// In Auto Export settings window:
//      Check "Activate auto export"
//      Set "Start time", "Stop Time", "Interval" according to your intraday trading
//      Set "Export directory" to "C:\JTS"
//      Set "Export file" to "TWSTrades.csv"
//      Select "Default columns"
//      Check "Write trade times using local time zone"
//      Select "Local sysbol" for "Symbol"
//      Select "," for "Field Delimeter"
//      
// You can manually create export files and concatanate them for the last few days (TWSTradesHistory.csv).
//
//********************************************************************************************
//
// Dependencies
//
//  TWS (892.7) auto export settings (see above)
//
//********************************************************************************************

IBTradesTradeExists = False;
IBTradesPrice = Null;
IBTradesTradeColor = Null;

procedure IBTradesProcessFile(InputFileName)
{
    IBTradesTradeExists = False;
    InputFHandle = fopen(InputFileName, "r");
    if(InputFHandle)
    {
        FirstVisible = Status("firstvisiblebar");
        LastVisible  = Min(Status("lastvisiblebar"), BarCount-1);

        BarDT = DateTime();
        Index = FirstVisible;

	    //skip header line
	    fgets(InputFHandle);

    	//outer loop to go down the file until the EOF or until the last visible bar
	    while(!feof(InputFHandle) AND Index <= LastVisible)
	    {
  	        InputLine = fgets(InputFHandle);
		    if(InputLine != "")
		    {
			    Ticker = StrExtract(InputLine,0);
			    if (StrLeft(Name(), 3) == StrLeft(Ticker, 3))   //may need to customize this (3 is needed for forex)
			    {
			        TradeDate = StrExtract(InputLine,5);
			        TradeDate = StrMid(TradeDate, 4,2) + "/" + StrRight(TradeDate, 2) + "/" + StrLeft(TradeDate, 4);
			        TradeTime = StrExtract(InputLine,4);
			        
		            TradeDT = StrToDateTime(TradeDate + " " + TradeTime);   //Date AND time of the trade (DateTime() precision!) 
	                //inner loop to find the bar for the trade
                    while(Index <= LastVisible AND TradeDT >= BarDT[Index])
                    {
                        //check if next bar's datetime is later than the trade's DateTime
                        if (Index == BarCount-1)
                            NextIsLater = 1;
                        else
                            NextIsLater = TradeDT < BarDT[Index+1];
                            
                        if (TradeDT >= BarDT[Index] AND NextIsLater)
                        {
	                        IBTradesPrice[Index] = StrToNum(StrExtract(InputLine,3));
	                        Action = StrExtract(InputLine,1);
                            if (Action == "SLD")
                                IBTradesTradeColor[Index] = colorRose;
                            else if (Action == "BOT")
                                IBTradesTradeColor[Index] = colorLime;
                            IBTradesTradeExists = True;
                        }
                        Index++;
                    }
			    }
		    }
	    }
	    fclose(InputFHandle);
    }
}

IBTradesProcessFile("C:\\Jts\\TWSTrades.csv");
if (IBTradesTradeExists)
    PlotShapes(IIf(NOT IsNull(IBTradesPrice), shapeSmallCircle, shapeNone),IBTradesTradeColor, 0, IBTradesPrice, 0);

IBTradesProcessFile("C:\\Jts\\TWSTradesHistory.csv");
if (IBTradesTradeExists)
    PlotShapes(IIf(NOT IsNull(IBTradesPrice), shapeSmallCircle, shapeNone),IBTradesTradeColor, 0, IBTradesPrice, 0);

_SECTION_END(); //"IB Trades"

0 comments

Leave Comment

Please login here to leave a comment.

Back