Skip to content

Instantly share code, notes, and snippets.

@tg12
Last active December 15, 2023 19:35
Show Gist options
  • Star 13 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save tg12/4dc0107b5b45fd91dd15fbd5b16f593c to your computer and use it in GitHub Desktop.
Save tg12/4dc0107b5b45fd91dd15fbd5b16f593c to your computer and use it in GitHub Desktop.
IG Index Fully Automated Trading for Small Cap and FTSE250 Stocks
import numpy
import pandas
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from scipy import stats
import math
import requests
import json
import time
import random
from time import localtime, strftime
import datetime
import calendar
from random import shuffle
import pytz
#####################################
# Error Handling
import traceback
import sys
set(pytz.all_timezones_set)
YEAR_var = 2018
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
# NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE
# DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY,
# WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# ALL EPICS
main_epic_ids = [
'KA.D.GPE.DAILY.IP',
'KA.D.GYMLN.DAILY.IP',
'KA.D.GMSLN.DAILY.IP',
'KA.D.GKP.DAILY.IP',
'KA.D.GELLN.DAILY.IP',
'KA.D.GDLLN.DAILY.IP',
'KA.D.GRG.DAILY.IP',
'KA.D.GKO.DAILY.IP',
'KA.D.GNK.DAILY.IP',
'KA.D.GNC.DAILY.IP',
'KA.D.UKWLN.DAILY.IP',
'KA.D.GRPLN.DAILY.IP',
'KA.D.GPOR.DAILY.IP',
'KA.D.GRPHLN.DAILY.IP',
'KA.D.GRI.DAILY.IP',
'KA.D.GFTU.DAILY.IP',
'KA.D.GDWN.DAILY.IP',
'KA.D.GHH.DAILY.IP',
'KA.D.GPRT.DAILY.IP',
'KA.D.GOCOLN.DAILY.IP',
'KA.D.GOG.DAILY.IP',
'KA.D.GBOLN.DAILY.IP',
'KA.D.GPHLN.DAILY.IP',
'KA.D.GLVLN.DAILY.IP',
'KA.D.GLEN.DAILY.IP',
'KA.D.GSK.DAILY.IP',
'KA.D.GVC.DAILY.IP',
'KA.D.GDG.DAILY.IP',
'KA.D.HMBLN.DAILY.IP',
'KA.D.IOM.DAILY.IP',
'KA.D.IAE.DAILY.IP',
'KA.D.IOFI.DAILY.IP',
'KA.D.IWGLN.DAILY.IP',
'KA.D.ITV.DAILY.IP',
'KA.D.ITM.DAILY.IP',
'KA.D.ITE.DAILY.IP',
'KA.D.IQE.DAILY.IP',
'KA.D.IPO.DAILY.IP',
'KA.D.MTEC.DAILY.IP',
'KA.D.GVM.DAILY.IP',
'KA.D.EMG.DAILY.IP',
'KA.D.MMCLN.DAILY.IP',
'KA.D.MPO.DAILY.IP',
'KA.D.MAJE.DAILY.IP',
'KA.D.MJW.DAILY.IP',
'KA.D.MNL.DAILY.IP',
'KA.D.MNP.DAILY.IP',
'KA.D.MKTLN.DAILY.IP',
'KA.D.MKS.DAILY.IP',
'KA.D.MSLH.DAILY.IP',
'KA.D.MARS.DAILY.IP',
'KA.D.MCP.DAILY.IP',
'KA.D.MXP.DAILY.IP',
'KA.D.MCB.DAILY.IP',
'KA.D.MCKS.DAILY.IP',
'KA.D.MCLSLN.DAILY.IP',
'KA.D.MCSLN.DAILY.IP',
'KA.D.MXCTLN.DAILY.IP',
'KA.D.QLTLN.DAILY.IP',
'KA.D.QPLN.DAILY.IP',
'KA.D.QUIZLN.DAILY.IP',
'KA.D.QIFLN.DAILY.IP',
'KA.D.QFILN.DAILY.IP',
'KA.D.QQ.DAILY.IP',
'KA.D.YNGA.DAILY.IP',
'KA.D.ZTF.DAILY.IP',
'KA.D.ZIOC.DAILY.IP',
'KA.D.ZPLALN.DAILY.IP',
'KA.D.ACL.DAILY.IP',
'KA.D.AMI.DAILY.IP',
'KA.D.AFRLN.DAILY.IP',
'KA.D.AMSLN.DAILY.IP',
'KA.D.ADMLN.DAILY.IP',
'KA.D.ACD.DAILY.IP',
'KA.D.AXSLN.DAILY.IP',
'KA.D.ABGLN.DAILY.IP',
'KA.D.ASITLN.DAILY.IP',
'KA.D.ASL.DAILY.IP',
'KA.D.EUK.DAILY.IP',
'KA.D.ASLILN.DAILY.IP',
'KA.D.BRAL.DAILY.IP',
'KA.D.ANW.DAILY.IP',
'KA.D.ABD.DAILY.IP',
'KA.D.ADMF.DAILY.IP',
'KA.D.AAS.DAILY.IP',
'KA.D.AAIF.DAILY.IP',
'KA.D.ABCLN.DAILY.IP',
'KA.D.AGIZLN.DAILY.IP',
'KA.D.AGITLN.DAILY.IP',
'KA.D.AFRB.DAILY.IP',
'KA.D.AFCLN.DAILY.IP',
'KA.D.ADESLN.DAILY.IP',
'KA.D.AALN.DAILY.IP',
'KA.D.ALBKLN.DAILY.IP',
'KA.D.AGK.DAILY.IP',
'KA.D.AIP.DAILY.IP',
'KA.D.WNL.DAILY.IP',
'KA.D.ANHLN.DAILY.IP',
'KA.D.AEFSLN.DAILY.IP',
'KA.D.ALDM.DAILY.IP',
'KA.D.AMGOLN.DAILY.IP',
'KA.D.ANLN.DAILY.IP',
'KA.D.APHLN.DAILY.IP',
'KA.D.RTT.DAILY.IP',
'KA.D.ALMLN.DAILY.IP',
'KA.D.ALFLN.DAILY.IP',
'KA.D.ATST.DAILY.IP',
'KA.D.ALFALN.DAILY.IP',
'KA.D.AMERLN.DAILY.IP',
'KA.D.AMC.DAILY.IP',
'KA.D.MDCLN.DAILY.IP',
'KA.D.AOLN.DAILY.IP',
'KA.D.ARWLN.DAILY.IP',
'KA.D.AEN.DAILY.IP',
'KA.D.APAXLN.DAILY.IP',
'KA.D.ANTO.DAILY.IP',
'KA.D.AEPLN.DAILY.IP',
'KA.D.APF.DAILY.IP',
'KA.D.AAL.DAILY.IP',
'KA.D.AAOGLN.DAILY.IP',
'KA.D.ARM.DAILY.IP',
'KA.D.ARBBLN.DAILY.IP',
'KA.D.NLGLN.DAILY.IP',
'KA.D.ARIXLN.DAILY.IP',
'KA.D.AQP.DAILY.IP',
'KA.D.ATS.DAILY.IP',
'KA.D.AGOLLN.DAILY.IP',
'KA.D.AGOULN.DAILY.IP',
'KA.D.ASC.DAILY.IP',
'KA.D.APTLN.DAILY.IP',
'KA.D.AV.DAILY.IP',
'KA.D.AVON.DAILY.IP',
'KA.D.ASHM.DAILY.IP',
'KA.D.AHT.DAILY.IP',
'KA.D.HPI.DAILY.IP',
'KA.D.ABF.DAILY.IP',
'KA.D.AGRLN.DAILY.IP',
'KA.D.AZN.DAILY.IP',
'KA.D.ATK.DAILY.IP',
'KA.D.ATMALN.DAILY.IP',
'KA.D.AUTOLN.DAILY.IP',
'KA.D.AVN.DAILY.IP',
'KA.D.AVV.DAILY.IP',
'KA.D.ASCLLN.DAILY.IP',
'KA.D.AVSTLN.DAILY.IP',
'KA.D.AVM.DAILY.IP',
'KA.D.BA.DAILY.IP',
'KA.D.BAG.DAILY.IP',
'KA.D.BHMULN.DAILY.IP',
'KA.D.BKMALN.DAILY.IP',
'KA.D.BACLN.DAILY.IP',
'KA.D.BOCHLN.DAILY.IP',
'KA.D.BWOLN.DAILY.IP',
'KA.D.BWY.DAILY.IP',
'KA.D.BZM.DAILY.IP',
'KA.D.BIFFLN.DAILY.IP',
'KA.D.BPCRLN.DAILY.IP',
'KA.D.BRCI.DAILY.IP',
'KA.D.BRGSLN.DAILY.IP',
'KA.D.BRNALN.DAILY.IP',
'KA.D.BSIFLN.DAILY.IP',
'KA.D.BABS.DAILY.IP',
'KA.D.BACTLN.DAILY.IP',
'KA.D.BGEO.DAILY.IP',
'KA.D.BRGE.DAILY.IP',
'KA.D.BVC.DAILY.IP',
'KA.D.BBA.DAILY.IP',
'KA.D.BBGILN.DAILY.IP',
'KA.D.BCALN.DAILY.IP',
'KA.D.BHGG.DAILY.IP',
'KA.D.BHGU.DAILY.IP',
'KA.D.BHME.DAILY.IP',
'KA.D.BHMG.DAILY.IP',
'KA.D.BLT.DAILY.IP',
'KA.D.BAB.DAILY.IP',
'KA.D.BPC.DAILY.IP',
'KA.D.BGFD.DAILY.IP',
'KA.D.BGS.DAILY.IP',
'KA.D.USALN.DAILY.IP',
'KA.D.BAKKLN.DAILY.IP',
'KA.D.BBY.DAILY.IP',
'KA.D.BNCLN.DAILY.IP',
'KA.D.BNKR.DAILY.IP',
'KA.D.BARC.DAILY.IP',
'KA.D.BDEV.DAILY.IP',
'KA.D.BHR.DAILY.IP',
'KA.D.BEZ.DAILY.IP',
'KA.D.BEG.DAILY.IP',
'KA.D.DVSG.DAILY.IP',
'KA.D.BKGLN.DAILY.IP',
'KA.D.BYG.DAILY.IP',
'KA.D.BIOG.DAILY.IP',
'KA.D.BRFILN.DAILY.IP',
'KA.D.BRSC.DAILY.IP',
'KA.D.BRWM.DAILY.IP',
'KA.D.BMY.DAILY.IP',
'KA.D.BOOLN.DAILY.IP',
'KA.D.INXLN.DAILY.IP',
'KA.D.BRBY.DAILY.IP',
'KA.D.BNZL.DAILY.IP',
'KA.D.BUT.DAILY.IP',
'KA.D.BRKLN.DAILY.IP',
'KA.D.BVIC.DAILY.IP',
'KA.D.BPI.DAILY.IP',
'KA.D.BLND.DAILY.IP',
'KA.D.BTEM.DAILY.IP',
'KA.D.BATS.DAILY.IP',
'KA.D.BRW.DAILY.IP',
'KA.D.BRAM.DAILY.IP',
'KA.D.BMSLN.DAILY.IP',
'KA.D.BLVN.DAILY.IP',
'KA.D.BVS.DAILY.IP',
'KA.D.BORLN.DAILY.IP',
'KA.D.BHY.DAILY.IP',
'KA.D.BOKLN.DAILY.IP',
'KA.D.BOY.DAILY.IP',
'KA.D.BGC.DAILY.IP',
'KA.D.BT.DAILY.IP',
'KA.D.BLZ.DAILY.IP',
'KA.D.XX300021E.DAILY.IP',
'KA.D.BP.DAILY.IP',
'KA.D.BMELN.DAILY.IP',
'KA.D.BSET.DAILY.IP',
'KA.D.CRM.DAILY.IP',
'KA.D.CWR.DAILY.IP',
'KA.D.NOP.DAILY.IP',
'KA.D.CRNLN.DAILY.IP',
'KA.D.CAPC.DAILY.IP',
'KA.D.CGS.DAILY.IP',
'KA.D.CAMLLN.DAILY.IP',
'KA.D.CNE.DAILY.IP',
'KA.D.CLDN.DAILY.IP',
'KA.D.CMBNLN.DAILY.IP',
'KA.D.CAMLN.DAILY.IP',
'KA.D.CDI.DAILY.IP',
'KA.D.CIU.DAILY.IP',
'KA.D.CPI.DAILY.IP',
'KA.D.CAL.DAILY.IP',
'KA.D.CGT.DAILY.IP',
'KA.D.CAR.DAILY.IP',
'KA.D.CARDLN.DAILY.IP',
'KA.D.CLLN.DAILY.IP',
'KA.D.CCLLN.DAILY.IP',
'KA.D.CPR.DAILY.IP',
'KA.D.CEY.DAILY.IP',
'KA.D.CAU.DAILY.IP',
'KA.D.CNA.DAILY.IP',
'KA.D.CBG.DAILY.IP',
'KA.D.CLGLN.DAILY.IP',
'KA.D.CLIN.DAILY.IP',
'KA.D.CKN.DAILY.IP',
'KA.D.CSHL.DAILY.IP',
'KA.D.CTY.DAILY.IP',
'KA.D.CLIG.DAILY.IP',
'KA.D.CYN.DAILY.IP',
'KA.D.CHY.DAILY.IP',
'KA.D.CIRCLN.DAILY.IP',
'KA.D.CIRLN.DAILY.IP',
'KA.D.CSN.DAILY.IP',
'KA.D.CHG.DAILY.IP',
'KA.D.CCFSLN.DAILY.IP',
'KA.D.CTR.DAILY.IP',
'KA.D.CAY.DAILY.IP',
'KA.D.CHARLN.DAILY.IP',
'KA.D.CGH.DAILY.IP',
'KA.D.CLI.DAILY.IP',
'KA.D.CINE.DAILY.IP',
'KA.D.CMCXLN.DAILY.IP',
'KA.D.KYS.DAILY.IP',
'KA.D.CCPELN.DAILY.IP',
'KA.D.CPPLN.DAILY.IP',
'KA.D.CVSG.DAILY.IP',
'KA.D.COB.DAILY.IP',
'KA.D.CRHLN.DAILY.IP',
'KA.D.CYBGLN.DAILY.IP',
'KA.D.COCHLN.DAILY.IP',
'KA.D.CMS.DAILY.IP',
'KA.D.CPG.DAILY.IP',
'KA.D.NWS.DAILY.IP',
'KA.D.CSRT.DAILY.IP',
'KA.D.GLOLN.DAILY.IP',
'KA.D.COSTLN.DAILY.IP',
'KA.D.CWDLN.DAILY.IP',
'KA.D.CWK.DAILY.IP',
'KA.D.CCPGLN.DAILY.IP',
'KA.D.CCC.DAILY.IP',
'KA.D.CSPLN.DAILY.IP',
'KA.D.CRSTLN.DAILY.IP',
'KA.D.CRDA.DAILY.IP',
'KA.D.CREILN.DAILY.IP',
'KA.D.CTECLN.DAILY.IP',
'KA.D.CVRLN.DAILY.IP',
'KA.D.CBPLN.DAILY.IP',
'KA.D.KESA.DAILY.IP',
'KA.D.DIL2LN.DAILY.IP',
'KA.D.DALLN.DAILY.IP',
'KA.D.DMTRLN.DAILY.IP',
'KA.D.DPH.DAILY.IP',
'KA.D.DVO.DAILY.IP',
'KA.D.DLNLN.DAILY.IP',
'KA.D.DMGT.DAILY.IP',
'KA.D.DEB.DAILY.IP',
'KA.D.DCCLN.DAILY.IP',
'KA.D.DLAR.DAILY.IP',
'KA.D.DTG.DAILY.IP',
'KA.D.DALRLN.DAILY.IP',
'KA.D.DJAN.DAILY.IP',
'KA.D.DAB.DAILY.IP',
'KA.D.DDDDLN.DAILY.IP',
'KA.D.DCG.DAILY.IP',
'KA.D.DFSLN.DAILY.IP',
'KA.D.DPEULN.DAILY.IP',
'KA.D.SMDS.DAILY.IP',
'KA.D.DWCGLN.DAILY.IP',
'KA.D.DXLN.DAILY.IP',
'KA.D.DGE.DAILY.IP',
'KA.D.DIA.DAILY.IP',
'KA.D.DTY.DAILY.IP',
'KA.D.DPLM.DAILY.IP',
'KA.D.DLGLN.DAILY.IP',
'KA.D.DIVILN.DAILY.IP',
'KA.D.CPW.DAILY.IP',
'KA.D.DNO.DAILY.IP',
'KA.D.DOM.DAILY.IP',
'KA.D.DUPD.DAILY.IP',
'KA.D.DRX.DAILY.IP',
'KA.D.DREFLN.DAILY.IP',
'KA.D.DNELN.DAILY.IP',
'KA.D.DIG.DAILY.IP',
'KA.D.DNDL.DAILY.IP',
'KA.D.DNLM.DAILY.IP',
'KA.D.EZJ.DAILY.IP',
'KA.D.ESPLN.DAILY.IP',
'KA.D.ECM.DAILY.IP',
'KA.D.ELALN.DAILY.IP',
'KA.D.ETI.DAILY.IP',
'KA.D.EPICEL.DAILY.IP',
'KA.D.EWI.DAILY.IP',
'KA.D.EGLLN.DAILY.IP',
'KA.D.EPO.DAILY.IP',
'KA.D.EMISLN.DAILY.IP',
'KA.D.888.DAILY.IP',
'KA.D.ELM.DAILY.IP',
'KA.D.ELTA.DAILY.IP',
'KA.D.EDIN.DAILY.IP',
'KA.D.EFM.DAILY.IP',
'KA.D.EKFLN.DAILY.IP',
'KA.D.E2V.DAILY.IP',
'KA.D.ESURLN.DAILY.IP',
'KA.D.EXPN.DAILY.IP',
'KA.D.EXOLN.DAILY.IP',
'KA.D.EXILN.DAILY.IP',
'KA.D.EVRLN.DAILY.IP',
'KA.D.FCU.DAILY.IP',
'KA.D.ERM.DAILY.IP',
'KA.D.FLTR.DAILY.IP',
'KA.D.EQNLN.DAILY.IP',
'KA.D.EPWNLN.DAILY.IP',
'KA.D.ETO.DAILY.IP',
'KA.D.EASLN.DAILY.IP',
'KA.D.ENOGLN.DAILY.IP',
'KA.D.ENQ.DAILY.IP',
'KA.D.EPGLN.DAILY.IP',
'KA.D.FEVRLN.DAILY.IP',
'KA.D.FXPO.DAILY.IP',
'KA.D.FENR.DAILY.IP',
'KA.D.FPM.DAILY.IP',
'KA.D.FCI.DAILY.IP',
'KA.D.FCPT.DAILY.IP',
'KA.D.FDMLN.DAILY.IP',
'KA.D.IRP.DAILY.IP',
'KA.D.FPEB.DAILY.IP',
'KA.D.FCSLN.DAILY.IP',
'KA.D.FOUR.DAILY.IP',
'KA.D.FJVSLN.DAILY.IP',
'KA.D.FAS.DAILY.IP',
'KA.D.FCSS.DAILY.IP',
'KA.D.FSV.DAILY.IP',
'KA.D.FDSALN.DAILY.IP',
'KA.D.FDL.DAILY.IP',
'KA.D.FGT.DAILY.IP',
'KA.D.FDPLN.DAILY.IP',
'KA.D.FLOL.DAILY.IP',
'KA.D.FRCL.DAILY.IP',
'KA.D.FSFLLN.DAILY.IP',
'KA.D.FOXTLN.DAILY.IP',
'KA.D.FCCN.DAILY.IP',
'KA.D.FRES.DAILY.IP',
'KA.D.FSTA.DAILY.IP',
'KA.D.FCIFLN.DAILY.IP',
'KA.D.FUTR.DAILY.IP',
'KA.D.FJV.DAILY.IP',
'KA.D.FEV.DAILY.IP',
'KA.D.FGP.DAILY.IP',
'KA.D.FLYB.DAILY.IP',
'KA.D.FORTLN.DAILY.IP',
'KA.D.GHGLN.DAILY.IP',
'KA.D.GECLN.DAILY.IP',
'KA.D.GEMLN.DAILY.IP',
'KA.D.GEMD.DAILY.IP',
'KA.D.GAMALN.DAILY.IP',
'KA.D.GAW.DAILY.IP',
'KA.D.VLRS.DAILY.IP',
'KA.D.PDXLN.DAILY.IP',
'KA.D.GFRD.DAILY.IP',
'KA.D.CGEOLN.DAILY.IP',
'KA.D.GNS.DAILY.IP',
'KA.D.GCPLN.DAILY.IP',
'KA.D.GKN.DAILY.IP',
'KA.D.GFS.DAILY.IP',
'KA.D.GBG.DAILY.IP',
'KA.D.GABCLN.DAILY.IP',
'KA.D.GABILN.DAILY.IP',
'KA.D.GMDLN.DAILY.IP',
'KA.D.HRI.DAILY.IP',
'KA.D.HSL.DAILY.IP',
'KA.D.HHI.DAILY.IP',
'KA.D.HFELLN.DAILY.IP',
'KA.D.HNE.DAILY.IP',
'KA.D.SVG.DAILY.IP',
'KA.D.HINTLN.DAILY.IP',
'KA.D.HLCL.DAILY.IP',
'KA.D.HVN.DAILY.IP',
'KA.D.HSD.DAILY.IP',
'KA.D.HDIVLN.DAILY.IP',
'KA.D.HSTGLN.DAILY.IP',
'KA.D.HVPELN.DAILY.IP',
'KA.D.HWSLLN.DAILY.IP',
'KA.D.HOTLN.DAILY.IP',
'KA.D.HGI.DAILY.IP',
'KA.D.GGL.DAILY.IP',
'KA.D.GEO.DAILY.IP',
'KA.D.HEAD.DAILY.IP',
'KA.D.HAS.DAILY.IP',
'KA.D.HSP.DAILY.IP',
'KA.D.HSTN.DAILY.IP',
'KA.D.HL.DAILY.IP',
'KA.D.HAN.DAILY.IP',
'KA.D.HMSO.DAILY.IP',
'KA.D.HLMA.DAILY.IP',
'KA.D.HFD.DAILY.IP',
'KA.D.HDY.DAILY.IP',
'KA.D.HAT.DAILY.IP',
'KA.D.HURLN.DAILY.IP',
'KA.D.HNT.DAILY.IP',
'KA.D.GFRM.DAILY.IP',
'KA.D.HOME.DAILY.IP',
'KA.D.HFG.DAILY.IP',
'KA.D.HTG.DAILY.IP',
'KA.D.HSV.DAILY.IP',
'KA.D.BOWLLN.DAILY.IP',
'KA.D.HRG.DAILY.IP',
'KA.D.HOC.DAILY.IP',
'KA.D.HSX.DAILY.IP',
'KA.D.HILS.DAILY.IP',
'KA.D.HGT.DAILY.IP',
'KA.D.HSSLN.DAILY.IP',
'KA.D.HICL.DAILY.IP',
'KA.D.HYC.DAILY.IP',
'KA.D.HUNTLN.DAILY.IP',
'KA.D.HSWLN.DAILY.IP',
'KA.D.HRN.DAILY.IP',
'KA.D.HIK.DAILY.IP',
'KA.D.HGM.DAILY.IP',
'KA.D.HBRNLN.DAILY.IP',
'KA.D.HSBA.DAILY.IP',
'KA.D.IVO.DAILY.IP',
'KA.D.IMT.DAILY.IP',
'KA.D.IEM.DAILY.IP',
'KC.D.IKALN.DAILY.IP',
'KA.D.IBSTLN.DAILY.IP',
'KA.D.IMI.DAILY.IP',
'KA.D.IGAS.DAILY.IP',
'KA.D.IFPLN.DAILY.IP',
'KA.D.IDOX.DAILY.IP',
'KA.D.LBOWLN.DAILY.IP',
'KA.D.IAP.DAILY.IP',
'KA.D.3IN.DAILY.IP',
'KA.D.III.DAILY.IP',
'KA.D.IEHLN.DAILY.IP',
'KA.D.IPU.DAILY.IP',
'KA.D.IVI.DAILY.IP',
'KA.D.LII.DAILY.IP',
'KA.D.ITRK.DAILY.IP',
'KA.D.BBPP.DAILY.IP',
'KA.D.IFLLN.DAILY.IP',
'KA.D.BAY.DAILY.IP',
'KA.D.IBT.DAILY.IP',
'KA.D.IHG.DAILY.IP',
'KA.D.SKINLN.DAILY.IP',
'KA.D.IDHCLN.DAILY.IP',
'KA.D.IHPLN.DAILY.IP',
'KA.D.INDVLN.DAILY.IP',
'KA.D.IAT.DAILY.IP',
'KA.D.INVP.DAILY.IP',
'KA.D.IRV.DAILY.IP',
'KA.D.INTQ.DAILY.IP',
'KA.D.IPF.DAILY.IP',
'KA.D.ICP.DAILY.IP',
'KA.D.ISAT.DAILY.IP',
'KA.D.TFILN.DAILY.IP',
'KA.D.INDI.DAILY.IP',
'KA.D.INCH.DAILY.IP',
'KA.D.JRGLN.DAILY.IP',
'KA.D.JELN.DAILY.IP',
'KA.D.FSC.DAILY.IP',
'KA.D.JPGLN.DAILY.IP',
'KA.D.JUP.DAILY.IP',
'KA.D.JEO.DAILY.IP',
'KA.D.MATELN.DAILY.IP',
'KA.D.JPR.DAILY.IP',
'KA.D.JSG.DAILY.IP',
'KA.D.JMAT.DAILY.IP',
'KA.D.WG.DAILY.IP',
'KA.D.MNZS.DAILY.IP',
'KA.D.JLIFLN.DAILY.IP',
'KA.D.JLGLN.DAILY.IP',
'KA.D.JLENLN.DAILY.IP',
'KA.D.CHOOLN.DAILY.IP',
'KA.D.JARLN.DAILY.IP',
'KA.D.JLT.DAILY.IP',
'KA.D.JHD.DAILY.IP',
'KA.D.FSJ.DAILY.IP',
'KA.D.JPJLN.DAILY.IP',
'KA.D.TBCGLN.DAILY.IP',
'KA.D.JPSSLN.DAILY.IP',
'KA.D.JPS.DAILY.IP',
'KA.D.JPU.DAILY.IP',
'KA.D.JMI.DAILY.IP',
'KA.D.JPSLLN.DAILY.IP',
'KA.D.JRSLN.DAILY.IP',
'KA.D.JMF.DAILY.IP',
'KA.D.JFJ.DAILY.IP',
'KA.D.JMO.DAILY.IP',
'KA.D.JGCILN.DAILY.IP',
'KA.D.JETI.DAILY.IP',
'KA.D.JETG.DAILY.IP',
'KA.D.JFF.DAILY.IP',
'KA.D.JCH.DAILY.IP',
'KA.D.JMC.DAILY.IP',
'KA.D.JAILN.DAILY.IP',
'KA.D.JAM.DAILY.IP',
'KA.D.JII.DAILY.IP',
'KA.D.JDW.DAILY.IP',
'KA.D.JD.DAILY.IP',
'KA.D.KGHLN.DAILY.IP',
'KA.D.KSK.DAILY.IP',
'KA.D.KCOM.DAILY.IP',
'KA.D.KAZ.DAILY.IP',
'KC.D.KAKULN.DAILY.IP',
'KA.D.KLR.DAILY.IP',
'KA.D.KMRLN.DAILY.IP',
'KA.D.KWELN.DAILY.IP',
'KA.D.KIT.DAILY.IP',
'KA.D.KIE.DAILY.IP',
'KA.D.KGF.DAILY.IP',
'KC.D.KAYLN.DAILY.IP',
'KA.D.KNOSLN.DAILY.IP',
'KC.D.KATLN.DAILY.IP',
'KA.D.KOSLN.DAILY.IP',
'KA.D.LXBLN.DAILY.IP',
'KA.D.LMSLN.DAILY.IP',
'KA.D.LSL.DAILY.IP',
'KA.D.LRD.DAILY.IP',
'KA.D.LAM.DAILY.IP',
'KA.D.LRE.DAILY.IP',
'KA.D.LAND.DAILY.IP',
'KA.D.LWDB.DAILY.IP',
'KA.D.LDP.DAILY.IP',
'KA.D.LLOY.DAILY.IP',
'KA.D.LSE.DAILY.IP',
'KA.D.LVD.DAILY.IP',
'KA.D.LGEN.DAILY.IP',
'KA.D.LMI.DAILY.IP',
'KA.D.LEKLN.DAILY.IP',
'KA.D.LIO.DAILY.IP',
'KA.D.LIVNLN.DAILY.IP',
'KA.D.LIV.DAILY.IP',
'KA.D.LSPLN.DAILY.IP',
'KA.D.LOOK.DAILY.IP',
'KA.D.LWB.DAILY.IP',
'KA.D.LWI.DAILY.IP',
'KA.D.LXILN.DAILY.IP',
'KA.D.LADLN.DAILY.IP',
'KA.D.LAKELN.DAILY.IP',
'KA.D.ALY.DAILY.IP',
'KA.D.LSLILN.DAILY.IP',
'KA.D.LUCELN.DAILY.IP',
'KA.D.LSRLN.DAILY.IP',
'KA.D.MAB.DAILY.IP',
'KA.D.MIDWLN.DAILY.IP',
'KA.D.MCRO.DAILY.IP',
'KA.D.MTROLN.DAILY.IP',
'KA.D.MPI.DAILY.IP',
'KA.D.MTO.DAILY.IP',
'KA.D.MLDLN.DAILY.IP',
'KA.D.MLC.DAILY.IP',
'KA.D.MCTLN.DAILY.IP',
'KA.D.MERLLN.DAILY.IP',
'KA.D.JFM.DAILY.IP',
'KA.D.MROLN.DAILY.IP',
'KA.D.MGPLN.DAILY.IP',
'KA.D.MXFLN.DAILY.IP',
'KA.D.MERLN.DAILY.IP',
'KA.D.MGGT.DAILY.IP',
'KA.D.MRCH.DAILY.IP',
'KA.D.MUT.DAILY.IP',
'KA.D.MYTLN.DAILY.IP',
'KA.D.MYSLLN.DAILY.IP',
'KA.D.MUL.DAILY.IP',
'KA.D.MTFBLN.DAILY.IP',
'KA.D.MTC.DAILY.IP',
'KA.D.MTELN.DAILY.IP',
'KA.D.MGCR.DAILY.IP',
'KA.D.MOTRLN.DAILY.IP',
'KA.D.MAB1LN.DAILY.IP',
'KA.D.MGNS.DAILY.IP',
'KA.D.MCLLN.DAILY.IP',
'KA.D.MONILN.DAILY.IP',
'KA.D.MONY.DAILY.IP',
'KA.D.MOSB.DAILY.IP',
'KA.D.MPE.DAILY.IP',
'KA.D.MKLW.DAILY.IP',
'KA.D.MTVWLN.DAILY.IP',
'KA.D.MRW.DAILY.IP',
'KA.D.MNKS.DAILY.IP',
'KA.D.MNDI.DAILY.IP',
'KA.D.GLE.DAILY.IP',
'KA.D.MTU.DAILY.IP',
'KC.D.MKALN.DAILY.IP',
'KA.D.MYI.DAILY.IP',
'KA.D.NUM.DAILY.IP',
'KA.D.NVA.DAILY.IP',
'KA.D.NOGLN.DAILY.IP',
'KA.D.NTG.DAILY.IP',
'KA.D.NAS.DAILY.IP',
'KA.D.EUS.DAILY.IP',
'KA.D.NXR.DAILY.IP',
'KA.D.HAWKLN.DAILY.IP',
'KA.D.NICL.DAILY.IP',
'KA.D.NESFLN.DAILY.IP',
'KA.D.NXT.DAILY.IP',
'KA.D.NWR.DAILY.IP',
'KA.D.NGT.DAILY.IP',
'KA.D.NEX.DAILY.IP',
'KA.D.NMC.DAILY.IP',
'KA.D.NXGLN.DAILY.IP',
'KA.D.NCCLN.DAILY.IP',
'KA.D.NBLSLN.DAILY.IP',
'KA.D.NAHLN.DAILY.IP',
'KA.D.BWNG.DAILY.IP',
'KA.D.NII.DAILY.IP',
'KA.D.NCYF.DAILY.IP',
'KA.D.NBLULN.DAILY.IP',
'KA.D.EVCLN.DAILY.IP',
'KA.D.NBPELN.DAILY.IP',
'KA.D.OMULN.DAILY.IP',
'KA.D.OXS.DAILY.IP',
'KA.D.OXB.DAILY.IP',
'KA.D.OSBLN.DAILY.IP',
'KA.D.OML.DAILY.IP',
'KA.D.OPHR.DAILY.IP',
'KA.D.OXIG.DAILY.IP',
'KA.D.OCDO.DAILY.IP',
'KA.D.OBDLN.DAILY.IP',
'KA.D.OXASLN.DAILY.IP',
'KA.D.OTBLN.DAILY.IP',
'KA.D.OLOTLN.DAILY.IP',
'KA.D.IRET.DAILY.IP',
'KA.D.PLUSLN.DAILY.IP',
'KA.D.POS.DAILY.IP',
'KA.D.PTEC.DAILY.IP',
'KA.D.PHTM.DAILY.IP',
'KA.D.PHNXLN.DAILY.IP',
'KA.D.PHC.DAILY.IP',
'KA.D.PETSLN.DAILY.IP',
'KA.D.POG.DAILY.IP',
'KA.D.PMGLN.DAILY.IP',
'KA.D.PCI.DAILY.IP',
'KA.D.PAY.DAILY.IP',
'KA.D.PNLLN.DAILY.IP',
'KA.D.PSN.DAILY.IP',
'KA.D.PLI.DAILY.IP',
'KA.D.PKGLN.DAILY.IP',
'KA.D.PNN.DAILY.IP',
'KA.D.PDL.DAILY.IP',
'KA.D.PDG.DAILY.IP',
'KA.D.PSON.DAILY.IP',
'KA.D.PAG.DAILY.IP',
'KA.D.PRGLN.DAILY.IP',
'KA.D.PANR.DAILY.IP',
'KA.D.PFC.DAILY.IP',
'KA.D.PHI.DAILY.IP',
'KA.D.PAC.DAILY.IP',
'KA.D.PAF.DAILY.IP',
'KA.D.IL0ALN.DAILY.IP',
'KA.D.PSHLN.DAILY.IP',
'KA.D.CAKELN.DAILY.IP',
'KA.D.PWS.DAILY.IP',
'KA.D.NLR.DAILY.IP',
'KA.D.PPBLN.DAILY.IP',
'KA.D.PIN.DAILY.IP',
'KA.D.PFG.DAILY.IP',
'KA.D.PEYLN.DAILY.IP',
'KA.D.AKT.DAILY.IP',
'KA.D.PURE.DAILY.IP',
'KA.D.PRTCLN.DAILY.IP',
'KA.D.PRU.DAILY.IP',
'KA.D.PRV.DAILY.IP',
'KA.D.PRM.DAILY.IP',
'KA.D.PXOGLN.DAILY.IP',
'KA.D.PRW.DAILY.IP',
'KA.D.PHP.DAILY.IP',
'KA.D.PPCLN.DAILY.IP',
'KA.D.PFD.DAILY.IP',
'KA.D.PFL.DAILY.IP',
'KA.D.POWR.DAILY.IP',
'KA.D.PLNDLN.DAILY.IP',
'KA.D.PCGHLN.DAILY.IP',
'KA.D.PMO.DAILY.IP',
'KA.D.PLPLN.DAILY.IP',
'KA.D.POLY.DAILY.IP',
'KA.D.PRL.DAILY.IP',
'KA.D.PCT.DAILY.IP',
'KA.D.POLR.DAILY.IP',
'KA.D.PXS.DAILY.IP',
'KA.D.PZC.DAILY.IP',
'KA.D.PUBLN.DAILY.IP',
'KA.D.PVCS.DAILY.IP',
'KA.D.PURPLN.DAILY.IP',
'KA.D.PCFTLN.DAILY.IP',
'KA.D.RELNPF.DAILY.IP',
'KA.D.RGU.DAILY.IP',
'KA.D.RELN.DAILY.IP',
'KA.D.RRLLN.DAILY.IP',
'KA.D.RNK.DAILY.IP',
'KA.D.RAT.DAILY.IP',
'KA.D.RBGLN.DAILY.IP',
'KA.D.RECILN.DAILY.IP',
'KA.D.REC.DAILY.IP',
'KA.D.RB.DAILY.IP',
'KA.D.RMP.DAILY.IP',
'KA.D.RPT.DAILY.IP',
'KA.D.RCNLN.DAILY.IP',
'KA.D.RDW.DAILY.IP',
'KA.D.REL.DAILY.IP',
'KA.D.RRS.DAILY.IP',
'KA.D.RGLLN.DAILY.IP',
'KA.D.TRIGLN.DAILY.IP',
'KA.D.RSW.DAILY.IP',
'KA.D.RTO.DAILY.IP',
'KA.D.RNOLN.DAILY.IP',
'KA.D.RTNLN.DAILY.IP',
'KA.D.REX.DAILY.IP',
'KA.D.WICH.DAILY.IP',
'KA.D.RDLLN.DAILY.IP',
'KA.D.RHMLNN.DAILY.IP',
'KA.D.RCILN.DAILY.IP',
'KA.D.RUSLN.DAILY.IP',
'KA.D.HHR.DAILY.IP',
'KA.D.RESILN.DAILY.IP',
'KA.D.RVGLN.DAILY.IP',
'KA.D.RNWH.DAILY.IP',
'KA.D.RRELN.DAILY.IP',
'KA.D.RHIMLN.DAILY.IP',
'KA.D.RICA.DAILY.IP',
'KA.D.RMGLN.DAILY.IP',
'KA.D.RDSA.DAILY.IP',
'KA.D.RCDO.DAILY.IP',
'KA.D.RDSB.DAILY.IP',
'KA.D.RBS.DAILY.IP',
'KA.D.RKHLN.DAILY.IP',
'KA.D.RWA.DAILY.IP',
'KA.D.RIVLN.DAILY.IP',
'KA.D.RIO.DAILY.IP',
'KA.D.ROR.DAILY.IP',
'KA.D.RSA.DAILY.IP',
'KA.D.RR.DAILY.IP',
'KA.D.RMV.DAILY.IP',
'KA.D.RWS.DAILY.IP',
'KA.D.RPOLN.DAILY.IP',
'KA.D.RPS.DAILY.IP',
'KA.D.RPC.DAILY.IP',
'KA.D.RM.DAILY.IP',
'KA.D.RCP.DAILY.IP',
'KA.D.RSELN.DAILY.IP',
'KA.D.BLNX.DAILY.IP',
'KA.D.SHRS.DAILY.IP',
'KA.D.SHP.DAILY.IP',
'KA.D.SDRC.DAILY.IP',
'KA.D.SHB.DAILY.IP',
'KA.D.SDU.DAILY.IP',
'KA.D.SVT.DAILY.IP',
'KA.D.SOILN.DAILY.IP',
'KA.D.SERVLN.DAILY.IP',
'KA.D.SRP.DAILY.IP',
'KA.D.SEQILN.DAILY.IP',
'KA.D.SNR.DAILY.IP',
'KA.D.STS.DAILY.IP',
'KA.D.SITLN.DAILY.IP',
'KA.D.SST.DAILY.IP',
'KA.D.SMT.DAILY.IP',
'KA.D.SCAM.DAILY.IP',
'KA.D.SCF.DAILY.IP',
'KA.D.STBLN.DAILY.IP',
'KA.D.SEPU.DAILY.IP',
'KA.D.SGROLN.DAILY.IP',
'KA.D.SDR.DAILY.IP',
'KA.D.SJG.DAILY.IP',
'KA.D.SCIN.DAILY.IP',
'KA.D.SCP.DAILY.IP',
'KA.D.IFD.DAILY.IP',
'KA.D.SQZ.DAILY.IP',
'KA.D.IGRE.DAILY.IP',
'KA.D.SERELN.DAILY.IP',
'KA.D.SDP.DAILY.IP',
'KA.D.SCSLN.DAILY.IP',
'KA.D.SDL.DAILY.IP',
'KA.D.SCPA.DAILY.IP',
'KA.D.SEPLLN.DAILY.IP',
'KA.D.SVS.DAILY.IP',
'KA.D.0VGMLN.DAILY.IP',
'KA.D.SLELN.DAILY.IP',
'KA.D.SBRY.DAILY.IP',
'KA.D.SGE.DAILY.IP',
'KA.D.SAGALN.DAILY.IP',
'KA.D.SAFE.DAILY.IP',
'KA.D.SAB.DAILY.IP',
'KA.D.SFELN.DAILY.IP',
'KA.D.SBRELN.DAILY.IP',
'KA.D.SAA.DAILY.IP',
'KA.D.SKS.DAILY.IP',
'KA.D.SNNLN.DAILY.IP',
'KA.D.SFR.DAILY.IP',
'KA.D.ASM.DAILY.IP',
'KA.D.SHI.DAILY.IP',
'KA.D.SLNLN.DAILY.IP',
'KA.D.SKP.DAILY.IP',
'KA.D.SIA.DAILY.IP',
'KA.D.SIG.DAILY.IP',
'KA.D.SPH.DAILY.IP',
'KA.D.SXXLN.DAILY.IP',
'KA.D.SMSLN.DAILY.IP',
'KA.D.SN.DAILY.IP',
'KA.D.SPX.DAILY.IP',
'KA.D.SMIN.DAILY.IP',
'KA.D.SXS.DAILY.IP',
'KA.D.SDY.DAILY.IP',
'KA.D.SPIR.DAILY.IP',
'KA.D.SPT.DAILY.IP',
'KA.D.SPO.DAILY.IP',
'KA.D.SPD.DAILY.IP',
'KA.D.S32LN.DAILY.IP',
'KA.D.BSY.DAILY.IP',
'KA.D.SKGPLN.DAILY.IP',
'KA.D.SCTLN.DAILY.IP',
'KA.D.SOPHLN.DAILY.IP',
'KA.D.STPLN.DAILY.IP',
'KA.D.STELN.DAILY.IP',
'KA.D.SUMOLN.DAILY.IP',
'KA.D.SLLN.DAILY.IP',
'KA.D.SVI.DAILY.IP',
'KA.D.KETLLN.DAILY.IP',
'KA.D.YULC.DAILY.IP',
'KA.D.SIHL.DAILY.IP',
'KA.D.SECLN.DAILY.IP',
'KA.D.STCKLN.DAILY.IP',
'KA.D.STOB.DAILY.IP',
'KA.D.SWEFLN.DAILY.IP',
'KA.D.STHR.DAILY.IP',
'KA.D.SEY.DAILY.IP',
'KA.D.SLS.DAILY.IP',
'KA.D.SLI.DAILY.IP',
'KA.D.SEPLN.DAILY.IP',
'KA.D.STAN.DAILY.IP',
'KA.D.SGC.DAILY.IP',
'KA.D.STAF.DAILY.IP',
'KA.D.SMP.DAILY.IP',
'KA.D.STJ.DAILY.IP',
'KA.D.SIV.DAILY.IP',
'KA.D.SMG.DAILY.IP',
'KA.D.SSPGLN.DAILY.IP',
'KA.D.SSE.DAILY.IP',
'KA.D.SUSLN.DAILY.IP',
'KA.D.SGPLN.DAILY.IP',
'KA.D.SQNXLN.DAILY.IP',
'KA.D.SQNLN.DAILY.IP',
'KA.D.SLET.DAILY.IP',
'KA.D.THRLN.DAILY.IP',
'KA.D.TCGLN.DAILY.IP',
'KA.D.TPOULN.DAILY.IP',
'KA.D.SBIZLN.DAILY.IP',
'KA.D.TSCO.DAILY.IP',
'KA.D.3LEG.DAILY.IP',
'KA.D.WTRLN.DAILY.IP',
'KA.D.TENGLN.DAILY.IP',
'KA.D.TEGLN.DAILY.IP',
'KA.D.TMPL.DAILY.IP',
'KA.D.TEFLN.DAILY.IP',
'KA.D.TCMLN.DAILY.IP',
'KA.D.TATE.DAILY.IP',
'KA.D.TEP.DAILY.IP',
'KA.D.TBK.DAILY.IP',
'KA.D.TWLN.DAILY.IP',
'KA.D.TAMLN.DAILY.IP',
'KA.D.TRS.DAILY.IP',
'KA.D.THRG.DAILY.IP',
'KA.D.TANLN.DAILY.IP',
'KA.D.TALK.DAILY.IP',
'KA.D.TFW.DAILY.IP',
'KA.D.CTO.DAILY.IP',
'KA.D.TTR.DAILY.IP',
'KA.D.TNI.DAILY.IP',
'KA.D.TUILN.DAILY.IP',
'KA.D.TIFSLN.DAILY.IP',
'KA.D.TRG.DAILY.IP',
'KA.D.TLW.DAILY.IP',
'KA.D.TRY.DAILY.IP',
'KA.D.TTG.DAILY.IP',
'KA.D.TRE.DAILY.IP',
'KA.D.TILSLN.DAILY.IP',
'KA.D.TOMLN.DAILY.IP',
'KA.D.TPT.DAILY.IP',
'KA.D.TRK.DAILY.IP',
'KA.D.TPK.DAILY.IP',
'KA.D.TCSC.DAILY.IP',
'KA.D.TRBLN.DAILY.IP',
'KA.D.TRI.DAILY.IP',
'KA.D.TFIFLN.DAILY.IP',
'KA.D.TPV1LN.DAILY.IP',
'KA.D.TMTLN.DAILY.IP',
'KA.D.TLPR.DAILY.IP',
'KA.D.BEHLN.DAILY.IP',
'KA.D.SMIFLN.DAILY.IP',
'KA.D.TUNGLN.DAILY.IP',
'KA.D.LUP.DAILY.IP',
'KA.D.SOHOLN.DAILY.IP',
'KA.D.BBOXLN.DAILY.IP',
'KA.D.GLS.DAILY.IP',
'KA.D.UTV.DAILY.IP',
'KA.D.UPGSLN.DAILY.IP',
'KA.D.UCP.DAILY.IP',
'KA.D.UU.DAILY.IP',
'KA.D.UTWLN.DAILY.IP',
'KA.D.ULVR.DAILY.IP',
'KA.D.ULE.DAILY.IP',
'KA.D.UKRLN.DAILY.IP',
'KA.D.ULSLN.DAILY.IP',
'KA.D.UKMLLN.DAILY.IP',
'KA.D.BPG.DAILY.IP',
'KA.D.UKCM.DAILY.IP',
'KA.D.THG.DAILY.IP',
'KA.D.UTG.DAILY.IP',
'KA.D.UBM.DAILY.IP',
'KA.D.DSCLN.DAILY.IP',
'KA.D.UDG.DAILY.IP',
'KA.D.VVOLN.DAILY.IP',
'KA.D.VCT.DAILY.IP',
'KA.D.VTC.DAILY.IP',
'KA.D.FANLN.DAILY.IP',
'KA.D.VP.DAILY.IP',
'KA.D.VEILLN.DAILY.IP',
'KA.D.VLX.DAILY.IP',
'KA.D.VTU.DAILY.IP',
'KA.D.VED.DAILY.IP',
'KA.D.VER.DAILY.IP',
'KA.D.OCG.DAILY.IP',
'KA.D.VOG.DAILY.IP',
'KA.D.VEC.DAILY.IP',
'KA.D.VIN.DAILY.IP',
'KA.D.VOD.DAILY.IP',
'KA.D.VMLN.DAILY.IP',
'KA.D.VSLLN.DAILY.IP',
'KA.D.CKSN.DAILY.IP',
'KA.D.VZCLN.DAILY.IP',
'KA.D.FWP.DAILY.IP',
'KA.D.WPYLN.DAILY.IP',
'KA.D.WAN2LN.DAILY.IP',
'KA.D.WOS.DAILY.IP',
'KA.D.WPGLN.DAILY.IP',
'KA.D.WKP.DAILY.IP',
'KA.D.WPCTLN.DAILY.IP',
'KA.D.WIZZLN.DAILY.IP',
'KA.D.WTB.DAILY.IP',
'KA.D.WPC.DAILY.IP',
'KA.D.WTAN.DAILY.IP',
'KA.D.WPP.DAILY.IP',
'KA.D.WIN.DAILY.IP',
'KA.D.WIL.DAILY.IP',
'KA.D.WMH.DAILY.IP',
'KA.D.WEIR.DAILY.IP',
'KA.D.QPP.DAILY.IP',
'KA.D.SMWH.DAILY.IP',
'KA.D.XSGLN.DAILY.IP',
'KA.D.XAFLN.DAILY.IP',
'KA.D.XAR.DAILY.IP',
'KA.D.XELLN.DAILY.IP',
'KA.D.XCH.DAILY.IP',
'KA.D.XPP.DAILY.IP']
# ALL EPICS
# TESTING
# main_epic_ids = [
# 'KA.D.CAMLN.DAILY.IP',
# 'KA.D.EVRLN.DAILY.IP',
# 'KA.D.SCSLN.DAILY.IP',
# 'KA.D.RIO.DAILY.IP',
# 'KA.D.PSN.DAILY.IP',
# 'KA.D.BMY.DAILY.IP',
# 'KA.D.KLR.DAILY.IP',
# 'KA.D.BKGLN.DAILY.IP',
# 'KA.D.HSTN.DAILY.IP',
# 'KA.D.RMGLN.DAILY.IP',
# 'KA.D.AAL.DAILY.IP',
# 'KA.D.PLUSLN.DAILY.IP',
# 'KA.D.INCH.DAILY.IP',
# 'KA.D.ETI.DAILY.IP',
# 'KA.D.EZJ.DAILY.IP',
# 'KA.D.CMCXLN.DAILY.IP',
# 'KA.D.IGAS.DAILY.IP',
# 'KA.D.IGLNLN.DAILY.IP',
# 'KA.D.IGLOLN.DAILY.IP',
# 'KA.D.IGCCLN.DAILY.IP',
# 'KA.D.IGSDLN.DAILY.IP',
# 'KA.D.IGSGLN.DAILY.IP',
# 'KA.D.IGSULN.DAILY.IP',
# 'KA.D.IGEALN.DAILY.IP',
# 'KA.D.IGHYLN.DAILY.IP',
# 'KA.D.BP.DAILY.IP',
# 'KA.D.XX300021E.DAILY.IP',
# 'KA.D.CMS.DAILY.IP',
# 'KA.D.RM.DAILY.IP',
# 'KA.D.RMGLN.DAILY.IP',
# 'KA.D.BLT.DAILY.IP',
# 'KA.D.TWLN.DAILY.IP',
# 'KA.D.NUM.DAILY.IP',
# 'KA.D.CLIG.DAILY.IP',
# 'KA.D.CTY.DAILY.IP',
# 'KA.D.ANTO.DAILY.IP',
# 'KA.D.CKSN.DAILY.IP',
# 'KA.D.GOG.DAILY.IP',
# 'KA.D.BA.DAILY.IP',
# 'KA.D.RWA.DAILY.IP',
# 'KA.D.MGNS.DAILY.IP',
# 'KA.D.BVS.DAILY.IP',
# 'KA.D.BAY.DAILY.IP',
# 'KA.D.TATE.DAILY.IP',
# 'KA.D.GSK.DAILY.IP',
# 'KA.D.DLNLN.DAILY.IP',
# 'KA.D.CLIG.DAILY.IP',
# 'KA.D.CTY.DAILY.IP',
# 'KA.D.LSE.DAILY.IP',
# 'KA.D.LSPLN.DAILY.IP',
# 'KA.D.LSLILN.DAILY.IP',
# 'KA.D.CCC.DAILY.IP',
# 'KA.D.CAMLN.DAILY.IP',
# 'KA.D.HVPELN.DAILY.IP',
# 'KA.D.HPRDLN.DAILY.IP',
# 'KA.D.HPROLN.DAILY.IP',
# 'KA.D.IPF.DAILY.IP',
# 'KA.D.COSTLN.DAILY.IP',
# 'KA.D.NXT.DAILY.IP',
# 'KA.D.NESFLN.DAILY.IP',
# 'KA.D.NJXELN.DAILY.IP',
# 'KA.D.NXKULN.DAILY.IP',
# 'KA.D.SPT.DAILY.IP',
# 'KA.D.POLR.DAILY.IP',
# 'KA.D.GAW.DAILY.IP',
# 'KA.D.WMH.DAILY.IP',
# 'KA.D.WIZZLN.DAILY.IP',
# 'KA.D.QQ.DAILY.IP',
# 'KA.D.HVN.DAILY.IP',
# 'KA.D.MNDI.DAILY.IP',
# 'KA.D.FXPO.DAILY.IP',
# 'KA.D.FORTLN.DAILY.IP',
# 'KA.D.FLOL.DAILY.IP',
# 'KA.D.STHR.DAILY.IP',
# 'KA.D.FDL.DAILY.IP',
# 'KA.D.SBRY.DAILY.IP',
# 'KA.D.POG.DAILY.IP']
b_REAL = True
if b_REAL:
REAL_OR_NO_REAL = 'https://api.ig.com/gateway/deal'
API_ENDPOINT = "https://api.ig.com/gateway/deal/session"
API_KEY = 'Your API Key Here'
data = {"identifier": "Your Username Here", "password": "Your Password Here"}
else:
REAL_OR_NO_REAL = 'https://demo-api.ig.com/gateway/deal'
API_ENDPOINT = "https://demo-api.ig.com/gateway/deal/session"
API_KEY = 'Your API Key Here'
data = {"identifier": "Your Username Here", "password": "Your Password Here"}
headers = {'Content-Type': 'application/json; charset=utf-8',
'Accept': 'application/json; charset=utf-8',
'X-IG-API-KEY': API_KEY,
'Version': '2'
}
r = requests.post(API_ENDPOINT, data=json.dumps(data), headers=headers)
headers_json = dict(r.headers)
CST_token = headers_json["CST"]
print(R"CST : " + CST_token)
x_sec_token = headers_json["X-SECURITY-TOKEN"]
print(R"X-SECURITY-TOKEN : " + x_sec_token)
# GET ACCOUNTS
base_url = REAL_OR_NO_REAL + '/accounts'
authenticated_headers = {'Content-Type': 'application/json; charset=utf-8',
'Accept': 'application/json; charset=utf-8',
'X-IG-API-KEY': API_KEY,
'CST': CST_token,
'X-SECURITY-TOKEN': x_sec_token}
auth_r = requests.get(base_url, headers=authenticated_headers)
d = json.loads(auth_r.text)
base_url = REAL_OR_NO_REAL + '/session'
data = {"accountId": "Your Account ID Here", "defaultAccount": "True"} # Main Demo acc
# data = {"accountId": "Your Account ID Here", "defaultAccount": "True"} # Main Live acc
auth_r = requests.put(
base_url,
data=json.dumps(data),
headers=authenticated_headers)
# print("-----------------DEBUG-----------------")
# print("#################DEBUG#################")
# print(auth_r.status_code)
# print(auth_r.reason)
# print(auth_r.text)
# print("-----------------DEBUG-----------------")
# print("#################DEBUG#################")
##########################################################################
##########################END OF LOGIN CODE###############################
##########################END OF LOGIN CODE###############################
##########################END OF LOGIN CODE###############################
##########################END OF LOGIN CODE###############################
##########################################################################
# PROGRAMMABLE VALUES
# SET INITIAL VARIABLES, Hacky for now!
orderType_value = "MARKET"
size_value = "1"
expiry_value = "DFB"
guaranteedStop_value = True
currencyCode_value = "GBP"
forceOpen_value = True
stop_loss_multiplier = 3
ESMA_new_margin = 20 # (20% for stocks)
too_high_margin = 100
def is_between(time, time_range):
if time_range[1] < time_range[0]:
return time >= time_range[0] or time <= time_range[1]
return time_range[0] <= time <= time_range[1]
def midpoint(p1, p2):
return (p1 + p2) / 2
def percentage(part, whole):
return 100 * float(part) / float(whole)
def percentage_of(percent, whole):
# percent should always be 20 for stocks
# ESMA regulations calculating min stop loss (20% for stocks)
return (percent * whole) / 100.0
def humanize_time(secs):
mins, secs = divmod(secs, 60)
hours, mins = divmod(mins, 60)
return '%02d:%02d:%02d' % (hours, mins, secs)
def idTooMuchPositions(key, positionMap):
if((key in positionMap) and (int(positionMap[key]) >= 2)):
return True
else:
return False
def find_good_epics():
spreads_and_epics = []
pick_from_epics = []
i_count = 0
b_TRADE_OK = True
for epic_id in main_epic_ids:
tmp_lst = []
base_url = REAL_OR_NO_REAL + '/markets/' + epic_id
auth_r = requests.get(base_url, headers=authenticated_headers)
d = json.loads(auth_r.text)
time.sleep(1)
i_count += 1
try:
if b_TRADE_OK:
current_bid = d['snapshot']['bid']
ask_price = d['snapshot']['offer']
spread = float(current_bid) - float(ask_price)
if float(spread) >= -1:
print("!!DEBUG!!...FOUND GOOD EPIC..." +
str(i_count) + "/" + str(len(main_epic_ids)))
time.sleep(1)
esma_new_margin_req = int(
percentage_of(
ESMA_new_margin,
current_bid))
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print(
"!!DEBUG!!...New ESMA Margin Requirements in Pips is ...:" +
str(esma_new_margin_req))
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
###################LONDON############################
###################LONDON############################
###################LONDON############################
tz = pytz.timezone('Europe/London')
now_time = datetime.datetime.now(tz=tz).strftime('%H:%M')
if is_between(str(now_time), ("17:30", "06:59")):
print(
"!!DEBUG!!....!!!!MARKET CLOSED!!!!:" +
str(now_time))
else:
# break
pick_from_epics.append(epic_id)
else:
print(
"!!DEBUG!!...skipping, NO GOOD EPIC....Checking next epic spreads..." +
str(i_count) +
"/" +
str(
len(main_epic_ids)))
time.sleep(1)
continue
except Exception as e:
# print(e)
print("!!!DEBUG!!!...No Data returned...Moving on!!")
pass
# sorted_list = sorted(spreads_and_epics, key=operator.itemgetter(1))
# for i in range(len(sorted_list)):
# print(sorted_list[i])
# print (max(sorted_list, key=lambda x: x[1]))
# lowest_epic = max(sorted_list, key=lambda x: x[1])
# return (str(lowest_epic[0]))
return (pick_from_epics)
def are_we_going_to_trade(epic_id, trade_direction, limit, stop_pips):
if trade_direction == "NONE":
return None
key = epic_id + '-' + trade_direction
# print(str(key) + " has position of " + str(positionMap[key]))
if idTooMuchPositions(key, positionMap):
print(str(key) +
" has position of " +
str(positionMap[key]) +
", hence should not trade")
return None
limitDistance_value = str(limit) # Limit
stopDistance_value = str(stop_pips) # Stop
##########################################################################
print(
"Order will be a " +
str(trade_direction) +
" Order, With a limit of: " +
str(limitDistance_value))
print(
"stopDistance_value for " +
str(epic_id) +
" will bet set at " +
str(stopDistance_value))
##########################################################################
# MAKE AN ORDER
base_url = REAL_OR_NO_REAL + '/positions/otc'
data = {
"direction": trade_direction,
"epic": epic_id,
"limitDistance": limitDistance_value,
"orderType": orderType_value,
"size": size_value,
"expiry": expiry_value,
"guaranteedStop": guaranteedStop_value,
"currencyCode": currencyCode_value,
"forceOpen": forceOpen_value,
"stopDistance": stopDistance_value}
r = requests.post(
base_url,
data=json.dumps(data),
headers=authenticated_headers)
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print(r.status_code)
print(r.reason)
print(r.text)
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
d = json.loads(r.text)
deal_ref = d['dealReference']
time.sleep(1)
# CONFIRM MARKET ORDER
base_url = REAL_OR_NO_REAL + '/confirms/' + deal_ref
auth_r = requests.get(base_url, headers=authenticated_headers)
d = json.loads(auth_r.text)
DEAL_ID = d['dealId']
print("DEAL ID : " + str(d['dealId']))
print(d['dealStatus'])
print(d['reason'])
if str(d['reason']) != "SUCCESS":
print("!!DEBUG!!...!!some thing occurred ERROR!!")
time.sleep(10)
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!!DEBUG!!!...Resuming...")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
else:
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...Yay, ORDER OPEN")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
time.sleep(3)
def Chandelier_Exit_formula(TRADE_DIR, ATR, Price):
# Chandelier Exit (long) = 22-day High - ATR(22) x 3
# Chandelier Exit (short) = 22-day Low + ATR(22) x 3
if TRADE_DIR == "BUY":
return float(Price) - float(ATR) * 3
elif TRADE_DIR == "SELL":
return float(Price) + float(ATR) * 3
def calculate_stop_loss(d):
price_ranges = []
closing_prices = []
first_time_round_loop = True
TR_prices = []
price_compare = "bid"
for i in d['prices']:
if first_time_round_loop:
###########################################
# First time round loop cannot get previous
###########################################
closePrice = i['closePrice'][price_compare]
closing_prices.append(closePrice)
high_price = i['highPrice'][price_compare]
low_price = i['lowPrice'][price_compare]
price_range = float(high_price - closePrice)
price_ranges.append(price_range)
first_time_round_loop = False
else:
prev_close = closing_prices[-1]
###########################################
closePrice = i['closePrice'][price_compare]
closing_prices.append(closePrice)
high_price = i['highPrice'][price_compare]
low_price = i['lowPrice'][price_compare]
price_range = float(high_price - closePrice)
price_ranges.append(price_range)
TR = max(high_price - low_price,
abs(high_price - prev_close),
abs(low_price - prev_close))
TR_prices.append(TR)
return str(int(float(max(TR_prices))))
if __name__ == '__main__':
while True:
try:
base_url = REAL_OR_NO_REAL + "/accounts"
auth_r = requests.get(base_url, headers=authenticated_headers)
d = json.loads(auth_r.text)
print("--------------Account Info-------------")
print("#################DEBUG#################")
print(auth_r.status_code)
print(auth_r.reason)
print(auth_r.text)
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
for i in d['accounts']:
if str(i['accountType']) == "SPREADBET":
balance = i['balance']['balance']
deposit = i['balance']['deposit']
percent_used = percentage(deposit, balance)
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print(
"!!DEBUG!!...Percent of account used ..." +
str(percent_used))
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
if float(percent_used) > 70:
print("!!DEBUG!!...Don't trade, Too much margin used up already")
time.sleep(60)
continue
else:
print("!!DEBUG!!...OK to trade, Account balance OK!!")
positionMap = {}
position_base_url = REAL_OR_NO_REAL + "/positions"
position_auth_r = requests.get(
position_base_url, headers=authenticated_headers)
position_json = json.loads(position_auth_r.text)
# print("-------------Position Info-------------")
# print("#################DEBUG#################")
# print(position_auth_r.status_code)
# print(position_auth_r.reason)
# print(position_auth_r.text)
# print("-----------------DEBUG-----------------")
# print("#################DEBUG#################")
for item in position_json['positions']:
direction = item['position']['direction']
dealSize = item['position']['dealSize']
ccypair = item['market']['epic']
key = ccypair + '-' + direction
if(key in positionMap):
positionMap[key] = dealSize + positionMap[key]
else:
positionMap[key] = dealSize
print('current position summary:')
print(positionMap)
tradeable_epic_ids = find_good_epics()
shuffle(tradeable_epic_ids)
except Exception as e:
print(e)
print("!!DEBUG!!...No Suitable Epics...Yet!!, Try again!!")
continue
for epic_id in tradeable_epic_ids:
try:
base_url = REAL_OR_NO_REAL + "/prices/" + epic_id + "/DAY/5"
# Price resolution (MINUTE, MINUTE_2, MINUTE_3, MINUTE_5,
# MINUTE_10, MINUTE_15, MINUTE_30, HOUR, HOUR_2, HOUR_3,
# HOUR_4, DAY, WEEK, MONTH)
auth_r = requests.get(base_url, headers=authenticated_headers)
d = json.loads(auth_r.text)
# print("-----------------DEBUG-----------------")
# print("#################DEBUG#################")
# print(auth_r.status_code)
# print(auth_r.reason)
# print(auth_r.text)
# print("-----------------DEBUG-----------------")
# print("#################DEBUG#################")
high_prices = []
low_prices = []
mid_prices = []
close_prices = []
ATR = calculate_stop_loss(d)
remaining_allowance = d['allowance']['remainingAllowance']
reset_time = humanize_time(
int(d['allowance']['allowanceExpiry']))
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("Remaining API Calls left: " + str(remaining_allowance))
print("Time to API Key reset: " + str(reset_time))
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
for i in d['prices']:
if i['highPrice']['bid'] is not None:
highPrice = i['highPrice']['bid']
high_prices.append(highPrice)
########################################
if i['lowPrice']['bid'] is not None:
lowPrice = i['lowPrice']['bid']
low_prices.append(lowPrice)
########################################
if i['closePrice']['bid'] is not None:
closePrice = i['lowPrice']['bid']
close_prices.append(closePrice)
########################################
mid_prices.append(float(midpoint(highPrice, lowPrice)))
close_prices = numpy.asarray(close_prices)
low_prices = numpy.asarray(low_prices)
high_prices = numpy.asarray(high_prices)
mid_prices = numpy.asarray(mid_prices)
xi = numpy.arange(0, len(low_prices))
# close_prices_slope, close_prices_intercept, close_prices_r_value, close_prices_p_value, close_prices_std_err = stats.linregress(
# xi, close_prices)
# low_prices_slope, low_prices_intercept, low_prices_r_value, low_prices_p_value, low_prices_std_err = stats.linregress(
# xi, low_prices)
# high_prices_slope, high_prices_intercept, high_prices_r_value, high_prices_p_value, high_prices_std_err = stats.linregress(
# xi, high_prices)
# mid_prices_slope, mid_prices_intercept, mid_prices_r_value, mid_prices_p_value, mid_prices_std_err = stats.linregress(
# xi, mid_prices)
close_prices_slope, close_prices_intercept, close_prices_lo_slope, close_prices_hi_slope = stats.theilslopes(
close_prices, xi, 0.99)
low_prices_slope, low_prices_intercept, low_prices_lo_slope, low_prices_hi_slope = stats.theilslopes(
low_prices, xi, 0.99)
high_prices_slope, high_prices_intercept, high_prices_lo_slope, high_prices_hi_slope = stats.theilslopes(
high_prices, xi, 0.99)
mid_prices_slope, mid_prices_intercept, mid_prices_lo_slope, mid_prices_hi_slope = stats.theilslopes(
mid_prices, xi, 0.99)
# print ("#####################################################")
# print ("#####################################################")
# print
# ("#####################################################")
# print ("Please uncomment this to enable graphs for debugging")
# print ("#####################################################")
# print ("#####################################################")
# print
# ("#####################################################")
# close_prices_line = close_prices_slope * xi + close_prices_intercept
# low_prices_line = low_prices_slope * xi + low_prices_intercept
# high_prices_line = high_prices_slope * xi + high_prices_intercept
# mid_prices_line = mid_prices_slope * xi + mid_prices_intercept
# plt.plot(
# xi,
# low_prices_line,
# xi,
# high_prices_line,
# xi,
# close_prices,
# 'g--',
# xi,
# mid_prices_line)
# plt.fill_between(
# xi,
# low_prices_line,
# high_prices_line,
# facecolor='green',
# alpha=0.5)
# plt.xlabel('X Axis')
# plt.ylabel('Y Axis')
# plt.show()
# plt.clf()
# print ("#####################################################")
# print ("#####################################################")
# print
# ("#####################################################")
# print ("Please uncomment this to enable graphs for debugging")
# print ("#####################################################")
# print ("#####################################################")
# print
# ("#####################################################")
base_url = REAL_OR_NO_REAL + '/markets/' + epic_id
auth_r = requests.get(
base_url, headers=authenticated_headers)
d = json.loads(auth_r.text)
# print("-----------------DEBUG-----------------")
# print("#################DEBUG#################")
# print(auth_r.status_code)
# print(auth_r.reason)
# print(auth_r.text)
# print("-----------------DEBUG-----------------")
# print("#################DEBUG#################")
current_bid = d['snapshot']['bid']
# 1 Standard Deviation
std_dev_1_MID_HIGH = float(mid_prices_intercept +
(abs(numpy.std(mid_prices) * 1)))
# 1 Standard Deviation
std_dev_1_MID_LOW = float(mid_prices_intercept -
(abs(numpy.std(mid_prices) * 1)))
# 2 Standard Deviation
std_dev_2_MID_HIGH = float(mid_prices_intercept +
(abs(numpy.std(mid_prices) * 2)))
# 2 Standard Deviation
std_dev_2_MID_LOW = float(mid_prices_intercept -
(abs(numpy.std(mid_prices) * 2)))
# 4 Standard Deviation, Most trades exist within 2/3 Standard Deviations
# This is a check for this, Potential trade reversal (Need to
# check)
OutOfBounds_LOW = float(mid_prices_intercept -
(abs(numpy.std(mid_prices) * 3)))
# 4 Standard Deviation
OutOfBounds_HIGH = float(mid_prices_intercept +
(abs(numpy.std(mid_prices) * 3)))
if float(current_bid) > float(std_dev_2_MID_HIGH):
trade_direction = "SELL"
elif float(current_bid) < float(std_dev_2_MID_LOW):
trade_direction = "BUY"
elif float(current_bid) > float(std_dev_1_MID_HIGH):
trade_direction = "SELL"
elif float(current_bid) < float(std_dev_1_MID_LOW):
trade_direction = "BUY"
elif float(current_bid) < float(OutOfBounds_LOW):
pip_limit = 9999999 # Junk Data
stop_pips = "999999" # Junk Data
trade_direction = "NONE"
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...Potential Trend Reversal....!!!!DOWN!!!!")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
elif float(current_bid) > float(OutOfBounds_HIGH):
pip_limit = 9999999 # Junk Data
stop_pips = "999999" # Junk Data
trade_direction = "NONE"
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...Potential Trend Reversal....!!!UP!!!")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
else:
pip_limit = 9999999 # Junk Data
stop_pips = "999999" # Junk Data
trade_direction = "NONE"
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...Within trading range...Leave!!")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
if trade_direction == "BUY":
pip_limit = int(abs(float(max(mid_prices)) -
float(current_bid)) / stop_loss_multiplier)
ce_stop = Chandelier_Exit_formula(
trade_direction, ATR, min(low_prices))
stop_pips = str(int(abs(float(current_bid) - (ce_stop))))
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...BUY!!")
print(str(epic_id))
print(
"!!DEBUG!!...Take Profit@...." +
str(pip_limit) +
" pips")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
elif trade_direction == "SELL":
pip_limit = int(abs(float(min(mid_prices)) -
float(current_bid)) / stop_loss_multiplier)
ce_stop = Chandelier_Exit_formula(
trade_direction, ATR, max(high_prices))
stop_pips = str(int(abs(float(current_bid) - (ce_stop))))
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...SELL!!")
print(str(epic_id))
print(
"!!DEBUG!!...Take Profit@...." +
str(pip_limit) +
" pips")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
elif trade_direction == "NONE":
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...Trade direction is NONE")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
# Sanity Checks
esma_new_margin_req = int(
percentage_of(
ESMA_new_margin,
current_bid))
if int(esma_new_margin_req) > int(stop_pips):
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!! :- ESMA Readjustment....")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
stop_pips = int(esma_new_margin_req)
if int(pip_limit) == 0:
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...Pip limit 0!!")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
trade_direction = "NONE"
if int(pip_limit) == 1:
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...Pip limit 1!!")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
trade_direction = "NONE"
if int(stop_pips) > int(too_high_margin):
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("!!DEBUG!!...Stop over high margin limit, No trade!!")
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
trade_direction = "NONE"
except Exception as e:
#print(e)
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print(
"!!!DEBUG!!!...Something fucked up with the Pricing or whatever!!, IGNORE THIS!!")
#print(traceback.format_exc())
#print(sys.exc_info()[0])
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
time.sleep(10)
continue
try:
are_we_going_to_trade(
epic_id, trade_direction, pip_limit, stop_pips)
except Exception as e:
print(e)
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
print("Something fucked up with the Order!!, IGNORE THIS!!")
#print(traceback.format_exc())
#print(sys.exc_info()[0])
print("-----------------DEBUG-----------------")
print("#################DEBUG#################")
time.sleep(10)
continue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment