Saturday, 29 October 2016

IB TWS Trading Platform in Python 7

IB TWS Trading Platform in Python 3 part 7 - profit and loss

In this tutorial lesson you will add labels and textboxes to hold the unrealized, realized, and total profit and loss add code to calculate the marked profit and loss for both a long position and a short position Add these variables to your project
        self.unrealized = 0 # used in monitor position
        self.realized = 0   # used in monitor position
        self.unrealized_pnl = 0
        self.realized_pnl = 0
        self.marked_pnl = 0
  Add this to the bottom of the create_widgets() function
        # create label for unrealized
        self.label_unrealized = Label(f1, font=('', 10), text='Unrealized').grid(row=10, column=2)

        # create label for realized
        self.label_realized = Label(f1, font=('', 10), text='Realized').grid(row=10, column=3)

        # create label for Marked
        self.label_Marked = Label(f1, font=('', 10), text='Marked').grid(row=10, column=4)

        # create entry box for unrealized
        self.tbUnrealized = Entry(f1, font=('', 10), width=12, textvariable=varUnrealized).grid(row=11, column=2)

        # create entry box for realized
        self.tbRealized = Entry(f1, font=('', 10), width=11, textvariable=varRealized).grid(row=11, column=3)

        # create entry box for Marked
        self.tbMarked = Entry(f1, font=('', 10), width=11, textvariable=varMarked).grid(row=11, column=4)

  add this code to the bottom of the cbSymbol_onEnter() function they set the text boxes for Position, average price, unrealized, realized, and marked to zero, also the 2 variables realized_pnl, and marked_pnl to zero
        varPosition.set('0')
        varAvgPrice.set('0.00')
        self.realized_pnl = 0
        self.marked_pnl = 0
        varUnrealized.set('0.00')
        varRealized.set('0.00')
        varMarked.set('0.00')
  Add this to the monitor_position() function
        myShares = abs(self.position) # changes negative number to a position number
        varRealized.set(self.realized_pnl)
        if self.position > 0:
            self.unrealized = '%.2f' %((self.last_prices - self.average_price) * myShares)
            varUnrealized.set(self.unrealized)
            self.marked_pnl = '%.2f' %(float(self.unrealized) + float(self.realized_pnl))
            varMarked.set(self.marked_pnl)
        elif self.position < 0:
            self.unrealized = '%.2f' %((self.average_price - self.last_prices) * myShares)
            varUnrealized.set(self.unrealized)
            self.marked_pnl = '%.2f' %(float(self.unrealized) + float(self.realized_pnl))
            varMarked.set(self.marked_pnl)
        else:
            self.marked_pnl = float(self.unrealized_pnl) + float(self.realized_pnl)
            self.marked_pnl = '%.2f' % self.marked_pnl
            self.realized_pnl = '%.2f' % float(self.realized_pnl)
            varUnrealized.set('0.00')             
            varMarked.set(self.marked_pnl)
            varRealized.set(self.realized_pnl)
  add these string variables to the botton with the other textvariables for the 3 Entry boxes (text boxes)
varUnrealized = StringVar()
varRealized = StringVar()
varMarked = StringVar()

Pages: 1 2 3 4 5 6 7 8 9


Save Save Save Save Save Save

No comments:

Post a Comment