home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a079 / 1.img / FPDG.LZH / VOL2NUM0 / STOCK / PLOT.PRG < prev    next >
Encoding:
Text File  |  1993-01-20  |  5.3 KB  |  234 lines

  1. ******************************************************************
  2. * NAME: PLOT
  3. * PURPOSE: Plots stocks loaded from Prodigy stock quote service
  4. * This version 11/01/91 averages values to display on a single screen
  5. *
  6. ******************************************************************
  7. *CLEAR ALL
  8. MyPath = ""
  9. *MyPath = "\FOXPRO\STOCKS"
  10. SET STATUS OFF
  11. SET SCOREBOARD OFF
  12. SET TALK OFF
  13. SET COLOR TO w+/b
  14. DEFINE WINDOW HEADER FROM 4,40 TO 11,90 SYSTEM COLOR SCHEME 8 TITLE "Stock"
  15. CLEAR
  16. PDisplay = TYPE("quick")='L'
  17. USE MyPath+"Stocks" ORDER name
  18. USE MyPath+"PORT" ORDER symbol IN 2
  19. *
  20. ***** Fetch the symbols
  21. *
  22. SELECT 2
  23. COUNT TO NSymbols
  24. DECLARE SymTable[NSymbols,2]
  25. COPY TO ARRAY SymTable FIELDS Symbol,Descrip ALL
  26. SELECT 1
  27.  
  28. PrtFlag = SET("PRINT")="ON"
  29. PCHAR =IIF(PrtFlag,CHR(242), chr(220))
  30. L=1
  31. *
  32. ***** Plot all of the stocks and mutual funds ***
  33. *
  34.  
  35. *FOR L = 1 TO NSymbols
  36.     * DO Plotter WITH TRIM(SymTable[L,1])
  37. *    IF Prtflag
  38. *        ?
  39. *    ELSE 
  40. *        Answer = Prompter()
  41. *        CLEAR
  42. *        IF Answer = 2
  43. *            EXIT
  44. *        ELSE
  45. *            IF Answer = 3
  46. *                L = L - 1
  47. *            ENDIF
  48. *        ENDIF
  49. *    ENDIF 
  50. *ENDFOR
  51. DEACTIVATE WINDOW HEADER
  52. IF PrtFlag
  53.     SET PRINTER OFF
  54.     EJECT
  55.     ? "Printer was turned off"
  56. ELSE
  57.     DO CHOOSE  && Plot selected stocks
  58. ENDIF
  59. RETURN
  60. *
  61. ********************************************************
  62. * WAITER - Does a Wait and returns results in upper case
  63. *
  64. FUNCTION WAITER
  65. PARAMETER Message
  66. WAIT WINDOW Message TO Ans
  67. RETURN UPPER(Ans)
  68. *
  69. *****************************************************
  70. * Procedure that does the plot for a stock
  71. *
  72. PROCEDURE Plotter
  73. PARAMETER Symb
  74. ACTIVATE SCREEN
  75. CLEAR
  76. @ 0,0
  77. SELECT 2
  78. SEEK TRIM(Symb)
  79. desc=IIF(FOUND(),descrip,"")
  80. SELECT 1
  81. SEEK symb 
  82. CALCULATE min(iif(volume < 10, last, low)) ,max(iif(volume < 10, last, high)), ;
  83.          cnt(), min(volume) ,max(volume);
  84.          TO min1,max1,cnt1,vmin1,vmax1 WHILE name=symb
  85. Increment  = IIF(max1=min1, 0, 40/(max1-min1)) 
  86. VIncrement = IIF(vmax1=vmin1, 0, 20/(vmax1-vmin1))
  87. NAVERAGE   = int(cnt1/35)
  88.  
  89. DO ShowHead 
  90.  
  91. STORE 0 TO i,v,vol
  92. hilo='  '
  93. SEEK symb
  94. SET FILTER TO NAME = Symb
  95. SCAN   && WHILE NAME=Symb
  96.     IF PDisplay AND naverage > 1 && Display page at a time 
  97.         i=i+1
  98.         IF i <= NAVERAGE
  99.             v1   = IIF(last=0, change, last)
  100.             V    = V + v1
  101.             vol  = max(vol,volume)
  102.             hilo = IIF(v1=max1,"Hi",IIF(v1=min1,"Lo",hilo))
  103.             amount = svalue
  104.         ELSE
  105.             DO PlotALine WITH v/NAverage,vol,amount,0,0
  106.             hilo = '  '
  107.             v=0
  108.             vol=0
  109.             i=0
  110.         ENDIF
  111.     ELSE
  112.         v1= IIF( last=0, change, last )
  113.         hilo = IIF( v1=max1, "Hi", IIF(v1=min1, "Lo", "  "))
  114.         amount = svalue
  115.         DO PlotALine WITH v1,volume,amount,high,low
  116.         hilo='  '
  117.     ENDIF   
  118.     if inkey()#0 AND upper(chr(inkey(0))) = "S"
  119.         EXIT
  120.     ENDIF
  121. ENDSCAN
  122. IF i>0
  123.     DO PlotALine WITH v/i,vol/i,amount,0,0
  124. ENDIF
  125. RETURN
  126. *
  127. **************************************************************
  128. * ShowHead - Displays stock symbol and minimum and maximum 
  129. *            stock price and volume
  130. *
  131. PROCEDURE ShowHead
  132. ACTIVATE WINDOW Header
  133. clear
  134.    @ 1,1 SAY "Symbol: "+Symb
  135.    @ 2,1 SAY "Name:   " + desc
  136.    @ 3,1 SAY "Stock Range:"
  137.    @ 3,17 SAY min1 picture "###.###"
  138.    @ 3,26 SAY "to"
  139.    @ 3,29 SAY max1 picture "###.###"
  140. IF vmax1 > 10
  141.     @ 4,1 SAY "Volume Range:"
  142.     @ 4,15 SAY vmin1 Picture "########"
  143.     @ 4,26 SAY "to"
  144.     @ 4,29 SAY vmax1 PICTURE "########" 
  145. ENDIF
  146. ACTIVATE SCREEN
  147. RETURN
  148.  
  149. **************************************************************
  150. * PlotALine - Plots a line
  151. PROCEDURE PlotALine
  152. PARAMETER v, vol,amt1,hi,lo
  153. J =INT((V-min1)*Increment)+1
  154. k =78-INT((vol-vmin1)*vIncrement)
  155.  
  156. IF hilo='Hi'
  157.     SET COLOR TO w+/r
  158. ENDIF
  159. IF hilo='Lo'
  160.     SET COLOR TO w+/bg
  161. ENDIF
  162.  
  163. ? hilo,STR(V,9,3),str(amt1,9,3),DATE
  164. zcol=col()
  165. @ row(),zcol SAY repli(PCHAR,J)
  166.  
  167. IF hilo#'  '
  168.     SET COLOR TO w+/b
  169. ENDIF
  170.     
  171. IF k<79 AND vmax1>10
  172. *    @ ROW(),k+20  SAY REPLICATE(PCHAR,79-k) COLOR w/rg
  173. ENDIF
  174. IF hi#lo .and. vmax1>10
  175.     ilow  = INT((lo-min1)*Increment)+zcol
  176.     ihigh = INT((hi-min1)*Increment)+zcol
  177.     @ ROW(),ilow SAY REPLICATE(CHR(223), ihigh+1-ilow) COLOR rg+/rb
  178. ENDIF
  179. RETURN
  180. *
  181. ***********************************************************
  182. * Choose - Displays popup menu of stock quotes
  183. *          User selects a popup bar and ACTION is called
  184. *
  185. PROCEDURE Choose
  186. DEFINE POPUP Stock FROM 5,2 MESSAGE "Select a stock" COLOR SCHEME 9
  187. FOR ISYM = 1 TO NSymbols 
  188.   DEFINE BAR ISYM OF Stock ;
  189.         PROMPT SYMTABLE[ISYM,1]+" - "+ SYMTABLE[ISYM,2]
  190. ENDFOR
  191. DEFINE BAR NSymbols+1 OF Stock Prompt "Z - Toggle PLOT display mode" 
  192. DEFINE BAR NSymbols+2 OF Stock Prompt "Quit"
  193.  
  194. ON SELECTION POPUP Stock DO Action
  195. ACTIVATE POPUP Stock 
  196. RELEASE POPUP Stock
  197. RETURN
  198. *******************************************************************
  199. *  Action -  Action procedure for popup Stock
  200. *
  201. PROCEDURE Action
  202. HIDE POPUP Stock
  203. prmpt = PROMPT()
  204. DO CASE
  205.     CASE 'Z -'$prmpt
  206.         PDisplay = NOT PDisplay
  207.     CASE prmpt = 'Quit'
  208.         RELEASE WINDOW Header
  209.         CLOSE ALL
  210.         DEACTIVATE POPUP
  211.  
  212.     OTHERWISE
  213.         DO Plotter WITH TRIM(SUBSTR(prmpt,1,5))
  214.         WAIT WINDOW
  215.         CLEAR
  216. ENDCASE
  217. RETURN
  218. *******************************************************************
  219. *  Prompter
  220. *
  221. FUNCTION Prompter
  222. DEFINE WINDOW Prompter FROM 2,10 TO 5,70 SYSTEM COLOR SCHEME 9 TITLE "Pause"
  223. ACTIVATE WINDOW Prompter
  224. @ 0,1 SAY "Pick an item..."
  225. choice = 1
  226. @ 1,2 GET Choice FUNCTION "*TH \<Continue;\<Menu;\<Repeat" SIZE 1,8
  227. READ
  228. RELEASE WINDOW Prompter
  229. RETURN Choice
  230.  
  231.  
  232.