Sketch from One Year Back

August 5, 2020 Leave a comment

This is an Elephant sketch from One #year ago i use a pencile then black ink pen.

Follow me on Twitter..

To The Freedom

August 3, 2020 Leave a comment

Another sketche I woke on with watercolor.

Follow me on Twitter

Lily Flower Drawing


Away from Coding and Python projects, drawing is my best way to relax, along with coffee and almost 15min of sketching with pencil then ink-ed it, here is the Lily.

Follow Me on Twitter

Random Sketch


Last night I was going through the Net looking for some Animals phones for my kids to learn there Names and the kind of food each will eat, I came up with this photo of a Giraffe, couldn’t stop myself from the desire to draw it. I use my Galaxy Tab S4 and Autodesk Sketchbook Application to sketch it.. Here it is.. And you may fond more of my sketches on the SKETCHE Page.

Follow me on Twitter Here

Tow Weeks with Kaggle



Several months ago I was looking for some data to test one of my projects, the search take me to KAGGLE page, I spend some time there grab some free data I want; test my project.. DONE!.

Tow weeks ago I was reading an article and the name Kaggle come across, I decide to give the page some more time. I join it, and immediately start to joined one of free courses. I am happy to be there, learning from the community I finish five free courses in Tow Weeks, they have tons of data, highly recommended it.


…… KAGGLE Team ….. Thank you ..



To Download my Python code (.py) files Click-Here




Follow me on Twitter..




By: Ali Radwani




Categories: Uncategorized

Python: Shares Speculation System – Part 4



Learning : Python, DataBase, SQL, SQlite3
Subject: Plan, Design and Build a Shares Speculation System

Project Card:
Project Name: Shares Speculation System
By: Ali
Date: 2.7.2020
Version: V01-2.7.2020

Last time we worked on Budgets Managment for our system, now before we start Buying and Selling shares we need to create list of shares name so we can select from it, we have a table called shares_name this Table have the following fields :
s_id: as a PRIMARY KEY.
full_name: To hold the full name of the share.
abb_name: To hold the Abbreviation of a share name.
The Share Managment section will have four main Functions to Add, Edit, Delete and Show shares. .. Let’s start with it’s Main Menu ..



First Function we will work on will be to Add New Share to the system, we will call it def add_share(): , we will ask the user to input the Share Full Name and its Abbreviation. With Abbreviation we will apply the .upper() function to convert the user input to Upper-case, and for the Full Name we will will apply this code [“ “.join([word.capitalize() for word in user-input] to upper case each first character of the Name. The we will check if the Share Name exist in the DataBase If not we will add it.

 # Add New Share
def add_share() :
        
    os.system('clear')
    print('\n   ====== Add New Share ======\n\n')
    while True :
            
        abb_name = input("   Enter the Abbreviation Name of the Share.. > ").upper() 
        full_name = " ".join([word.capitalize() for word in input('     Enter the Full Name of the Share.. > ').split(" ")])

        c.execute ("select * from shares_name where full_name ='{}' or abb_name = '{}'".format(full_name, abb_name)) 
        share_exist = c.fetchone ()
        if share_exist[0] > 0 :
            print('\n   It seams that the Share Exist in the Database, Name or Abbreviation CAN NOT be Duplicated.')
            print('   Try another Name. ')
        else :      
            c.execute ("INSERT INTO shares_name (full_name , abb_name)  VALUES(:full_name , :abb_name)",{"full_name":full_name, "abb_name":abb_name}) 
            db_conn.commit()
            
        if input ('\n   Do you want to Enter another Share Name?.  [Y,N]. >  ')  not in ['Y','y']: 
            input ('\n    .... Press any key to  Exit.  ')
            return



After adding shares we want to see them and to make sure if every things are fine, so we will write the show_share function, and it will take one argument as inside with default value = ‘Yes’, if we call the function from inside another function the value will be Yes, otherwise it will be ‘No’. Here is the code ..


Next is Editing Share Name, in this function we will call the show_share (‘Yes’) so the user will select the ID of the Share Name to be Edit, then with each attribute we will ask the user ether to Enter the new Edit of the attribute or to press Enter to keep the exist variable. .. Here is a copy of the code ..


Last Function in this Artical is Delete def delete_share() : again we will call the Shoe function to display all the Shares Name on the screen and let the user to select the one to be Deleted by Entering it’s ID.

 # Delete Function.    
def delete_share() :
    os.system('clear')
    print('\n   ====== Delete a Share  ======\n\n')
    
    print('   Here is a list of Shares we have in the System .. \n')
    show_share('Yes')
    
    del_share = input('\n\n   Enter the ID for the Share Name you want to Delete. [Q to Exit] >  ') 

    if del_share in ['q', 'Q'] :
        input ('\n\n    .... Press any key to  Exit.')
        return    
    elif del_share.isnumeric() :
        if (input ('   Are you SURE you want to DELETE Share ID {} ? [Y,N] >  '.format(del_share))) in ['y','Y'] :   
            c.execute ("delete from shares_name where s_id ={}".format(int(del_share))) 
            db_conn.commit()
            input ('\n    ....One Record DELETED. Press any key to  Exit.')
            return
        else :
            input ('\n    ....Share will NOT be Deleted. Press any key to  Exit.')
            return
    else :
        input ('\n    ....Invalid Inpout. Press any key to  Exit.')
        return



Now we can create or Enter a Budget and Enter the Shares Name we have in our Stock Market and we are ready to write the functions to make the transactions.


Coming Up: In Next part we will write the Function to submit/Save Buying and Selling Transactions to our system.


[NOTES]
1. Part-1 has no code file.
2. We are applying some basic Validations on some part of the code, and assuming that the user will not enter a messy data.


:: Shares Speculation System ::

Part 1 Part 2 Part 3 Part 4
Part5



To Download my Python code (.py) files Click-Here




Follow me on Twitter..




By: Ali Radwani




Sketch to Relax


This is a last night Sketch, just to break or stop thinking in codes and functions that are not working well. I think I need to stop codeing for 2-3 Days.

Python: Shares Speculation System – Part 3

July 14, 2020 1 comment


Learning : Python, DataBase, SQL, SQlite3
Subject: Plan, Design and Build a Shares Speculation System

Project Card:
Project Name: Shares Speculation System
By: Ali
Date: 2.7.2020
Version: V01-2.7.2020

In this part we will start writing some codes for our System, we will start with Budget Managment.

Budget: In the Shares Speculation System, and before the user can submit any Buying Transactions the system will check If there is enough money in the Budget Repository, so first we have to Insert a Budget. Therefore, we will start from Budget Managment.
Budget Managment will have five sub-menu as follow:
1. Add New Budget.
2. Withdraw Budget.
3. Edit a Budget.
4. Delete a Budget.
5. Show all Budget.
9. Exit.

So we will start writing the functions for each one.. let’s start with the Budget Menu, we use the while True: loop to keep the Menu until uer_choice == 9 where we return the user to the previous Menu. Here is the code:

Now, lets go through each Function..

Add New Budget: This Function will ask the user to Enter three pieces of information, The Date, The Budget Amount and if the user want to add some Notes such as cheque number or the source of the mouney/fund. For the Date, we want to make sure that the user entry is in the format we want and it is a date, so i wrote a function called date_validation () we will talk about this function later. For the Note part after the user enter the notes we will do (upper-case) for each first character in the text using this code: bud_note = ” “.join([word.capitalize() for word in bud_note.split(” “)]) Here is the full code ..

 # Add New Budget to the system.

def add_budget (): 
    os.system('clear')
    print('\n   ====== Add New Budget ======\n\n') 
    print('   Enter the Details of the Budget..\n')
      
    while True :
        bud_date = input ('   Enter the Date as [dd-mm-yyyy].  >  ') 
        msg = (date_validation (bud_date))
        if msg !='valid' :
            print(msg) 
        else:
            break
    bud_amount = input ('   Enter the Budget Amount.  >  ')
    bud_note = input ('   Enter any Notes if you want. [Hint: Cheque No.] >  ') 
    bud_note = " ".join([word.capitalize() for word in bud_note.split(" ")])    
    c.execute ("INSERT INTO budget_t (bud_date ,bud_amount, bud_note)  VALUES(:bud_date ,:bud_amount, :bud_note)",{"bud_date":bud_date ,"bud_amount":float(bud_amount), "bud_note":bud_note}) 
    db_conn.commit()
          
    input('\n\n        ... Press any Key to Exit')   


For the Budget Date we want the date to be in certain format, so we wrote a function that will take the user_input and check it’s format then return a message back, the message will be ‘Valid’ if the date format is correct, otherwise the message will give a hint if format error as:
Date Not Valid “Bad Year” or Date Not Valid “Bad Month” or Date Not Valid “Bad Day”. Here is the code for the Date Validation Function ..


Next we will write a function so we can withdraw some amount of money from the Budget, Why?? If we assume we start our Shares Speculation with 100,000$ and after several Buying and Selling we gain say 50,000$ as Profits, and we want to use this cash the [50,000$] to buy something; therefore we need to subtract / withdraw from the system. Here is the code to do this and the system will add [ WITHDRAW ] to the Note field.

 # To withdraw form the Budget


def sub_budget (): 
    os.system('clear')
    print('\n   ====== Withdraw from Budget ======\n\n')
    print('   Enter the Details of Withdraw Amount..\n')
    while True :
        bud_date = input ('   Enter the Date as [dd-mm-yyyy].  >  ') 
        msg = (date_validation (bud_date))
        if msg !='valid' :
            print(msg) 
        else:
            break
   
    bud_amount = input ('   Enter the Withdraw Amount.  >  ') 
    if int(bud_amount) > 0 : 
        bud_amount = int(bud_amount) * (-1)
    bud_note = input ('   Enter any Notes if you want. [Hint: Cheque No.] >  ')
    bud_note = "[ WITHDRAW ], " + bud_note 
    bud_note = " ".join([word.capitalize() for word in bud_note.split(" ")])
    c.execute ("INSERT INTO budget_t (bud_date ,bud_amount, bud_note)  VALUES(:bud_date ,:bud_amount, :bud_note)",{"bud_date":bud_date ,"bud_amount":bud_amount, "bud_note": bud_note}) 
    db_conn.commit()
           
    input('\n\n        ... Press any Ket to Exit')   


Now, in both Edit and Delete function we need to show the Budgets we have so the user will select the one for processing. So we will write the code to show Budgets in the system and we will present it as a Table. Here is the code ..

 # To show the Budget Table
        
def show_budget (inside='No'): 
    if inside =='No' :
        os.system('clear')
        print('\n   ====== Show Budgets ======\n\n') 
        print('   List of Budgets ..\n')
    c.execute ("select * from budget_t where bud_id >0") 
    budgets = c.fetchall() 
    print('      {:<10}{:<13}{:<16}{}'.format('ID','Date','Amount','Note'))
    print("    ","-"*70)
    try:
        for x in range(0,len(budgets)) : 
           print("      {:<8}{:<14}{:,}{:0") 
        budget_amount = c.fetchone() 
        print('\n\n    The Total Amount Budgets in the Account is : {:,} '.format(budget_amount[0]))
   
        input('\n   ... Press any key to Exit')   


So we have another two Functions [Edit, Delete] to go, the easyer one is Deleting Budget. In Delete function we will display a table with all Budgets we have in the system and the user will enter the ID of the Budget to be Deleted, we will ask the user to confirm the action then if CONFIRMED the Budget will be Delete. .. Here is the code ..


Last function in this part is to Edit a Budget that we have in the system, to do this we first will display all Budgets we have and the user will Enter the ID of the one to be Edited, we will go through it’s attributes asking the user to Edit or just Press enter to skip and keep the current value. For the Date we will call the date_validation() after user input, and for the Note we will check the Amount if it is Negative we will add “[ WITHDRAW ]” in the beginning of the Note line.

 # Edit Budget Function

def edit_budget (): 
    os.system('clear')
    print('\n   ====== Edit Budget ======\n\n') 
    show_budget (inside='Yes')
    try: 
        edit_budget = input ('\n\n    Select the Budget ID to Edit.  > ')
        c.execute ("select * from budget_t where bud_id ={}".format(int(edit_budget))) 
        e_budget = c.fetchone()
        if e_budget != None: 
            print('\n    You Select to Edit this Budget ..') 
        else:
            print('\n    ID Not Valid ... ')
             
        print('\n       ID: ',e_budget[0])
        print('     Date: ',e_budget[1])
        print('   Amount:  {:,}'.format(e_budget[2]))
        print('     Note: ',e_budget[3])
    
        print('\n\n   Edit Each Attribute OR Press Enter to Skip.. \n')
    
        while True :
            new_b_date = input('   Enter the New Date as [dd-mm-yyyy]. > ')
            if new_b_date >"" : 
                msg = (date_validation (new_b_date))
                if msg !='valid' :
                    print(msg) 
                else:
                    c.execute("update budget_t set bud_date = '{}' where bud_id = {}".format(new_b_date,int(e_budget[0]))) 
                    db_conn.commit() 
                    break    
            elif new_b_date =="" :break
                        
        new_b_amount = input('   Enter the New Amount > ')
        if new_b_amount > "" : 
            if input ('\n   You want to change the Budget Amount From {:,}  To {:,}. CONFIRM [Y,N] > '.format(float(e_budget[2]),float(new_b_amount))) in ['Y','y'] :
                c.execute("update budget_t set bud_amount = '{}' where bud_id = {}".format(float(new_b_amount),int(e_budget[0]))) 
                db_conn.commit() 
        else:
            print('   Budget Amount Not changed..\n')
            
        new_b_note = input('\n   Enter the New Note: > ')
        if new_b_note > "" :
            new_b_note = " ".join([word.capitalize() for word in new_b_note.split(" ")])
            if (e_budget[3])[0] =='[' and int(new_b_amount) < 0 :
                new_b_note = "[ WITHDRAW ], " + new_b_note     
        
            c.execute("update budget_t set bud_note = '{}' where bud_id = {}".format(new_b_note,int(e_budget[0])))          
            db_conn.commit() 
    
        input('\n   ... DONE ...  Press any key to Exit')
    except:
        input('\n       ... Error in User Input.  ... Press any key to Exit ...')


Coming Up: In Next part we will write the menu and the functions for the Shares Managment.

[NOTES]
1. Part-1 has no code file.


:: Shares Speculation System ::

Part 1 Part 2 Part 3 Part 4



To Download my Python code (.py) files Click-Here




Follow me on Twitter..




By: Ali Radwani




Python: Shares Speculation System – Part 2

July 12, 2020 2 comments


Learning : Python, DataBase, SQL, SQlite3
Subject: Plan, Design and Build a Shares Speculation System

Project Card:
Project Name: Shares Speculation System
By: Ali
Date: 2.7.2020
Version: V01-2.7.2020

In this part we will set the database connection, create the Tables and Insert the Zero records. So first let’s do the Import and the database connection..

# Database connection

import sqlite3, os 

# Create the data-base and name it as Share_S_System. 
db_conn = sqlite3.connect ("Share_S_System.db") 

# Set the connection. 
c = db_conn.cursor() 


Now we will write the function to creates the Tables, we have five tables and this could be change during the project.

# Code to create the Tables

def create_tables_() :
    # to create tables. 
    sql_share_t =    "CREATE TABLE if not exists shares_name  (s_id INTEGER PRIMARY KEY AUTOINCREMENT, full_name text, abb_name text )" 
        
    sql_buy_t_t =   "CREATE TABLE if not exists buy_t_table (bt_id INTEGER PRIMARY KEY AUTOINCREMENT ,buy_date text, sn_id integer, buy_amount integer, buy_price float, cost float)" 
    
    sql_sell_t_t  = "CREATE TABLE if not exists sell_t_table (st_id INTEGER PRIMARY KEY AUTOINCREMENT, sell_date text, sn_id integer, sell_amount integer, sell_price float, profit float)" 
 
    sql_budget_t  = "CREATE TABLE if not exists budget_t (bud_id INTEGER PRIMARY KEY AUTOINCREMENT, bud_date text, bud_amount float, bud_note text )"  

    sql_year_roi =  "CREATE TABLE if not exists year_roi (y_id INTEGER PRIMARY KEY AUTOINCREMENT, bud_amount float, profits float, costs float, roi float, t_buy float, t_sell float )"

    c.execute(sql_share_t) 
    db_conn.commit() 
    c.execute(sql_buy_t_t) 
    db_conn.commit() 
    c.execute(sql_sell_t_t)
    db_conn.commit()        
    c.execute(sql_budget_t) 
    db_conn.commit() 
    c.execute(sql_year_roi) 
    db_conn.commit()  

    input('\n .. Shares Speculation System Tables created.. Press any key .. ') 


Next we will Insert a ‘Zero’ records in the Tables, this weill set the ID’s field in each table to ‘0’ so with next records the AUTOINCREMENT will work as it should. here is the code ..


Last function in this part will be the Main-Menu of the system. The system will have five Menus each one will have it’s own page and functions to manage it, we will write all the needed functions. Here is the Main-Menu.


Coming Up: In Next part we will write the menu and the functions for the Budget Managment.

[NOTES]
1. Part-1 has no code file.


:: Shares Speculation System ::

Part 1 Part 2 Part 3 Part 4



To Download my Python code (.py) files Click-Here




Follow me on Twitter..




By: Ali Radwani




Python: Shares Speculation System – P1

July 7, 2020 3 comments


Learning : Python, SQL, SQlite,
Subject: Plan, Design and Build a Shares Speculation System (SSS)

Project Card:

Project Name: Shares Speculation System

First Draft on: 26.6.2020

Version: V01-26.6.2020

By: Ali

Brief: In this Project we will work on a Shares Speculation System (SSS) were the user can save transactions regarding his investments in the stock market.

The Project Idea: A person who works on Shares Speculation looking for a System to keep the records for his transactions and calculate the Profits and Return Of Investment ROI ratio based on Daily, Monthly or Yearly tansactions.

Scope of Work: We will use Python to writing the codes and will store the transactions in a DataBase using SQlite3.

System Tabels:
1. Shares_table (shares_name): To contain Shares Full Name and it’s Abbreviation.
2. Buy_Transactions_table (buy_t_table): To hold all buying transactions [Date, Share Name, Amount, Price, cost]
3. Sell_transaction_table (sell_t_table): To hold all selling transactions [Date, Share Name, Amount, Price, profit]
4. Budget_table (budget_t): To hold the budgets of the Shares Speculation [ Date, amount, notes
[Notes: With Budgets we can do two type of Transactions, Adding New budget will increases the Money to be Invested, also the user can withdrawal some amount of the money.]
5. Year_ROI (y_roi): After each year (end of the current year) there will be a function to be RUN and it will calculate the Total Investments, Budgets, Profits, Costs, ROI, Total Buy Transactions, Total Sell Transactions … maybe other all in one table and will store all this as a one line/record in the table.

System Functions:
For each table, we will have three main functions Add, Edit and Delete. Also we will write a Menu to access each Function and some Math/Economics formulas to calculate the Investments, Profits and ROI.

How the System Works:
The idea is, FIRST the user will create a Budget Profile, (Date, Budget Amount). Then each time the user buy or sell shares, the system will add a record saving the Transactions type and detail. If the Transaction is Buying then We will Debit the Transaction Total from the budget we have in the system
and if the transaction type is Selling we will Add the Income to the Budget.


:: Shares Speculation System ::

Part 1 Part 2 Part 3 Part 4



To Download my Python code (.py) files Click-Here




Follow me on Twitter..




By: Ali Radwani