Algofox premium based startegy
from kite_trade import *
import pyotp
import pandas as pd
import traceback
from datetime import datetime
import Algofox ,Zerodha_Integration
import threading
lock = threading.Lock()
signal_dict={}
once=True
def delete_file_contents(file_name):
try:
# Open the file in write mode, which truncates it (deletes contents)
with open(file_name, 'w') as file:
file.truncate(0)
print(f"Contents of {file_name} have been deleted.")
except FileNotFoundError:
print(f"File {file_name} not found.")
except Exception as e:
print(f"An error occurred: {str(e)}")
def write_to_order_logs(message):
with open('OrderLog.txt', 'a') as file: # Open the file in append mode
file.write(message + '\n')
def read_csv_to_dictionary(file_path):
data_dict = {}
global signal_dict, end_time_str, start_time_str
df = pd.read_csv(file_path)
for index, row in df.iterrows():
strategy_tag = row['STAG']
data_dict[strategy_tag] = row.to_dict()
signal_dict[strategy_tag] = {'CALL': False, 'PUT': False, 'OptionType': None, 'SymbolName': None,'algofoxsym':None,
"expiry": None, "strike": None, "name": None, "Quantity": None,"Target": None,"Stoploss": None,
"T": None,"S": None,"ENTRYTIME":None,"EXITTIME":None,"TgtReEntryCount":0,"SlReEntryCount":0,"TGTRENETRY":None,"SLREENTRY":None,
"EntryPrice":None,"CalTarVal":None,"CalSlVal":None,"InitialTrade":False,"TgtExecuted":False,"SlExecuted":False,"Count":0,"MaxTrades":0,"price_move":None,"Sl_move":None,
"AlgofoxStag":None,'PREMIUMRANGE':None,"PREMIUMUP":None,"PREMIUMDOWN":None,"TRADETYPE":None,"once":False}
# start_time_str = data_dict['STG1']['ENTRYTIME']
# start_time_str = datetime.strptime(start_time_str, '%H:%M').time()
# end_time_str = data_dict['STG1']['EXITTIME']
# end_time_str = datetime.strptime(end_time_str, '%H:%M').time()
return data_dict
data_dict = read_csv_to_dictionary("TradeSettings.csv")
print("Trading Settings : ",data_dict)
def get_zerodha_credentials():
delete_file_contents("OrderLog.txt")
credentials = {}
try:
df = pd.read_csv('ZerodhaCredentials.csv')
for index, row in df.iterrows():
title = row['Title']
value = row['Value']
credentials[title] = value
except pd.errors.EmptyDataError:
print("The CSV file is empty or has no data.")
except FileNotFoundError:
print("The CSV file was not found.")
except Exception as e:
print("An error occurred while reading the CSV file:", str(e))
return credentials
credentials_dict = get_zerodha_credentials()
user_id = credentials_dict.get('ZerodhaUserId') # Login Id
password = credentials_dict.get('ZerodhaPassword') # Login password
fakey = credentials_dict.get('Zerodha2fa')
mode = credentials_dict.get('MODE')
Algofoxid = credentials_dict.get('Algofoxid')
Algofoxpassword = credentials_dict.get('Algofoxpassword')
role = credentials_dict.get('role')
twofa = pyotp.TOTP(fakey)
twofa = twofa.now()
kite = Zerodha_Integration.login(user_id, password, twofa)
AlgofoxUrl = credentials_dict.get('AlgofoxUrl')
Algofox.createurl(AlgofoxUrl)
# Algofox.login_algpfox(username=user_id,password=password,role=role)
instruments = kite.instruments("NFO")
df = pd.DataFrame(instruments)
df.to_csv("Instruments.csv")
def create_database():
global Algofoxid,Algofoxpassword,role,once
if once==True:
try:
df = pd.read_csv("Instruments.csv")
for strategy_tag, data in data_dict.items():
if pd.notna(strategy_tag):
ENTRYTIME = data['ENTRYTIME']
EXITTIME = data['EXITTIME']
signal_dict[strategy_tag]['EXITTIME']=EXITTIME
MaxTrades= data['MaxTrades']
signal_dict[strategy_tag]["MaxTrades"]=MaxTrades
current_time = datetime.now().strftime("%H:%M:%S") # Get the current time with seconds
ENTRYTIME = f"{ENTRYTIME}" # Keep the seconds in ENTRYTIME
EXITTIME = f"{EXITTIME}" # Keep the seconds in EXITTIME
entry_time = datetime.strptime(ENTRYTIME, "%H:%M:%S")
exit_time = datetime.strptime(EXITTIME, "%H:%M:%S")
signal_dict[strategy_tag]['ENTRYTIME'] = entry_time
signal_dict[strategy_tag]['EXITTIME'] = exit_time
TGTRENETRY= int (data['TGTRENETRY'])
SLREENTRY=int (data['SLREENTRY'])
signal_dict[strategy_tag]['TGTRENETRY'] = TGTRENETRY
signal_dict[strategy_tag]['SLREENTRY'] = SLREENTRY
PREMIUMRANGE=float(data['PREMIUMRANGE'])
signal_dict[strategy_tag]['PREMIUMRANGE']=PREMIUMRANGE
signal_dict[strategy_tag]["TRADETYPE"]=data['TRADETYPE']
if entry_time <= datetime.strptime(current_time, "%H:%M:%S") <= exit_time and signal_dict[strategy_tag]["once"]==False:
signal_dict[strategy_tag]["once"]=True
# print(once)
Symbol = data['Symbol']
STAG= data['STAG']
EXPIRY = data['EXPIRY']
EXPIRY = datetime.strptime(EXPIRY, "%d-%m-%Y")
EXPIRY = EXPIRY.strftime("%Y-%m-%d")
OPTIONTYPE = data['OPTIONTYPE']
TARGET=float(data['TARGET'])*0.01
SL=float(data['SL'])*0.01
TRAILINGSL=float(data['TRAILINGSL'])*0.01
signal_dict[strategy_tag]["TRAILINGSL"] = TRAILINGSL
signal_dict[strategy_tag]["CalTarVal"] = TARGET
signal_dict[strategy_tag]["CalSlVal"] = SL
AlgofoxStag= data['AlgofoxStag']
signal_dict[strategy_tag]["AlgofoxStag"] = AlgofoxStag
ENTRYPREMIUM =float(data['ENTRYPREMIUM'])
ENTRYBUFFER= float(data['ENTRYBUFFER'])
Lotsize= int(data['Lotsize'])
per = ENTRYPREMIUM *ENTRYBUFFER
buff_up=ENTRYPREMIUM+per
buff_down =ENTRYPREMIUM-per
print(f"Database creation started for : {Symbol}|{EXPIRY}|{OPTIONTYPE} and StrategyTag {STAG}")
new_df = df[(df['name'] == Symbol) & (df['expiry'] == EXPIRY) & (df['instrument_type'] == OPTIONTYPE)][['tradingsymbol', 'expiry', 'strike', 'name','instrument_type']]
ltp_prices = []
for symbol in new_df['tradingsymbol']:
try:
ltp = Zerodha_Integration.get_ltp_option(symbol)
ltp_prices.append(ltp)
except Exception as e:
print(f"Error in getting ltp for {symbol} and the reson is : {e}")
new_df['ltp_price'] = ltp_prices
new_df = new_df.sort_values(by='ltp_price', ascending=True)
new_df.to_csv("new_df.csv")
filtered_data = []
for index, row in new_df.iterrows():
ltp_price = row['ltp_price']
if buff_down <= ltp_price <= buff_up:
filtered_data.append(
[row['tradingsymbol'], row['expiry'], row['strike'], row['name'],row['instrument_type'], ltp_price])
filtered_df = pd.DataFrame(filtered_data,
columns=['tradingsymbol', 'expiry', 'strike', 'name', 'instrument_type','ltp_price'])
# print(filtered_df)
if filtered_df.empty:
print("No strikes available in entry buffer limit")
else:
signal_dict[strategy_tag]['SymbolName'] = filtered_df['tradingsymbol'].iloc[-1]
signal_dict[strategy_tag]['expiry'] = data['EXPIRY']
date_object = datetime.strptime(signal_dict[strategy_tag]['expiry'], "%d-%m-%Y")
signal_dict[strategy_tag]['expiry'] = date_object.strftime("%d%b%Y")
signal_dict[strategy_tag]['strike'] = filtered_df['strike'].iloc[-1]
signal_dict[strategy_tag]['strike'] = str(signal_dict[strategy_tag]['strike'])
clean_strike = signal_dict[strategy_tag]['strike'].strip()
clean_strike = clean_strike.split("|", 1)[0]
signal_dict[strategy_tag]['strike'] = int(float(clean_strike))
signal_dict[strategy_tag]['name'] = str(filtered_df['name'].iloc[-1])
clean_name = signal_dict[strategy_tag]['name'].strip()
clean_name = clean_name.split("|", 1)[0]
# print("clean_name:", clean_name)
signal_dict[strategy_tag]['name']=clean_name
SymbolName = str(signal_dict[strategy_tag]['SymbolName'])
clean_symbol = SymbolName.strip()
clean_symbol = clean_symbol.split("|", 1)[0]
# print("clean_symbol:",clean_symbol)
signal_dict[strategy_tag]['SymbolName']=clean_symbol
signal_dict[strategy_tag]['OptionType'] = str(filtered_df['instrument_type'].iloc[0])
clean_Option = signal_dict[strategy_tag]['OptionType'].strip()
clean_Option = clean_Option.split("|", 1)[0]
# print("clean_Option:", clean_Option)
signal_dict[strategy_tag]['OptionType']=clean_Option
tradeprice=Zerodha_Integration.get_ltp_option(clean_symbol)
print(tradeprice)
signal_dict[strategy_tag]["EntryPrice"] = tradeprice
Algofoxsym=f"{signal_dict[strategy_tag]['name']}|{signal_dict[strategy_tag]['expiry']}|{signal_dict[strategy_tag]['strike']}|{signal_dict[strategy_tag]['OptionType']}"
signal_dict[strategy_tag]['algofoxsym']=Algofoxsym
signal_dict[strategy_tag]['Quantity']=int(Lotsize)
if signal_dict[strategy_tag]["TRADETYPE"]=="SHORT":
Algofox.Sell_order_algofox(symbol=Algofoxsym,quantity=int(Lotsize),instrumentType="OPTIDX",direction="SHORT",
product="MIS",strategy=signal_dict[strategy_tag]["AlgofoxStag"],order_typ="MARKET",price=float(tradeprice),
username=Algofoxid,password=Algofoxpassword,role=role)
signal_dict[strategy_tag][ "InitialTrade"] = False
signal_dict[strategy_tag]["Count"] += 1
if TARGET>0:
tarper=tradeprice* TARGET
if SL > 0:
slper=tradeprice* SL
signal_dict[strategy_tag]["PREMIUMUP"] =tradeprice+ signal_dict[strategy_tag][
'PREMIUMRANGE']
signal_dict[strategy_tag]["PREMIUMDOWN"] = tradeprice-signal_dict[strategy_tag][
'PREMIUMRANGE']
if TARGET > 0:
signal_dict[strategy_tag]['Target'] = tradeprice-tarper
if SL > 0:
signal_dict[strategy_tag]['Stoploss'] = tradeprice+slper
if TRAILINGSL>0:
tslper = tradeprice * TRAILINGSL
if TRAILINGSL > 0:
signal_dict[strategy_tag]["price_move"] = tradeprice - tslper
signal_dict[strategy_tag]["Sl_move"] =signal_dict[strategy_tag]['Stoploss'] - tslper
# print("signal_dict[strategy_tag]['Target'] :",signal_dict[strategy_tag]['Target'] )
# print("signal_dict[strategy_tag]['Stoploss'] :", signal_dict[strategy_tag]['Stoploss'])
signal_dict[strategy_tag]['T'] = True
signal_dict[strategy_tag]['S'] = True
message=f"{current_time} Sell order placed in {signal_dict[strategy_tag]['SymbolName']} @ {tradeprice}, Tp={signal_dict[strategy_tag]['Target']}, sl={signal_dict[strategy_tag]['Stoploss']} @ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
if signal_dict[strategy_tag]["TRADETYPE"] == "BUY":
Algofox.Buy_order_algofox(symbol=Algofoxsym, quantity=int(Lotsize),
instrumentType="OPTIDX", direction="BUY",
product="MIS",
strategy=signal_dict[strategy_tag]["AlgofoxStag"],
order_typ="MARKET", price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
signal_dict[strategy_tag]["InitialTrade"] = False
signal_dict[strategy_tag]["Count"] += 1
if TARGET > 0:
tarper = tradeprice * TARGET
if SL > 0:
slper = tradeprice * SL
signal_dict[strategy_tag]["PREMIUMUP"]=tradeprice+signal_dict[strategy_tag]['PREMIUMRANGE']
signal_dict[strategy_tag]["PREMIUMDOWN"]=tradeprice-signal_dict[strategy_tag]['PREMIUMRANGE']
if TARGET > 0:
signal_dict[strategy_tag]['Target'] = tradeprice + tarper
if SL > 0:
signal_dict[strategy_tag]['Stoploss'] = tradeprice - slper
if TRAILINGSL > 0:
tslper = tradeprice * TRAILINGSL
if TRAILINGSL > 0:
signal_dict[strategy_tag]["price_move"] = tradeprice + tslper
signal_dict[strategy_tag]["Sl_move"] = signal_dict[strategy_tag]['Stoploss'] + tslper
# print("signal_dict[strategy_tag]['Target'] :",signal_dict[strategy_tag]['Target'] )
# print("signal_dict[strategy_tag]['Stoploss'] :", signal_dict[strategy_tag]['Stoploss'])
signal_dict[strategy_tag]['T'] = True
signal_dict[strategy_tag]['S'] = True
message = f"{current_time} Buy order placed in {signal_dict[strategy_tag]['SymbolName']} @ {tradeprice}, Tp={signal_dict[strategy_tag]['Target']}, sl={signal_dict[strategy_tag]['Stoploss']} @ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
except Exception as e:
traceback.print_exc() # This will print the traceback, including the line number.
print(f"Code not running due to an error: {e}")
def tp_sl(signal_dict):
try:
global Algofoxid,Algofoxpassword,role
current_time = datetime.now().strftime("%H:%M:%S")
for strategy_tag, data in data_dict.items():
if pd.notna(strategy_tag):
if signal_dict[strategy_tag]["TRADETYPE"]=="SHORT" and signal_dict[strategy_tag]['T'] == True and signal_dict[strategy_tag]['S'] == True:
if datetime.strptime(current_time, "%H:%M:%S") >= signal_dict[strategy_tag]['EXITTIME']:
message = f"{current_time} Exit time acheived for {signal_dict[strategy_tag]['SymbolName']} @ {signal_dict[strategy_tag]['AlgofoxStag']} closng open position"
print(message)
write_to_order_logs(message)
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
signal_dict[strategy_tag]['T'] = False
signal_dict[strategy_tag]['S'] = False
Algofox.Cover_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'],
quantity=int(signal_dict[strategy_tag]['Quantity']),
instrumentType="OPTIDX",
direction="COVER",
product="MIS", strategy=signal_dict[strategy_tag]["AlgofoxStag"],
order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
if signal_dict[strategy_tag]["TRADETYPE"] == "BUY" and signal_dict[strategy_tag]['T'] == True and signal_dict[strategy_tag]['S'] == True:
if datetime.strptime(current_time, "%H:%M:%S") >= signal_dict[strategy_tag]['EXITTIME']:
message = f"{current_time} Exit time acheived for {signal_dict[strategy_tag]['SymbolName']} @ {signal_dict[strategy_tag]['AlgofoxStag']} closng open position"
print(message)
write_to_order_logs(message)
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
signal_dict[strategy_tag]['T'] = False
signal_dict[strategy_tag]['S'] = False
Algofox.Sell_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'],
quantity=int(signal_dict[strategy_tag]['Quantity']),
instrumentType="OPTIDX",
direction="SELL",
product="MIS",
strategy=signal_dict[strategy_tag]["AlgofoxStag"],
order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
if signal_dict[strategy_tag]["TRADETYPE"]=="SHORT" and signal_dict[strategy_tag]['T'] == True and signal_dict[strategy_tag]['Target'] is not None and signal_dict[strategy_tag]['Target'] != 0:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
# print(f"{current_time} Current price: ", tradeprice)
if float(tradeprice)<=float(signal_dict[strategy_tag]['Target']) :
signal_dict[strategy_tag]["TgtExecuted"] = True
signal_dict[strategy_tag]["SlExecuted"] = False
signal_dict[strategy_tag]['T'] = False
signal_dict[strategy_tag]['S'] = False
message =f"{current_time} Target executed for {signal_dict[strategy_tag]['SymbolName']} @ {signal_dict[strategy_tag]['Target'] } @ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
Algofox.Cover_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'], quantity=int(signal_dict[strategy_tag]['Quantity']), instrumentType="OPTIDX",
direction="COVER",
product="MIS", strategy=signal_dict[strategy_tag]["AlgofoxStag"], order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
if signal_dict[strategy_tag]["TRADETYPE"]=="BUY" and signal_dict[strategy_tag]['T'] == True and signal_dict[strategy_tag]['Target'] is not None and signal_dict[strategy_tag]['Target'] != 0:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
# print(f"{current_time} Current price: ", tradeprice)
if float(tradeprice)>=float(signal_dict[strategy_tag]['Target']) :
signal_dict[strategy_tag]["TgtExecuted"] = True
signal_dict[strategy_tag]["SlExecuted"] = False
signal_dict[strategy_tag]['T'] = False
signal_dict[strategy_tag]['S'] = False
message =f"{current_time} Target executed for {signal_dict[strategy_tag]['SymbolName']} @ {signal_dict[strategy_tag]['Target'] } @ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
Algofox.Sell_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'], quantity=int(signal_dict[strategy_tag]['Quantity']), instrumentType="OPTIDX",
direction="SELL",
product="MIS", strategy=signal_dict[strategy_tag]["AlgofoxStag"], order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
if signal_dict[strategy_tag]["TRADETYPE"]=="SHORT" and signal_dict[strategy_tag]['S'] == True and signal_dict[strategy_tag]['Stoploss'] is not None and signal_dict[strategy_tag]['Stoploss'] != 0:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
# print(f"{current_time} Current price: ", tradeprice)
if float(tradeprice) >= float(signal_dict[strategy_tag]['Stoploss']):
signal_dict[strategy_tag]["TgtExecuted"] = False
signal_dict[strategy_tag]["SlExecuted"] = True
# signal_dict[strategy_tag]["SlReEntryCount"] += 1
signal_dict[strategy_tag]['S'] = False
signal_dict[strategy_tag]['T'] = False
message = f"{current_time} Stoploss executed for {signal_dict[strategy_tag]['SymbolName']} @ {signal_dict[strategy_tag]['Stoploss']}@ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
Algofox.Cover_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'],
quantity=int(signal_dict[strategy_tag]['Quantity']),
instrumentType="OPTIDX",
direction="COVER",
product="MIS", strategy=signal_dict[strategy_tag]["AlgofoxStag"], order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
if signal_dict[strategy_tag]["TRADETYPE"]=="BUY" and signal_dict[strategy_tag]['S'] == True and signal_dict[strategy_tag]['Stoploss'] is not None and signal_dict[strategy_tag]['Stoploss'] != 0:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
# print(f"{current_time} Current price: ", tradeprice)
if float(tradeprice) <= float(signal_dict[strategy_tag]['Stoploss']):
signal_dict[strategy_tag]["TgtExecuted"] = False
signal_dict[strategy_tag]["SlExecuted"] = True
# signal_dict[strategy_tag]["SlReEntryCount"] += 1
signal_dict[strategy_tag]['S'] = False
signal_dict[strategy_tag]['T'] = False
message = f"{current_time} Stoploss executed for {signal_dict[strategy_tag]['SymbolName']} @ {signal_dict[strategy_tag]['Stoploss']}@ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
Algofox.Sell_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'],
quantity=int(signal_dict[strategy_tag]['Quantity']),
instrumentType="OPTIDX",
direction="SELL",
product="MIS", strategy=signal_dict[strategy_tag]["AlgofoxStag"], order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
if signal_dict[strategy_tag]["TRADETYPE"]=="SHORT" and signal_dict[strategy_tag]['S'] == True and signal_dict[strategy_tag]['T'] == True and signal_dict[strategy_tag]['price_move'] is not None and signal_dict[strategy_tag]['price_move'] != 0:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
if tradeprice <= signal_dict[strategy_tag]["price_move"]:
signal_dict[strategy_tag]["price_move"]=0
signal_dict[strategy_tag]['Stoploss']=signal_dict[strategy_tag]["Sl_move"]
tslper = tradeprice* signal_dict[strategy_tag]["TRAILINGSL"]
signal_dict[strategy_tag]["price_move"] = tradeprice - tslper
signal_dict[strategy_tag]["Sl_move"] = signal_dict[strategy_tag]['Stoploss'] - tslper
message = f"{current_time} Tsl moved for {signal_dict[strategy_tag]['SymbolName']} new stoploss {signal_dict[strategy_tag]['Stoploss']} @ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
if signal_dict[strategy_tag]["TRADETYPE"]=="BUY" and signal_dict[strategy_tag]['S'] == True and signal_dict[strategy_tag]['T'] == True and signal_dict[strategy_tag]['price_move'] is not None and signal_dict[strategy_tag]['price_move'] != 0:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
if tradeprice >= signal_dict[strategy_tag]["price_move"]:
signal_dict[strategy_tag]["price_move"]=0
signal_dict[strategy_tag]['Stoploss']=signal_dict[strategy_tag]["Sl_move"]
tslper = tradeprice* signal_dict[strategy_tag]["TRAILINGSL"]
signal_dict[strategy_tag]["price_move"] = tradeprice + tslper
signal_dict[strategy_tag]["Sl_move"] = signal_dict[strategy_tag]['Stoploss'] + tslper
message = f"{current_time} Tsl moved for {signal_dict[strategy_tag]['SymbolName']} new stoploss {signal_dict[strategy_tag]['Stoploss']} @ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
# reentry conditions
if signal_dict[strategy_tag]["TRADETYPE"]=="SHORT" and signal_dict[strategy_tag]['T'] == False and signal_dict[strategy_tag]['S'] == False and signal_dict[strategy_tag]["TgtExecuted"] == True and signal_dict[strategy_tag]["Count"] <= signal_dict[strategy_tag]["MaxTrades"]:
if signal_dict[strategy_tag]["TgtReEntryCount"]<signal_dict[strategy_tag]["TGTRENETRY"]:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
if float(tradeprice)>=float(signal_dict[strategy_tag]["PREMIUMDOWN"]):
signal_dict[strategy_tag]["TgtReEntryCount"] += 1
signal_dict[strategy_tag]["Count"] += 1
tarper = tradeprice * float( signal_dict[strategy_tag]["CalTarVal"])
slper = tradeprice * float( signal_dict[strategy_tag]["CalSlVal"])
signal_dict[strategy_tag]['T'] = True
signal_dict[strategy_tag]['S'] = True
signal_dict[strategy_tag]['Target'] = tradeprice - tarper
signal_dict[strategy_tag]['Stoploss'] = tradeprice + slper
print("signal_dict[strategy_tag]['Target'] :", signal_dict[strategy_tag]['Target'])
print("signal_dict[strategy_tag]['Stoploss'] :", signal_dict[strategy_tag]['Stoploss'])
signal_dict[strategy_tag]["TgtExecuted"] =False
signal_dict[strategy_tag]["PREMIUMUP"] =tradeprice+ signal_dict[strategy_tag][
'PREMIUMRANGE']
signal_dict[strategy_tag]["PREMIUMDOWN"] =tradeprice- signal_dict[strategy_tag][
'PREMIUMRANGE']
tslper = tradeprice * signal_dict[strategy_tag]["TRAILINGSL"]
signal_dict[strategy_tag]["price_move"] = tradeprice - tslper
signal_dict[strategy_tag]["Sl_move"] = signal_dict[strategy_tag]['Stoploss'] - tslper
message =f"{current_time} Target reentry acheived for {signal_dict[strategy_tag]['SymbolName']} @ {tradeprice} , tp={signal_dict[strategy_tag]['Target']} , sl{signal_dict[strategy_tag]['Stoploss']}@ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
Algofox.Short_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'], quantity=int(signal_dict[strategy_tag]['Quantity']), instrumentType="OPTIDX",
direction="SHORT",
product="MIS", strategy=signal_dict[strategy_tag]["AlgofoxStag"], order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
if signal_dict[strategy_tag]["TRADETYPE"]=="BUY" and signal_dict[strategy_tag]['T'] == False and signal_dict[strategy_tag]['S'] == False and signal_dict[strategy_tag]["TgtExecuted"] == True and signal_dict[strategy_tag]["Count"] <= signal_dict[strategy_tag]["MaxTrades"]:
if signal_dict[strategy_tag]["TgtReEntryCount"]<signal_dict[strategy_tag]["TGTRENETRY"]:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
if float(tradeprice)<=float(signal_dict[strategy_tag]["PREMIUMUP"]):
signal_dict[strategy_tag]["TgtReEntryCount"] += 1
signal_dict[strategy_tag]["Count"] += 1
tarper = tradeprice * float( signal_dict[strategy_tag]["CalTarVal"])
slper = tradeprice * float( signal_dict[strategy_tag]["CalSlVal"])
signal_dict[strategy_tag]['T'] = True
signal_dict[strategy_tag]['S'] = True
signal_dict[strategy_tag]['Target'] = tradeprice + tarper
signal_dict[strategy_tag]['Stoploss'] = tradeprice - slper
signal_dict[strategy_tag]["PREMIUMUP"] = tradeprice+signal_dict[strategy_tag][
'PREMIUMRANGE']
signal_dict[strategy_tag]["PREMIUMDOWN"] = tradeprice-signal_dict[strategy_tag][
'PREMIUMRANGE']
print("signal_dict[strategy_tag]['Target'] :", signal_dict[strategy_tag]['Target'])
print("signal_dict[strategy_tag]['Stoploss'] :", signal_dict[strategy_tag]['Stoploss'])
tslper = tradeprice * signal_dict[strategy_tag]["TRAILINGSL"]
signal_dict[strategy_tag]["price_move"] = tradeprice +tslper
signal_dict[strategy_tag]["Sl_move"] = signal_dict[strategy_tag]['Stoploss'] + tslper
signal_dict[strategy_tag]["TgtExecuted"] =False
message =f"{current_time} Target reentry acheived for {signal_dict[strategy_tag]['SymbolName']} @ {tradeprice} , tp={signal_dict[strategy_tag]['Target']} , sl{signal_dict[strategy_tag]['Stoploss']}@ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
Algofox.Buy_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'], quantity=int(signal_dict[strategy_tag]['Quantity']), instrumentType="OPTIDX",
direction="BUY",
product="MIS", strategy=signal_dict[strategy_tag]["AlgofoxStag"], order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
if signal_dict[strategy_tag]["TRADETYPE"]=="SHORT" and signal_dict[strategy_tag]['T'] == False and signal_dict[strategy_tag]['S'] == False and signal_dict[strategy_tag]["SlExecuted"] == True and signal_dict[strategy_tag]["Count"] <= signal_dict[strategy_tag]["MaxTrades"]:
if signal_dict[strategy_tag]["SlReEntryCount"]<signal_dict[strategy_tag]["SLREENTRY"]:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
if float(tradeprice) <= float(signal_dict[strategy_tag]["PREMIUMUP"]):
signal_dict[strategy_tag]["SlReEntryCount"] += 1
signal_dict[strategy_tag]["Count"] += 1
tarper = tradeprice * float( signal_dict[strategy_tag]["CalTarVal"])
slper = tradeprice * float( signal_dict[strategy_tag]["CalSlVal"])
signal_dict[strategy_tag]["SlExecuted"] =False
signal_dict[strategy_tag]['T'] = True
signal_dict[strategy_tag]['S'] = True
signal_dict[strategy_tag]["PREMIUMUP"] =tradeprice+ signal_dict[strategy_tag][
'PREMIUMRANGE']
signal_dict[strategy_tag]["PREMIUMDOWN"] =tradeprice- signal_dict[strategy_tag][
'PREMIUMRANGE']
signal_dict[strategy_tag]['Target'] = tradeprice - tarper
signal_dict[strategy_tag]['Stoploss'] = tradeprice + slper
print("signal_dict[strategy_tag]['Target'] :", signal_dict[strategy_tag]['Target'])
print("signal_dict[strategy_tag]['Stoploss'] :", signal_dict[strategy_tag]['Stoploss'])
tslper = tradeprice * signal_dict[strategy_tag]["TRAILINGSL"]
signal_dict[strategy_tag]["price_move"] = tradeprice - tslper
signal_dict[strategy_tag]["Sl_move"] = signal_dict[strategy_tag]['Stoploss'] - tslper
message = f"{current_time} Stoploss reentry acheived for {signal_dict[strategy_tag]['SymbolName']} @ {tradeprice}, tp={signal_dict[strategy_tag]['Target']} , sl{signal_dict[strategy_tag]['Stoploss']} @ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
Algofox.Short_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'],
quantity=int(signal_dict[strategy_tag]['Quantity']),
instrumentType="OPTIDX",
direction="SHORT",
product="MIS", strategy=signal_dict[strategy_tag]["AlgofoxStag"], order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
if signal_dict[strategy_tag]["TRADETYPE"]=="BUY" and signal_dict[strategy_tag]['T'] == False and signal_dict[strategy_tag]['S'] == False and signal_dict[strategy_tag]["SlExecuted"] == True and signal_dict[strategy_tag]["Count"] <= signal_dict[strategy_tag]["MaxTrades"]:
if signal_dict[strategy_tag]["SlReEntryCount"]<signal_dict[strategy_tag]["SLREENTRY"]:
tradeprice = Zerodha_Integration.get_ltp_option(signal_dict[strategy_tag]['SymbolName'])
if float(tradeprice) >= float(signal_dict[strategy_tag]["PREMIUMDOWN"]):
signal_dict[strategy_tag]["SlReEntryCount"] += 1
signal_dict[strategy_tag]["Count"] += 1
tarper = tradeprice * float( signal_dict[strategy_tag]["CalTarVal"])
slper = tradeprice * float( signal_dict[strategy_tag]["CalSlVal"])
signal_dict[strategy_tag]["SlExecuted"] =False
signal_dict[strategy_tag]['T'] = True
signal_dict[strategy_tag]['S'] = True
signal_dict[strategy_tag]["PREMIUMUP"] =tradeprice+ signal_dict[strategy_tag][
'PREMIUMRANGE']
signal_dict[strategy_tag]["PREMIUMDOWN"] =tradeprice-signal_dict[strategy_tag][
'PREMIUMRANGE']
signal_dict[strategy_tag]['Target'] = tradeprice + tarper
signal_dict[strategy_tag]['Stoploss'] = tradeprice - slper
print("signal_dict[strategy_tag]['Target'] :", signal_dict[strategy_tag]['Target'])
print("signal_dict[strategy_tag]['Stoploss'] :", signal_dict[strategy_tag]['Stoploss'])
tslper = tradeprice * signal_dict[strategy_tag]["TRAILINGSL"]
signal_dict[strategy_tag]["price_move"] = tradeprice + tslper
signal_dict[strategy_tag]["Sl_move"] = signal_dict[strategy_tag]['Stoploss'] + tslper
message = f"{current_time} Stoploss reentry acheived for {signal_dict[strategy_tag]['SymbolName']} @ {tradeprice}, tp={signal_dict[strategy_tag]['Target']} , sl{signal_dict[strategy_tag]['Stoploss']} @ {signal_dict[strategy_tag]['AlgofoxStag']} "
print(message)
write_to_order_logs(message)
Algofox.Buy_order_algofox(symbol=signal_dict[strategy_tag]['algofoxsym'],
quantity=int(signal_dict[strategy_tag]['Quantity']),
instrumentType="OPTIDX",
direction="BUY",
product="MIS", strategy=signal_dict[strategy_tag]["AlgofoxStag"], order_typ="MARKET",
price=float(tradeprice),
username=Algofoxid, password=Algofoxpassword, role=role)
except Exception as e:
traceback.print_exc() # This will print the traceback, including the line number.
print(f"Code not running due to an error: {e}")
while True :
create_database()
tp_sl(signal_dict)
Comments
Post a Comment