Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import csv
- from datetime import datetime
- import time
- from colorama import Back, Fore, Style
- import statistics
- from statistics import mean, stdev
- Liquidity = float()
- ref_Num = int()
- prevVol = float(1)
- prevPrice = float(1)
- prevFlow = float(1)
- ValuePrice = float()
- SumFlow = float()
- SumVol = float()
- Bearish = bool
- Bullish = bool
- Neutral = bool
- RangePL = float(0)
- Price1 = float()
- Price2 = float()
- prevPrice1 = float()
- Last = float()
- PL = float()
- PLString = str()
- RangePLString = str()
- Chg = float()
- SignalList = []
- MIV_Spike = float()
- MIV_Spike_Count = int()
- Avg_MIV_Spike = float()
- SpreadList = []
- TotalSpread = float()
- AvgSpread = float()
- Avg2hrSpread = float()
- OneHourSpreadAvg = float()
- SpreadRatio = float()
- HRangeLiquidity = []
- LRangeLiquidity = []
- HighCount = int()
- HighRangeLiqTotal = float()
- AvgHighRangeLiqChange = float()
- LowCount = int()
- LowRangeLiqTotal = float()
- AvgLowRangeLiqChange = float()
- Mark = int()
- Mark_The_Maker = bool
- Signal = str()
- SignalStr = str()
- VolSTD = []
- AvgSTD = float()
- VTotalSTD = float()
- VPL = []
- Program = str()
- with open('/Users/King/iSpy.csv', 'r') as csv_file:
- reader = csv.reader(csv_file)
- header = next(reader)
- for row in reader:
- ref_Num += 1
- dTime = str(datetime.strptime(row[0], '%a %b %d %H:%M'))
- Time = dTime[-14:]
- Open_Price = float(row[1])
- Close_Price = float(row[2])
- High_Price = float(row[3])
- Low_Price = float(row[4])
- Money_Flow = float(row[6])
- last = Close_Price
- Vol = row[5]
- f_Vol = float(Vol[:-1])
- m_Vol = str(Vol[-1:])
- if m_Vol == "K":
- f_Vol = f_Vol * 1000
- if m_Vol == "M":
- f_Vol = f_Vol * 1000000
- if m_Vol != "K" and m_Vol != "M":
- f_Vol = float(row[5])
- if f_Vol < 1:
- M_Price = HLCC
- else:
- M_Price = round(float(Money_Flow) / f_Vol, 2)
- HLCC = float(High_Price + Low_Price + Close_Price + Close_Price) / 4
- Diff = round(HLCC - M_Price, 2)
- MMM = float(f_Vol * HLCC)
- Liq_change = float(Money_Flow - MMM)
- Liquidity += Liq_change
- Date = str(Time[:5])
- military_time = str(Time[-8:])
- criteria = abs(.0035 * HLCC)
- # HLC3 = float(High_Price+ Low_Price + Close_Price + Close_Price + Close_Price) / 5
- # Mid = High_Price - abs(High_Price - Low_Price)
- VolSTD.append(f_Vol)
- SumVol += f_Vol
- SumFlow += Money_Flow
- ValuePrice1 = round(SumFlow / SumVol, 2)
- MidValPrice = [ValuePrice1,Close_Price]
- ValuePrice = round(statistics.median(MidValPrice), 2)
- VPL.append(ValuePrice)
- Spread = round(abs(M_Price - ValuePrice), 2)
- SpreadList.append(Spread)
- criteria2 = abs(.003 * HLCC)
- if ref_Num >=2:
- prevPrice1 = Close_Price
- if ref_Num % 2 != 0:
- Price1 = Close_Price
- if ref_Num % 2 == 0:
- Price2 = Close_Price
- if ref_Num % 2 != 0 and ref_Num > 2:
- Last = Price2
- Chg = 100*round((Close_Price - Last) / Last, 4)
- if ref_Num % 2 == 0 and ref_Num >= 2:
- Last = Price1
- Chg = 100*round((Close_Price - Last) / Last, 4)
- if Liq_change > 0:
- liqchgstr = '{:20,.2f}'.format(Liq_change)+Style.RESET_ALL
- LiqChangeStr = Fore.CYAN+liqchgstr+Style.RESET_ALL
- if Liq_change < 0:
- liqchgstr = '{:20,.2f}'.format(Liq_change)+Style.RESET_ALL
- LiqChangeStr = Fore.RED+liqchgstr+Style.RESET_ALL
- DateStr = Fore.YELLOW+str(Date)+Style.RESET_ALL
- TimeStr = Fore.YELLOW+str(military_time)+Style.RESET_ALL
- if Liquidity > 0:
- Liqstr = '{:20,.2f}'.format(Liquidity)
- LiqStr = Fore.CYAN+Liqstr+Style.RESET_ALL
- if Liquidity < 0:
- Liqstr = '{:20,.2f}'.format(Liquidity)
- LiqStr = Fore.WHITE+Liqstr+Style.RESET_ALL
- if Money_Flow > 0:
- MIV_Index = round(100 * (f_Vol / prevVol) - 100 * ((Money_Flow * HLCC) / (prevFlow * prevPrice)), 3)
- prevPrice = Close_Price
- prevFlow = Money_Flow
- prevVol = f_Vol
- MIV_Index_String = str(MIV_Index)
- LiqFlowPrice = round(abs(Liq_change / Money_Flow), 4)
- if MIV_Index >= .25:
- MIV_Spike += abs(MIV_Index)
- MIV_Spike_Count += 1
- Avg_MIV_Spike = round(MIV_Spike / MIV_Spike_Count, 3)
- if abs(Liq_change) > 0:
- LiqFlowPrice = round(Money_Flow / abs(Liq_change) *.01, 3)
- VolLiqPrice = round(f_Vol / abs(Liq_change), 2)
- LiqFlowPriceClone = round(1000 * (abs(Liq_change) / Money_Flow) * .01, 4)
- ##################################################################################################################################################################
- if abs(M_Price - HLCC) >= criteria:
- Range_Clause = True
- diff = abs(M_Price - Close_Price)
- if Range_Clause == True:
- found_Price = Close_Price
- range_ref_String = str()
- Low_Range = round(HLCC - abs(float(M_Price - HLCC)), 2)
- High_Range = round(HLCC + abs(float(M_Price - HLCC)), 2)
- Low_Target = round(Low_Range - abs(float(M_Price - HLCC)), 2)
- High_Target = round(High_Range + abs(float(M_Price - HLCC)), 2)
- if M_Price >= High_Range:
- r_Price = M_Price
- t_Price = High_Target
- oppRange = Low_Range
- oppTarget = Low_Target
- tHigh = True
- found_Price = Close_Price
- tLow = False
- range_ref_String = 'HIGH TARGET'
- HRangeLiquidity.append(Liq_change)
- HighRangeLiqTotal += Liq_change
- HighCount += 1
- if MIV_Index > 0:
- range_ref_String = 'FALSE HIGH TARGET (CAPPER)'
- Signal = 'SELL'
- elif M_Price <= Low_Range:
- r_Price = M_Price
- t_Price = Low_Target
- oppRange = High_Range
- oppTarget = High_Target
- tLow = True
- tHigh = False
- found_Price = Close_Price
- range_ref_String = 'LOW TARGET'
- LRangeLiquidity.append(Liq_change)
- LowRangeLiqTotal += Liq_change
- LowCount += 1
- if range_ref_String == 'LOW TARGET':
- if LiqFlowPriceClone >= .039:
- if LiqFlowPrice <= 2.65 and LiqFlowPrice >= 2.5:
- Program = 'MODERATE CONFIDENCE'
- Signal = 'SELL'
- if LiqFlowPrice <= 2.5 and LiqFlowPrice >= 2.45:
- Program = 'HIGH CONFIDENCE'
- Signal = 'SELL'
- if LiqFlowPrice <= 2.45:
- Program = 'VOLATILE LOW (HIGH CONFIDENCE)'
- Signal = 'SELL'
- else:
- Program = 'LOW CONFIDENCE / LIQUIDITY SEARCH'
- Signal = 'Neutral'
- if LiqFlowPriceClone >=.039 and range_ref_String == 'HIGH TARGET':
- if LiqFlowPrice < 2.6:
- Program = 'VOLATILE BULL TRAP (MODERATE CONFIDENCE)'
- Signal = 'SELL'
- if LiqFlowPrice > 2.6 and LiqFlowPrice < 2.8:
- if abs(MIV_Index) >= Avg_MIV_Spike * .75:
- HighRangeStr = str(High_Target)
- Program = 'HIGH CONFIDENCE (IMMEDIATE PRESSURE: %s)' % HighRangeStr
- Signal = 'BUY'
- else:
- Program = 'MODERATE CONFIDENCE'
- Signal = 'BUY'
- if LiqFlowPriceClone <= .037 and range_ref_String == 'HIGH TARGET':
- if LiqFlowPrice >= 2.75 and abs(MIV_Index) >= Avg_MIV_Spike * 3:
- oppTargetStr = str(Low_Range)
- Program = '<<LONG TERM>> BULLISH (BTMFD $%s)' % oppTargetStr
- Signal = 'BUY'
- if LiqFlowPrice <= 2.75 and LiqFlowPrice >= 2.55:
- Program = 'VERY HIGH CONFIDENCE'
- Signal = 'BUY'
- if LiqFlowPriceClone <= .036 and LiqFlowPrice > 2.8:
- if tLow == True:
- HighRangeStr = str(High_Range)
- if MIV_Index < 0:
- LowRangePT = round(Close_Price - abs(oppTarget - Low_Target), 2)
- LowRangePL = round(-1*(Close_Price - LowRangePT) / Close_Price, 2)
- Program = 'EXTREMELY HIGH CONFIDENCE (PT [%s])' % LowRangePL
- Signal = 'SELL'
- elif MIV_Index > 0:
- HighRangeStr = str(High_Range)
- Program = 'EXTREMELY HIGH CONFIDENCE (SELL %s)' % HighRangeStr
- Signal = 'SELL'
- if tHigh == True:
- if MIV_Index < 0 and abs(MIV_Index) > Avg_MIV_Spike:
- HighRangePT = round(Close_Price + (High_Target - Low_Target), 2)
- HighRangePL = round((HighRangePT - Close_Price) / Close_Price, 2)
- HighRangePTStr = str(HighRangePT)
- HighRangePLStr = str(HighRangePL)+'%'
- if HighRangePT > Close_Price:
- Program = 'MAXIMUM CONFIDENCE PT [$ %s]' % HighRangePT
- Signal = 'BUY'
- else:
- Program = 'SELL THE FUCKING RIP (<<IMMEDIATE TERM ONLY>>)'
- Signal = 'SELL'
- if abs(MIV_Index) < Avg_MIV_Spike:
- HighRangeStr = str(High_Range)
- Program = 'BULLS FULLA SHIT [RIP] (SELL %s)' % HighRangeStr
- Signal = 'SELL'
- if tHigh == True and MIV_Index < 0:
- if abs(MIV_Index) >= Avg_MIV_Spike * 3:
- Program = 'EXTREMELY HIGH CONFIDENCE'
- Signal = 'BUY'
- if LiqFlowPriceClone >= .042 and LiqFlowPrice <= 2.40:
- if range_ref_String == 'LOW TARGET':
- if MIV_Index < Avg_MIV_Spike:
- HR_String = str(High_Range)
- HT_String = str(High_Target)
- Program = 'FALSE LOW (BULLISH TERRITORY %s - %s)' % (HR_String, HT_String)
- Signal = 'BUY'
- else:
- Program = 'SKETCH AF LOW TARGET'
- Signal = 'SELL'
- elif range_ref_String == 'HIGH TARGET':
- Bullish = True
- Bearish = False
- LR_String = str(Low_Range)
- LT_String = str(Low_Target)
- Program = 'FALSE HIGH (BEARISH TERRITORY %s -%s)' % (LR_String, LT_String)
- Signal = 'SELL'
- if range_ref_String == 'LOW TARGET':
- if abs(MIV_Index) >= Avg_MIV_Spike * 3:
- Program = 'WALL OF CHINA OVERHEAD'
- Signal = 'SELL'
- if abs(MIV_Index) >= Avg_MIV_Spike * 1.5 and LiqFlowPriceClone >= .39:
- Program = 'IMMEDIATE SELLOFF (HIGH CONFIDENCE)'
- Signal = 'SELL'
- if LiqFlowPriceClone <= .038:
- if LiqFlowPrice >= 2.82:
- Program = 'EXTREMELY HIGH CONFIDENCE'
- Signal = 'SELL'
- if LiqFlowPrice >= 2.70 and LiqFlowPrice <= 2.82:
- Program = 'VOLATILITY COMING (HIGH CONFIDENCE <LONG TERM>)'
- Signal = 'SELL'
- elif LiqFlowPrice <= 2.70:
- Program = 'POTENTIAL BOTTOM'
- Signal = 'BUY'
- if LiqFlowPriceClone < .037 and LiqFlowPrice < 2.8:
- Program = 'BOTTOM REVERSAL TARGET [$',Low_Target,']'
- Signal = 'SELL'
- if range_ref_String == 'LOW TARGET' or range_ref_String == 'HIGH TARGET':
- if LiqFlowPrice >= 2.6 and MIV_Index < 0:
- if abs(MIV_Index) < Avg_MIV_Spike and LiqFlowPriceClone <= .039:
- if LiqFlowPrice < 2.80:
- Program = 'MMs IN CONTROL (BULLISH)'
- Signal = 'BUY'
- if LiqFlowPrice >= 2.8:
- Program = 'MMs IN CONTROL (EXTREMELY BULLISH)'
- Signal = 'BUY'
- if LiqFlowPrice <= 2.7 and LiqFlowPrice >= 2.4:
- Program = 'MMs IN CONTROL (SLIGHTLY BULLISH)'
- Signal = 'BUY'
- if abs(MIV_Index) >= Avg_MIV_Spike and LiqFlowPrice <= 2.6:
- if LiqFlowPriceClone >= .04:
- Program = 'MMs IN CONTROL (BULLISH)'
- Signal = 'BUY'
- if Signal == 'BUY':
- Bearish = False
- Bullish = True
- Neutral = False
- SignalStr = Fore.CYAN+Signal+Style.RESET_ALL
- if Signal == 'SELL':
- Bearish = True
- Bullish = False
- Neutral = False
- SignalStr = Fore.RED+Signal+Style.RESET_ALL
- if Signal == 'NEUTRAL':
- Bearish = False
- Bullish = False
- Neutral = True
- SignalStr = Fore.YELLOW+Signal+Style.RESET_ALL
- SignalList.append(Signal)
- print(Date, military_time,' Current Liquidity:', '{:20,.2f}'.format(Liquidity), ' Liq Change:','{:20,.2f}'.format(Liq_change), ' Last Price:', Close_Price, range_ref_String+' Type: '+Program+' MIV [',MIV_Index,'%]',' LFP [',LiqFlowPrice,']',' LFP Clone [',LiqFlowPriceClone,']',' Avg MIV:',Avg_MIV_Spike, 'SIGNAL: ',Signal)
- time.sleep(2.5)
- else:
- Range_Clause = False
- tHigh = False
- tLow = False
- if HighCount > 0:
- AvgHighRangeLiqChange = HighRangeLiqTotal / HighCount
- if LowCount > 0:
- AvgLowRangeLiqChange = LowRangeLiqTotal / LowCount
- if abs(M_Price - HLCC) >= criteria2 and Range_Clause == False:
- Mark_The_Maker = True
- diff = abs(M_Price - Close_Price)
- MMrange_ref_String = str()
- Mark_Says = str()
- if Mark_The_Maker == True:
- if M_Price > Close_Price:
- MMLow = True
- MMHigh = False
- MMrange_ref_String = '( MM HIGH RANGE )'
- elif M_Price < Close_Price:
- MMLow = False
- MMHigh = True
- MMrange_ref_String = ' ( MM LOW RANGE )'
- if abs(MIV_Index) < Avg_MIV_Spike * .90 and LiqFlowPrice >= 3:
- Mark_Says = 'BOUTTA GET FUCKING VOLATILE'
- Signal = 'SELL'
- if abs(MIV_Index) >= Avg_MIV_Spike and LiqFlowPrice >= 3:
- if LiqFlowPriceClone <= .035 and MIV_Index > 0:
- Mark_Says = 'UNNECESSARY HIGHS COMIN RIGHT UP ~ Mark'
- Signal = 'BUY'
- if LiqFlowPriceClone >= .03 and LiqFlowPrice <= 3:
- if M_Price > Close_Price:
- Mark_Says = 'BULL TRAP ROTFL ~ Mark'
- Signal = 'SELL'
- elif M_Price < Close_Price:
- Mark_Says = 'BEAR TRAP GOTCHA LMAO ~ Mark'
- Signal = 'BUY'
- if LiqFlowPriceClone >= .033 and LiqFlowPrice <= 2.9:
- Mark_Says = 'BOUTTA GET REAL FUCKIN UGLY MY GUY ~ Mark'
- Signal = 'SELL'
- if abs(MIV_Index) <= Avg_MIV_Spike * .5 or abs(MIV_Index) > Avg_MIV_Spike * 1.25:
- if LiqFlowPrice > 3.1:
- Mark_Says = 'CHOP CHOP MOTHERFUCKER ~ Mark'
- Signal = 'SELL'
- if LiqFlowPriceClone <= .033 and LiqFlowPrice >= 3.05:
- if MIV_Index < 0 and MMHigh == True:
- Mark_Says = 'I AIN W THE BULLSHIT ~ Mark'
- Signal = 'SELL'
- if MIV_Index < Avg_MIV_Spike:
- if MMLow == True and MIV_Index > 0:
- Mark_Says = 'BUY THE DIP COWARD ~ Mark'
- Signal = 'BUY'
- if Signal == 'BUY':
- Bearish = False
- Bullish = True
- Neutral = False
- SignalStr = Fore.CYAN+Signal+Style.RESET_ALL
- if Signal == 'SELL':
- Bearish = True
- Bullish = False
- Neutral = False
- SignalStr = Fore.RED+Signal+Style.RESET_ALL
- if Signal == 'NEUTRAL':
- Bearish = False
- Bullish = False
- Neutral = True
- SignalStr = Fore.YELLOW+Signal+Style.RESET_ALL
- SignalList.append(Signal)
- print(Date, military_time,' Current Liquidity:', '{:20,.2f}'.format(Liquidity), ' Liq Change:','{:20,.2f}'.format(Liq_change), ' Last Price:', Close_Price, MMrange_ref_String+' Type: '+Mark_Says+' MIV [',MIV_Index,'%]',' LFP [',LiqFlowPrice,']',' LFP Clone [',LiqFlowPriceClone,']',' Avg MIV:',Avg_MIV_Spike, '$Price: ',M_Price, 'SIGNAL:'+Signal)
- time.sleep(1.5)
- else:
- Mark_The_Maker = False
- time.sleep(.0075)
- if ref_Num % 2 != 0:
- Price1 = Close_Price
- if ref_Num % 2 == 0:
- Price2 = Close_Price
- if ref_Num % 2 != 0 and ref_Num > 2:
- Last = Price2
- Chg = 100*round((Close_Price - Last) / Last, 4)
- if ref_Num % 2 == 0 and ref_Num >= 2:
- Last = Price1
- Chg = 100*round((Close_Price - Last) / Last, 4)
- if Bullish == True:
- PL += Chg
- if Bearish == True:
- PL += Chg*-1
- if Neutral == True:
- PL += 0
- PLR = round(PL, 3)
- if PL > 0:
- PLString = Fore.CYAN+str(PLR)+'%'
- if PL < 0:
- PLString = Fore.RED+str(PLR)+'%'
- if RangePL > 0:
- RangePLString = Fore.CYAN+str(PLR)+'%'
- if RangePL < 0:
- RangePLString = Fore.RED+str(PLR)+'%'
- if Range_Clause == False and Mark_The_Maker == False:
- if HighCount > 0:
- if Liq_change >= AvgHighRangeLiqChange * .80:
- LiqChangeStr = Fore.BLUE+Back.GREEN+Style.BRIGHT+liqchgstr
- if LowCount > 0:
- if Liq_change <= AvgLowRangeLiqChange * .80:
- LiqChangeStr = Fore.RED+Back.YELLOW+Style.BRIGHT+liqchgstr
- print(DateStr, TimeStr,' Current Liquidity:'+LiqStr,' Liq Change:'+LiqChangeStr,' Last Price:',Close_Price, SignalStr+Style.RESET_ALL+' ['+PLString+Style.RESET_ALL+']')
- '''if abs(Liq_change) >= 1000000:
- print(DateStr, TimeStr,' Current Liquidity:'+LiqStr,' Liq Change:'+LiqChangeStr,' Last Price:',Close_Price, SignalStr+Style.RESET_ALL+' ['+PLString+Style.RESET_ALL+']',' ',MIV_Index,' LFP: [',LiqFlowPrice,']',' LFPClone:[',LiqFlowPriceClone,']',' MIV: ',MIV_Index,' Avg MIV: ',Avg_MIV_Spike, '$Price: ',M_Price)
- else:'''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement