Advertisement
ImDerekD

tcopy.py March6th (HAS RANGE PL)

Mar 6th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.25 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import csv
  4. from datetime import datetime
  5. import time
  6. from colorama import Back, Fore, Style
  7. import statistics
  8. from statistics import mean, stdev
  9.  
  10.  
  11.  
  12. Liquidity = float()
  13. ref_Num = int()
  14. prevVol = float(1)
  15. prevPrice = float(1)
  16. prevFlow = float(1)
  17. ValuePrice = float()
  18.  
  19. SumFlow = float()
  20. SumVol = float()
  21. Bearish = bool
  22. Bullish = bool
  23. Neutral = bool
  24.  
  25. Price1 = float()
  26. Price2 = float()
  27. prevPrice1 = float()
  28.  
  29. Last = float()
  30. PL = float()
  31. PLString = str()
  32. Chg = float()
  33. SignalList = []
  34.  
  35. MIV_Spike = float()
  36. MIV_Spike_Count = int()
  37. Avg_MIV_Spike = float()
  38.  
  39. SpreadList = []
  40. TotalSpread = float()
  41. AvgSpread = float()
  42. Avg2hrSpread = float()
  43. OneHourSpreadAvg = float()
  44.  
  45. SpreadRatio = float()
  46.  
  47. HRangeLiquidity = []
  48. LRangeLiquidity = []
  49.  
  50. HighCount = int()
  51. HighRangeLiqTotal = float()
  52. AvgHighRangeLiqChange = float()
  53.  
  54. LowCount = int()
  55. LowRangeLiqTotal = float()
  56. AvgLowRangeLiqChange = float()
  57.  
  58. Mark = int()
  59. Mark_The_Maker = bool
  60.  
  61.  
  62.  
  63. SignalStr = str()
  64. VolSTD = []
  65. AvgSTD = float()
  66. VTotalSTD = float()
  67.  
  68. VPL = []
  69.  
  70.  
  71. with open('/Users/King/Desktop/iSpy.csv', 'r') as csv_file:
  72. reader = csv.reader(csv_file)
  73. header = next(reader)
  74. for row in reader:
  75. ref_Num += 1
  76. dTime = str(datetime.strptime(row[0], '%a %b %d %H:%M'))
  77. Time = dTime[-14:]
  78. Open_Price = float(row[1])
  79. Close_Price = float(row[2])
  80. High_Price = float(row[3])
  81. Low_Price = float(row[4])
  82. Money_Flow = float(row[6])
  83. last = Close_Price
  84. Vol = row[5]
  85. f_Vol = float(Vol[:-1])
  86. m_Vol = str(Vol[-1:])
  87. if m_Vol == "K":
  88. f_Vol = f_Vol * 1000
  89. if m_Vol == "M":
  90. f_Vol = f_Vol * 1000000
  91. if m_Vol != "K" and m_Vol != "M":
  92. f_Vol = float(row[5])
  93. if f_Vol < 1:
  94. M_Price = HLCC
  95. else:
  96. M_Price = round(float(Money_Flow) / f_Vol, 2)
  97. HLCC = float(High_Price + Low_Price + Close_Price + Close_Price) / 4
  98. Diff = round(HLCC - M_Price, 2)
  99. MMM = float(f_Vol * HLCC)
  100. Liq_change = float(Money_Flow - MMM)
  101. Liquidity += Liq_change
  102. Date = str(Time[:5])
  103. military_time = str(Time[-8:])
  104. criteria = abs(.0035 * HLCC)
  105. # HLC3 = float(High_Price+ Low_Price + Close_Price + Close_Price + Close_Price) / 5
  106. # Mid = High_Price - abs(High_Price - Low_Price)
  107. VolSTD.append(f_Vol)
  108.  
  109.  
  110. SumVol += f_Vol
  111. SumFlow += Money_Flow
  112. ValuePrice1 = round(SumFlow / SumVol, 2)
  113. MidValPrice = [ValuePrice1,Close_Price]
  114. ValuePrice = round(statistics.median(MidValPrice), 2)
  115. VPL.append(ValuePrice)
  116.  
  117. Spread = round(abs(M_Price - ValuePrice), 2)
  118. SpreadList.append(Spread)
  119.  
  120.  
  121.  
  122.  
  123.  
  124. criteria2 = abs(.003 * HLCC)
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131. if ref_Num >=2:
  132. prevPrice1 = Close_Price
  133.  
  134.  
  135. if ref_Num % 2 != 0:
  136. Price1 = Close_Price
  137.  
  138. if ref_Num % 2 == 0:
  139. Price2 = Close_Price
  140.  
  141.  
  142. if ref_Num % 2 != 0 and ref_Num > 2:
  143. Last = Price2
  144. Chg = 100*round((Close_Price - Last) / Last, 4)
  145.  
  146. if ref_Num % 2 == 0 and ref_Num >= 2:
  147. Last = Price1
  148. Chg = 100*round((Close_Price - Last) / Last, 4)
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155. if Liq_change > 0:
  156. liqchgstr = '{:20,.2f}'.format(Liq_change)+Style.RESET_ALL
  157. LiqChangeStr = Fore.CYAN+liqchgstr+Style.RESET_ALL
  158.  
  159. if Liq_change < 0:
  160. liqchgstr = '{:20,.2f}'.format(Liq_change)+Style.RESET_ALL
  161. LiqChangeStr = Fore.RED+liqchgstr+Style.RESET_ALL
  162.  
  163. DateStr = Fore.YELLOW+str(Date)+Style.RESET_ALL
  164. TimeStr = Fore.YELLOW+str(military_time)+Style.RESET_ALL
  165.  
  166. if Liquidity > 0:
  167. Liqstr = '{:20,.2f}'.format(Liquidity)
  168. LiqStr = Fore.CYAN+Liqstr+Style.RESET_ALL
  169.  
  170. if Liquidity < 0:
  171. Liqstr = '{:20,.2f}'.format(Liquidity)
  172. LiqStr = Fore.WHITE+Liqstr+Style.RESET_ALL
  173.  
  174.  
  175.  
  176.  
  177. if Money_Flow > 0:
  178. MIV_Index = round(100 * (f_Vol / prevVol) - 100 * ((Money_Flow * HLCC) / (prevFlow * prevPrice)), 3)
  179. prevPrice = Close_Price
  180. prevFlow = Money_Flow
  181. prevVol = f_Vol
  182. MIV_Index_String = str(MIV_Index)
  183. LiqFlowPrice = round(abs(Liq_change / Money_Flow), 4)
  184.  
  185. if MIV_Index >= .25:
  186. MIV_Spike += abs(MIV_Index)
  187. MIV_Spike_Count += 1
  188. Avg_MIV_Spike = round(MIV_Spike / MIV_Spike_Count, 3)
  189.  
  190.  
  191. if abs(Liq_change) > 0:
  192. LiqFlowPrice = round(Money_Flow / abs(Liq_change) *.01, 3)
  193. VolLiqPrice = round(f_Vol / abs(Liq_change), 2)
  194. LiqFlowPriceClone = round(1000 * (abs(Liq_change) / Money_Flow) * .01, 4)
  195. ##################################################################################################################################################################
  196. if abs(M_Price - HLCC) >= criteria:
  197. Range_Clause = True
  198. diff = abs(M_Price - Close_Price)
  199. if Range_Clause == True:
  200. found_Price = Close_Price
  201. range_ref_String = str()
  202. Low_Range = round(HLCC - abs(float(M_Price - HLCC)), 2)
  203. High_Range = round(HLCC + abs(float(M_Price - HLCC)), 2)
  204. Low_Target = round(Low_Range - abs(float(M_Price - HLCC)), 2)
  205. High_Target = round(High_Range + abs(float(M_Price - HLCC)), 2)
  206. if M_Price >= High_Range:
  207. r_Price = M_Price
  208. t_Price = High_Target
  209. oppRange = Low_Range
  210. oppTarget = Low_Target
  211. tHigh = True
  212. found_Price = Close_Price
  213. tLow = False
  214. range_ref_String = 'HIGH TARGET'
  215. HRangeLiquidity.append(Liq_change)
  216. HighRangeLiqTotal += Liq_change
  217. HighCount += 1
  218. if MIV_Index > 0:
  219. range_ref_String = 'FALSE HIGH TARGET (CAPPER)'
  220. elif M_Price <= Low_Range:
  221. r_Price = M_Price
  222. t_Price = Low_Target
  223. oppRange = High_Range
  224. oppTarget = High_Target
  225. tLow = True
  226. tHigh = False
  227. found_Price = Close_Price
  228. range_ref_String = 'LOW TARGET'
  229. LRangeLiquidity.append(Liq_change)
  230. LowRangeLiqTotal += Liq_change
  231. LowCount += 1
  232.  
  233.  
  234.  
  235.  
  236. if range_ref_String == 'FALSE HIGH TARGET (CAPPER)':
  237. Program = 'HIGH CONFIDENCE'
  238. Signal = 'Sell'
  239.  
  240. if range_ref_String == 'LOW TARGET':
  241. if LiqFlowPriceClone >= .039:
  242. if LiqFlowPrice <= 2.65 and LiqFlowPrice >= 2.5:
  243. Program = 'MODERATE CONFIDENCE'
  244. Signal = 'SELL'
  245. if LiqFlowPrice <= 2.5 and LiqFlowPrice >= 2.45:
  246. Program = 'HIGH CONFIDENCE'
  247. Signal = 'SELL'
  248. if LiqFlowPrice <= 2.45:
  249. Program = 'VOLATILE LOW (HIGH CONFIDENCE)'
  250. Signal = 'SELL'
  251. else:
  252. Program = 'LOW CONFIDENCE / LIQUIDITY SEARCH'
  253.  
  254.  
  255.  
  256. if LiqFlowPriceClone >=.039 and range_ref_String == 'HIGH TARGET':
  257. if LiqFlowPrice < 2.6:
  258. Program = 'VOLATILE BULL TRAP (MODERATE CONFIDENCE)'
  259. Signal = 'SELL'
  260. if LiqFlowPrice > 2.6 and LiqFlowPrice < 2.8:
  261. if abs(MIV_Index) >= Avg_MIV_Spike * .75:
  262. HighRangeStr = str(High_Target)
  263. Program = 'HIGH CONFIDENCE (IMMEDIATE PRESSURE: %s)' % HighRangeStr
  264. Signal = 'BUY'
  265. else:
  266. Program = 'MODERATE CONFIDENCE'
  267. Signal = 'BUY'
  268.  
  269.  
  270. if LiqFlowPriceClone <= .037 and range_ref_String == 'HIGH TARGET':
  271. if LiqFlowPrice >= 2.75 and abs(MIV_Index) >= Avg_MIV_Spike * 3:
  272. oppTargetStr = str(Low_Range)
  273. Program = '<<LONG TERM>> BULLISH (BTMFD $%s)' % oppTargetStr
  274. Signal = 'BUY'
  275. if LiqFlowPrice <= 2.75 and LiqFlowPrice >= 2.55:
  276. Program = 'VERY HIGH CONFIDENCE'
  277. Signal = 'BUY'
  278.  
  279.  
  280.  
  281.  
  282. if LiqFlowPriceClone <= .036 and LiqFlowPrice > 2.8:
  283. if tLow == True:
  284. HighRangeStr = str(High_Range)
  285. if MIV_Index < 0:
  286. LowRangePT = round(Close_Price - abs(oppTarget - Low_Target), 2)
  287. LowRangePL = round(-1*(Close_Price - LowRangePT) / Close_Price, 2)
  288. Program = 'EXTREMELY HIGH CONFIDENCE (PT [%s])' % LowRangePL
  289. Signal = 'SELL'
  290. elif MIV_Index > 0:
  291. HighRangeStr = str(High_Range)
  292. Program = 'EXTREMELY HIGH CONFIDENCE (SELL %s)' % HighRangeStr
  293. Signal = 'SELL'
  294. if tHigh == True:
  295. if MIV_Index < 0 and abs(MIV_Index) > Avg_MIV_Spike:
  296. HighRangePT = round(Close_Price + (High_Target - Low_Target), 2)
  297. HighRangePL = round((HighRangePT - Close_Price) / Close_Price, 2)
  298. HighRangePTStr = str(HighRangePT)
  299. HighRangePLStr = str(HighRangePL)+'%'
  300. if HighRangePT > Close_Price:
  301. Program = 'MAXIMUM CONFIDENCE PT [$ %s]' % HighRangePT
  302. Signal = 'BUY'
  303. else:
  304. Program = 'SELL THE FUCKING RIP (<<IMMEDIATE TERM ONLY>>)'
  305. Signal = 'SELL'
  306.  
  307. if abs(MIV_Index) < Avg_MIV_Spike:
  308. HighRangeStr = str(High_Range)
  309. Program = 'BULLS FULLA SHIT [RIP] (SELL %s)' % HighRangeStr
  310. Signal = 'SELL'
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317. if tHigh == True and MIV_Index < 0:
  318. if abs(MIV_Index) >= Avg_MIV_Spike * 3:
  319. Program = 'EXTREMELY HIGH CONFIDENCE'
  320. Signal = 'BUY'
  321.  
  322. if LiqFlowPriceClone >= .042 and LiqFlowPrice <= 2.40:
  323. if range_ref_String == 'LOW TARGET':
  324. if MIV_Index < Avg_MIV_Spike:
  325. HR_String = str(High_Range)
  326. HT_String = str(High_Target)
  327. Program = 'FALSE LOW (BULLISH TERRITORY %s - %s)' % (HR_String, HT_String)
  328. Signal = 'BUY'
  329. else:
  330. Program = 'SKETCH AF LOW TARGET'
  331. Signal = 'SELL'
  332.  
  333.  
  334. elif range_ref_String == 'HIGH TARGET':
  335. Bullish = True
  336. Bearish = False
  337. LR_String = str(Low_Range)
  338. LT_String = str(Low_Target)
  339. Program = 'FALSE HIGH (BEARISH TERRITORY %s -%s)' % (LR_String, LT_String)
  340. Signal = 'SELL'
  341.  
  342.  
  343.  
  344.  
  345.  
  346. if range_ref_String == 'LOW TARGET':
  347. if abs(MIV_Index) >= Avg_MIV_Spike * 3:
  348. Program = 'WALL OF CHINA OVERHEAD'
  349. Signal = 'SELL'
  350.  
  351. if abs(MIV_Index) >= Avg_MIV_Spike * 1.5 and LiqFlowPriceClone >= .39:
  352. Program = 'IMMEDIATE SELLOFF (HIGH CONFIDENCE)'
  353. Signal = 'SELL'
  354.  
  355. if LiqFlowPriceClone <= .038:
  356. if LiqFlowPrice >= 2.82:
  357. Program = 'EXTREMELY HIGH CONFIDENCE'
  358. Signal = 'SELL'
  359. if LiqFlowPrice >= 2.70 and LiqFlowPrice <= 2.82:
  360. Program = 'VOLATILITY COMING (HIGH CONFIDENCE <LONG TERM>)'
  361. Signal = 'SELL'
  362. elif LiqFlowPrice <= 2.70:
  363. Program = 'POTENTIAL BOTTOM'
  364. Signal = 'BUY'
  365.  
  366.  
  367. if LiqFlowPriceClone < .037 and LiqFlowPrice < 2.8:
  368. Program = 'BOTTOM REVERSAL TARGET [$',Low_Target,']'
  369.  
  370. if LiqFlowPrice >= 2.6 and MIV_Index >= 0:
  371. if MIV_Index < Avg_MIV_Spike and LiqFlowPriceClone <= .038:
  372. if LiqFlowPrice < 2.80:
  373. Program = 'MMs IN CONTROL (BULLISH)'
  374. Signal = 'BUY'
  375. if LiqFlowPrice >= 2.8 and tLow == True:
  376. Program = 'MMs IN CONTROL (EXTREMELY BULLISH)'
  377. Signal = 'BULL'
  378. if LiqFlowPrice <= 2.7 and LiqFlowPrice >= 2.4:
  379. Program = 'MMs IN CONTROL (SLIGHTLY BULLISH)'
  380. Signal = 'NEUTRAL'
  381. if MIV_Index >= Avg_MIV_Spike and LiqFlowPrice <= 2.6:
  382. if LiqFlowPriceClone >= .04:
  383. Program = 'MMs IN CONTROL (BULLISH)'
  384. Signal = 'BUY'
  385.  
  386.  
  387. if Signal == 'BUY':
  388. Bearish = False
  389. Bullish = True
  390. SignalStr = Fore.CYAN+Signal+Style.RESET_ALL
  391.  
  392. if Signal == 'SELL':
  393. Bearish = True
  394. Bullish = False
  395. SignalStr = Fore.RED+Signal+Style.RESET_ALL
  396.  
  397.  
  398. SignalList.append(Signal)
  399.  
  400. 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)
  401. time.sleep(2.5)
  402. else:
  403. Range_Clause = False
  404. tHigh = False
  405. tLow = False
  406.  
  407. if HighCount > 0:
  408. AvgHighRangeLiqChange = HighRangeLiqTotal / HighCount
  409.  
  410. if LowCount > 0:
  411. AvgLowRangeLiqChange = LowRangeLiqTotal / LowCount
  412.  
  413. if abs(M_Price - HLCC) >= criteria2 and Range_Clause == False:
  414. Mark_The_Maker = True
  415. diff = abs(M_Price - Close_Price)
  416. MMrange_ref_String = str()
  417. Mark_Says = str()
  418. if Mark_The_Maker == True:
  419.  
  420. if M_Price > Close_Price:
  421. MMLow = True
  422. MMHigh = False
  423. MMrange_ref_String = '( MM HIGH RANGE )'
  424.  
  425. elif M_Price < Close_Price:
  426. MMLow = False
  427. MMHigh = True
  428. MMrange_ref_String = ' ( MM LOW RANGE )'
  429.  
  430.  
  431. if abs(MIV_Index) < Avg_MIV_Spike * .90 and LiqFlowPrice >= 3:
  432. Mark_Says = 'BOUTTA GET FUCKING VOLATILE'
  433. Signal = 'SELL'
  434.  
  435. if abs(MIV_Index) >= Avg_MIV_Spike and LiqFlowPrice >= 3:
  436. if LiqFlowPriceClone <= .035 and MIV_Index > 0:
  437. Mark_Says = 'UNNECESSARY HIGHS COMIN RIGHT UP ~ Mark'
  438.  
  439. if LiqFlowPriceClone >= .03 and LiqFlowPrice <= 3:
  440. if M_Price > Close_Price:
  441. Mark_Says = 'BULL TRAP ROTFL ~ Mark'
  442. Signal = 'SELL'
  443. elif M_Price < Close_Price:
  444. Mark_Says = 'BEAR TRAP GOTCHA LMAO ~ Mark'
  445. Signal = 'BUY'
  446.  
  447.  
  448. if LiqFlowPriceClone >= .033 and LiqFlowPrice <= 2.9:
  449. Mark_Says = 'BOUTTA GET REAL FUCKIN UGLY MY GUY ~ Mark'
  450. Signal = 'Sell'
  451.  
  452. if abs(MIV_Index) <= Avg_MIV_Spike * .5 or abs(MIV_Index) > Avg_MIV_Spike * 1.25:
  453. if LiqFlowPrice > 3.1:
  454. Mark_Says = 'CHOP CHOP MOTHERFUCKER ~ Mark'
  455. Signal = 'Neutral'
  456.  
  457. if LiqFlowPriceClone <= .033 and LiqFlowPrice >= 3.05:
  458. if MIV_Index < 0 and MMHigh == True:
  459. Mark_Says = 'I AIN W THE BULLSHIT ~ Mark'
  460. Signal = 'SELL'
  461. if MIV_Index < Avg_MIV_Spike:
  462. if MMLow == True and MIV_Index > 0:
  463. Mark_Says = 'BUY THE DIP COWARD ~ Mark'
  464. Signal = 'BUY'
  465.  
  466.  
  467.  
  468.  
  469. if Signal == 'BUY':
  470. Bearish = False
  471. Bullish = True
  472. Neutral = False
  473. SignalStr = Fore.CYAN+Signal+Style.RESET_ALL
  474.  
  475. if Signal == 'SELL':
  476. Bearish = True
  477. Bullish = False
  478. Neutral = False
  479. SignalStr = Fore.RED+Signal+Style.RESET_ALL
  480.  
  481. if Signal == 'NEUTRAL':
  482. Bearish = False
  483. Bullish = False
  484. SignalStr = Fore.YELLOW+Signal+Style.RESET_ALL
  485.  
  486. SignalList.append(Signal)
  487. 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)
  488. time.sleep(1.5)
  489.  
  490.  
  491. else:
  492. Mark_The_Maker = False
  493.  
  494. time.sleep(.0075)
  495.  
  496.  
  497.  
  498. if ref_Num % 2 != 0:
  499. Price1 = Close_Price
  500.  
  501. if ref_Num % 2 == 0:
  502. Price2 = Close_Price
  503.  
  504.  
  505. if ref_Num % 2 != 0 and ref_Num > 2:
  506. Last = Price2
  507. Chg = 100*round((Close_Price - Last) / Last, 4)
  508.  
  509. if ref_Num % 2 == 0 and ref_Num >= 2:
  510. Last = Price1
  511. Chg = 100*round((Close_Price - Last) / Last, 4)
  512.  
  513.  
  514. # for i in SignalList[-2:-1]:
  515. # print(i)
  516. # if i == 'BUY':
  517. # PL += Chg
  518. # if i == 'SELL':
  519. # PL += Chg*-1
  520. # if i == 'NEUTRAL':
  521. # PL += 0
  522. if Bullish == True:
  523. PL += Chg
  524. if Bearish == True:
  525. PL += Chg*-1
  526.  
  527. PLR = round(PL, 3)
  528. if PL > 0:
  529. PLString = Fore.CYAN+str(PLR)+'%'
  530. if PL < 0:
  531. PLString = Fore.RED+str(PLR)+'%'
  532.  
  533.  
  534.  
  535. if Range_Clause == False and Mark_The_Maker == False:
  536. if HighCount > 0:
  537. if Liq_change >= AvgHighRangeLiqChange * .80:
  538. LiqChangeStr = Fore.BLUE+Back.GREEN+Style.BRIGHT+liqchgstr
  539.  
  540. if LowCount > 0:
  541. if Liq_change <= AvgLowRangeLiqChange * .80:
  542. LiqChangeStr = Fore.RED+Back.YELLOW+Style.BRIGHT+liqchgstr
  543.  
  544. print(DateStr, TimeStr,' Current Liquidity:'+LiqStr,' Liq Change:'+LiqChangeStr,' Last Price:',Close_Price, SignalStr+Style.RESET_ALL+' ['+PLString+Style.RESET_ALL+']',' ',ValuePrice,' Spread: [$',Spread,']', M_Price)
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564. '''if abs(Liq_change) >= 1000000:
  565. 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)
  566. else:'''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement