Performance Check.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:19k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Performance Check
  4. //  Author/Uploader: Frank Snay 
  5. //  E-mail:          fesnay@san.rr.com
  6. //  Date/Time Added: 2001-07-14 16:02:56
  7. //  Origin:          A Check on Possible Performance of a Signal
  8. //  Keywords:        
  9. //  Level:           basic
  10. //  Flags:           exploration
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=72
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=72
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  /*
  17. //
  18. //  A Daily Performance Check of your Buy signal. Corrected and revised on
  19. //  7/14/01.
  20. //
  21. //  Use to:
  22. //
  23. //  1. Help set Stop Losses, in percentages.
  24. //
  25. //  2. See if increase in rate of return levels off within the first 20 days.
  26. //
  27. //  3. See if signal is a "leading" indicator, and by how many days.
  28. //
  29. //  This is a different way to look at the performance of a buy signal - it is
  30. //  a day - by - day look at percentage gain for 20 days.
  31. //
  32. //  For this example, "Buffy Averages" was used.
  33. //
  34. //  Replace the Buffy Averages with your system, and you can see how your
  35. //  system performs.
  36. //
  37. //  --------------------------How to Use--Modified
  38. //  7/14/01-------------------------
  39. //
  40. //  After running "Explore", Expand the columns Max... and Min... to
  41. //
  42. //  MaxGain and MinGain. MaxGain is the Maximum Gain realized for 20 days. The
  43. //  first column after MaxGain ( +Day) is the day after
  44. //
  45. //  the signal where the max gain occured. MinimumGain and -Day works the same
  46. //  way. These four columns give a quick summary of the results of explore.
  47. //
  48. //  After running the test on a the current stock, scroll to the right and
  49. //  select the "D20%" column. Sort so blue arrow points up. This gives you the
  50. //  best gains for 20 days for this buy signal.
  51. //
  52. //  Now as you scan slowly back towards "D1%" with this sort still in place,
  53. //  you can see the maximum percent loss your system used to get the desired
  54. //  gains. This maximum percent loss can be used in the "Settings" button for
  55. //  Backtesting your system.
  56. //
  57. //  "D20%" was used in this example, but any of the "Dn%" columns can be used
  58. //  for sorting. If you are a swing trader using a maximum time frame of only 2
  59. //  or 3 days in your system, use "D2%" or "D3%".
  60. //
  61. //  A careful study of the results might reveal that possibly, for example, the
  62. //  rate of change of percentage gains slows down after day five. This would
  63. //  prepare you to exit on day five.
  64. //
  65. //  Another possible finding is that the signal is "early", and best entry
  66. //  point might be, for example again, three days after the actual buy signal.
  67. //  This would be revealed by negative returns for the first three days, and
  68. //  then positive gains.
  69. //
  70. //  */
  71. //
  72. //  /*-----------Replace all until next dashed line with your
  73. //  system------------*/
  74. //
  75. //  /*-----------Ensure your "Buy" rules are
  76. //  included--------------------------------*/
  77. //
  78. //  /*
  79. //
  80. //  Buffy Averages
  81. //
  82. //  */
  83. //
  84. //  FastPeriods =5;
  85. //
  86. //  SlowPeriods = 20;
  87. //
  88. //  FastBuffAvg = Sum( Volume * Close, FastPeriods ) / Sum( Volume, FastPeriods
  89. //  );
  90. //
  91. //  SlowBuffAvg = Sum( Volume * Close, SlowPeriods ) / Sum( Volume, SlowPeriods
  92. //  );
  93. //
  94. //  graph0 = FastBuffAvg;
  95. //
  96. //  graph1 = SlowBuffAvg;
  97. //
  98. //  /* buy & sell trading rules */
  99. //
  100. //  buy = cross( FastBuffAvg, SlowBuffAvg );
  101. //
  102. //  sell = cross( SlowBuffAvg, FastBuffAvg );
  103. //
  104. //  /* A commentary */
  105. //
  106. //  buybars = BarsSince( buy );
  107. //
  108. //  sellbars = BarsSince( sell );
  109. //
  110. //  WriteIF( buybars < sellbars,
  111. //
  112. //  "A bullish crossover occured " + WriteVal( buybars ) + " bars ago",
  113. //
  114. //  "A bearish crossover occured " + WriteVal( sellbars ) + " bars ago" );
  115. //
  116. // 
  117. //  /*--------------------------------------------------------------------------------------------------------*/
  118. //
  119. //  /* Only Buy signals will be used
  120. //
  121. //  "D1%" means percent gain at the end of day one, "D2%" the end of day two,
  122. //  etc.
  123. //
  124. //  The entry price will be the Open on the day following the signal.
  125. //
  126. //  The percent gain will be the Close price of the day.
  127. //
  128. //  This program looks "forward" twenty days, so under the "Range" option, use
  129. //  the last radio button next to "from" and set the dates that would include a
  130. //  stop date ("to") about 21 days ago. Start date is your option. If this step
  131. //  is NOT done, signals that occur within the last 21 days will have bad data
  132. //  in the display.
  133. //
  134. //  REMEMBER THAT THE RESULTS MEASURE PAST PERFORMANCE, AND THERE IS NO
  135. //  GUARENTEE THAT THE STOCK WILL HAVE THE SAME GAINS IN THE FUTURE.
  136. //
  137. //  */
  138. //
  139. //  /* EP is the Entry Price */
  140. //
  141. //  EP = ref(o,1);
  142. //
  143. //  D1G = 100*(ref(c,1) - EP)/EP;
  144. //
  145. //  D2G = 100*(ref(c,2) - EP)/EP;
  146. //
  147. //  D3G = 100*(ref(c,3) - EP)/EP;
  148. //
  149. //  D4G = 100*(ref(c,4) - EP)/EP;
  150. //
  151. //  D5G = 100*(ref(c,5) - EP)/EP;
  152. //
  153. //  D6G = 100*(ref(c,6) - EP)/EP;
  154. //
  155. //  D7G = 100*(ref(c,7) - EP)/EP;
  156. //
  157. //  D8G = 100*(ref(c,8) - EP)/EP;
  158. //
  159. //  D9G = 100*(ref(c,9) - EP)/EP;
  160. //
  161. //  D10G = 100*(ref(c,10) - EP)/EP;
  162. //
  163. //  D11G = 100*(ref(c,11) - EP)/EP;
  164. //
  165. //  D12G = 100*(ref(c,12) - EP)/EP;
  166. //
  167. //  D13G = 100*(ref(c,13) - EP)/EP;
  168. //
  169. //  D14G = 100*(ref(c,14) - EP)/EP;
  170. //
  171. //  D15G = 100*(ref(c,15) - EP)/EP;
  172. //
  173. //  D16G = 100*(ref(c,16) - EP)/EP;
  174. //
  175. //  D17G = 100*(ref(c,17) - EP)/EP;
  176. //
  177. //  D18G = 100*(ref(c,18) - EP)/EP;
  178. //
  179. //  D19G = 100*(ref(c,19) - EP)/EP;
  180. //
  181. //  D20G = 100*(ref(c,20) - EP)/EP;
  182. //
  183. //  /* Compute the Maximum Gain for the 20 Days */
  184. //
  185. //  Max20 = max(D1G,D2G);
  186. //
  187. //  MaxCntr = iif(D1G > D2G,1,2);
  188. //
  189. //  Max20 = max(Max20,D3G);
  190. //
  191. //  MaxCntr = iif(Max20 > D3G,MaxCntr,3);
  192. //
  193. //  Max20 = max(Max20,D4G);
  194. //
  195. //  MaxCntr = iif(Max20 > D4G,MaxCntr,4);
  196. //
  197. //  Max20 = max(Max20,D5G);
  198. //
  199. //  MaxCntr = iif(Max20 > D5G,MaxCntr,5);
  200. //
  201. //  Max20 = max(Max20,D6G);
  202. //
  203. //  MaxCntr = iif(Max20 > D6G,MaxCntr,6);
  204. //
  205. //  Max20 = max(Max20,D7G);
  206. //
  207. //  MaxCntr = iif(Max20 > D7G,MaxCntr,7);
  208. //
  209. //  Max20 = max(Max20,D8G);
  210. //
  211. //  MaxCntr = iif(Max20 > D8G,MaxCntr,8);
  212. //
  213. //  Max20 = max(Max20,D9G);
  214. //
  215. //  MaxCntr = iif(Max20 > D9G,MaxCntr,9);
  216. //
  217. //  Max20 = max(Max20,D10G);
  218. //
  219. //  MaxCntr = iif(Max20 > D10G,MaxCntr,10);
  220. //
  221. //  Max20 = max(Max20,D11G);
  222. //
  223. //  MaxCntr = iif(Max20 > D11G,MaxCntr,11);
  224. //
  225. //  Max20 = max(Max20,D12G);
  226. //
  227. //  MaxCntr = iif(Max20 > D12G,MaxCntr,12);
  228. //
  229. //  Max20 = max(Max20,D13G);
  230. //
  231. //  MaxCntr = iif(Max20 > D13G,MaxCntr,13);
  232. //
  233. //  Max20 = max(Max20,D14G);
  234. //
  235. //  MaxCntr = iif(Max20 > D14G,MaxCntr,14);
  236. //
  237. //  Max20 = max(Max20,D15G);
  238. //
  239. //  MaxCntr = iif(Max20 > D15G,MaxCntr,15);
  240. //
  241. //  Max20 = max(Max20,D16G);
  242. //
  243. //  MaxCntr = iif(Max20 > D16G,MaxCntr,16);
  244. //
  245. //  Max20 = max(Max20,D17G);
  246. //
  247. //  MaxCntr = iif(Max20 > D17G,MaxCntr,17);
  248. //
  249. //  Max20 = max(Max20,D18G);
  250. //
  251. //  MaxCntr = iif(Max20 > D18G,MaxCntr,18);
  252. //
  253. //  Max20 = max(Max20,D19G);
  254. //
  255. //  MaxCntr = iif(Max20 > D19G,MaxCntr,19);
  256. //
  257. //  Max20 = max(Max20,D20G);
  258. //
  259. //  MaxCntr = iif(Max20 > D20G,MaxCntr,20);
  260. //
  261. //  /*Now the Minimum Gain for the 20 Days */
  262. //
  263. //  Min20 = min(D1G,D2G);
  264. //
  265. //  MinCntr = iif(D1G < D2G,1,2);
  266. //
  267. //  Min20 = min(Min20,D3G);
  268. //
  269. //  MinCntr = iif(Min20 < D3G,MinCntr,3);
  270. //
  271. //  Min20 = min(Min20,D4G);
  272. //
  273. //  MinCntr = iif(Min20< D4G,MinCntr,4);
  274. //
  275. //  Min20 = min(Min20,D5G);
  276. //
  277. //  MinCntr = iif(Min20 < D5G,MinCntr,5);
  278. //
  279. //  Min20 = min(Min20,D6G);
  280. //
  281. //  MinCntr = iif(Min20< D6G,MinCntr,6);
  282. //
  283. //  Min20 = min(Min20,D7G);
  284. //
  285. //  MinCntr = iif(Min20 < D7G,MinCntr,7);
  286. //
  287. //  Min20 = min(Min20,D8G);
  288. //
  289. //  MinCntr = iif(Min20< D8G,MinCntr,8);
  290. //
  291. //  Min20 = min(Min20,D9G);
  292. //
  293. //  MinCntr = iif(Min20 < D9G,MinCntr,9);
  294. //
  295. //  Min20 = min(Min20,D10G);
  296. //
  297. //  MinCntr = iif(Min20< D10G,MinCntr,10);
  298. //
  299. //  Min20 = min(Min20,D11G);
  300. //
  301. //  MinCntr = iif(Min20< D11G,MinCntr,11);
  302. //
  303. //  Min20 = min(Min20,D12G);
  304. //
  305. //  MinCntr = iif(Min20 < D12G,MinCntr,12);
  306. //
  307. //  Min20 = min(Min20,D13G);
  308. //
  309. //  MinCntr = iif(Min20 < D13G,MinCntr,13);
  310. //
  311. //  Min20 = min(Min20,D14G);
  312. //
  313. //  MinCntr = iif(Min20< D14G,MinCntr,14);
  314. //
  315. //  Min20 = min(Min20,D15G);
  316. //
  317. //  MinCntr = iif(Min20 < D15G,MinCntr,15);
  318. //
  319. //  Min20 = min(Min20,D16G);
  320. //
  321. //  MinCntr = iif(Min20 < D16G,MinCntr,16);
  322. //
  323. //  Min20 = min(Min20,D17G);
  324. //
  325. //  MinCntr = iif(Min20 < D17G,MinCntr,17);
  326. //
  327. //  Min20 = min(Min20,D18G);
  328. //
  329. //  MinCntr = iif(Min20 < D18G,MinCntr,18);
  330. //
  331. //  Min20 = min(Min20,D19G);
  332. //
  333. //  MinCntr = iif(Min20< D19G,MinCntr,19);
  334. //
  335. //  Min20 = min(Min20,D20G);
  336. //
  337. //  MinCntr = iif(Min20 < D20G,MinCntr,20);
  338. //
  339. //  numcolumns = 26;
  340. //
  341. //  column0 = c;
  342. //
  343. //  column0format = 1.2;
  344. //
  345. //  column0name = "Close";
  346. //
  347. //  column1 = EP;
  348. //
  349. //  column1format = 1.2;
  350. //
  351. //  column1name = "E. P.";
  352. //
  353. //  column2 = Max20;
  354. //
  355. //  column2format = 1.2;
  356. //
  357. //  column2name = "MaxGain";
  358. //
  359. //  column3 = MaxCntr;
  360. //
  361. //  column3format = 1.0;
  362. //
  363. //  column3name = " +Day";
  364. //
  365. //  column4 = Min20;
  366. //
  367. //  column4format = 1.2;
  368. //
  369. //  column4name = "MinGain";
  370. //
  371. //  column5= MinCntr;
  372. //
  373. //  column5format = 1.0;
  374. //
  375. //  column5name = "-Day";
  376. //
  377. //  column6 =D1G;
  378. //
  379. //  column6format = 1.2;
  380. //
  381. //  column6name = "D1%";
  382. //
  383. //  column7 =D2G;
  384. //
  385. //  column7format = 1.2;
  386. //
  387. //  column7name = "D2%";
  388. //
  389. //  column8 =D3G;
  390. //
  391. //  column8format = 1.2;
  392. //
  393. //  column8name = "D3%";
  394. //
  395. //  column9=D4G;
  396. //
  397. //  column9format = 1.2;
  398. //
  399. //  column9name = "D4%";
  400. //
  401. //  column10 =D5G;
  402. //
  403. //  column10format = 1.2;
  404. //
  405. //  column10name = "D5%";
  406. //
  407. //  column11=D6G;
  408. //
  409. //  column11format = 1.2;
  410. //
  411. //  column11name = "D6%";
  412. //
  413. //  column12 =D7G;
  414. //
  415. //  column12format = 1.2;
  416. //
  417. //  column12name = "D7%";
  418. //
  419. //  column13 =D8G;
  420. //
  421. //  column13format = 1.2;
  422. //
  423. //  column13name = "D8%";
  424. //
  425. //  column14 =D9G;
  426. //
  427. //  column14format = 1.2;
  428. //
  429. //  column14name = "D9%";
  430. //
  431. //  column15 =D10G;
  432. //
  433. //  column15format = 1.2;
  434. //
  435. //  column15name = "D10%";
  436. //
  437. //  column16 =D11G;
  438. //
  439. //  column16format = 1.2;
  440. //
  441. //  column16name = "D11%";
  442. //
  443. //  column17 =D12G;
  444. //
  445. //  column17format = 1.2;
  446. //
  447. //  column17name = "D12%";
  448. //
  449. //  column18 =D13G;
  450. //
  451. //  column18format = 1.2;
  452. //
  453. //  column18name = "D13%";
  454. //
  455. //  column19 =D14G;
  456. //
  457. //  column19format = 1.2;
  458. //
  459. //  column19name = "D14%";
  460. //
  461. //  column20 =D15G;
  462. //
  463. //  column20format = 1.2;
  464. //
  465. //  column20name = "D15%";
  466. //
  467. //  column21 =D16G;
  468. //
  469. //  column21format = 1.2;
  470. //
  471. //  column21name = "D16%";
  472. //
  473. //  column22 =D17G;
  474. //
  475. //  column22format = 1.2;
  476. //
  477. //  column22name = "D17%";
  478. //
  479. //  column23 =D18G;
  480. //
  481. //  column23format = 1.2;
  482. //
  483. //  column23name = "D18%";
  484. //
  485. //  column24 =D19G;
  486. //
  487. //  column24format = 1.2;
  488. //
  489. //  column24name = "D19%";
  490. //
  491. //  column25 =D20G;
  492. //
  493. //  column25format = 1.2;
  494. //
  495. //  column25name = "D20%";
  496. //
  497. //  filter = buy == 1;
  498. //
  499. //------------------------------------------------------------------------------
  500. /*
  501. A Daily Performance Check of your Buy signal.  Corrected and revised on 7/14/01.
  502. Use to:
  503. 1.  Help set Stop Losses, in percentages.
  504. 2.  See if increase in rate of return levels off within the first 20 days.
  505. 3.  See if signal is a "leading" indicator, and by how many days.
  506. This is a different way to look at the performance of a buy signal - it is a day - by - day look at percentage gain for 20 days.  
  507. For this example, "Buffy Averages"  was used.  
  508. Replace the Buffy Averages with your system, and you can see how your system performs.
  509. --------------------------How to Use--Modified 7/14/01-------------------------
  510. After running "Explore", Expand the columns Max... and Min... to
  511. MaxGain and MinGain.  MaxGain is the Maximum Gain realized for 20 days.  The first column after MaxGain ( +Day) is the day after
  512. the signal where the max gain occured. MinimumGain and -Day works the same way.  These four columns give a quick summary of the results of explore.
  513. After running the test on a the current stock, scroll to the right and select the "D20%" column.  Sort so blue arrow points up.  This gives you the best gains for 20 days for this buy signal.
  514. Now as you scan slowly back towards "D1%" with this sort still in place, you can see the maximum percent loss your system used to get the desired gains.  This maximum percent loss can be used in the "Settings" button for Backtesting your system.
  515. "D20%" was used in this example, but any of the "Dn%" columns can be used for sorting.  If you are a swing trader using a maximum time frame of only 2 or 3 days in your system, use "D2%" or "D3%".
  516. A careful study of the results might reveal that possibly, for example, the rate of change of percentage gains slows down after day five.  This would prepare you to exit on day five.
  517. Another possible finding is that the signal is "early", and best entry point might be, for example again, three days after the actual buy signal.  This would be revealed by negative returns for the first three days, and then positive gains.
  518. */
  519. /*-----------Replace all until next dashed line with your system------------*/
  520. /*-----------Ensure your "Buy" rules are included--------------------------------*/
  521. /*
  522. Buffy Averages
  523. */
  524. FastPeriods =5;
  525. SlowPeriods = 20;
  526.  
  527. FastBuffAvg = Sum( Volume * Close, FastPeriods ) / Sum( Volume, FastPeriods );
  528. SlowBuffAvg = Sum( Volume * Close,  SlowPeriods ) / Sum( Volume, SlowPeriods );
  529.  
  530. graph0 = FastBuffAvg;
  531. graph1 = SlowBuffAvg;
  532. /* buy & sell trading rules */
  533. buy = cross( FastBuffAvg, SlowBuffAvg );
  534. sell = cross( SlowBuffAvg, FastBuffAvg );
  535.  
  536. /* A commentary */
  537. buybars = BarsSince( buy );
  538. sellbars = BarsSince( sell );
  539.  
  540. WriteIF( buybars < sellbars, 
  541. "A bullish crossover occured " + WriteVal( buybars ) + " bars ago", 
  542. "A bearish crossover occured " + WriteVal( sellbars ) + " bars ago" );
  543. /*--------------------------------------------------------------------------------------------------------*/
  544. /*  Only Buy signals will be used
  545. "D1%" means percent gain at the end of day one, "D2%" the end of day two, etc.
  546. The entry price will be the Open on the day following the signal.
  547. The percent gain will be the Close price of the day.
  548. This program looks "forward" twenty days, so under the "Range" option, use the last radio button next to "from" and set the dates that would include a stop date ("to") about 21 days ago.  Start date is your option.  If this step is NOT done, signals that occur within the last 21 days will have bad data in the display.
  549. REMEMBER THAT THE RESULTS MEASURE PAST PERFORMANCE, AND THERE IS NO GUARENTEE THAT THE STOCK WILL HAVE THE SAME GAINS IN THE FUTURE.
  550. */
  551. /*  EP is the Entry Price */
  552. EP = ref(o,1);
  553. D1G = 100*(ref(c,1) - EP)/EP;
  554. D2G = 100*(ref(c,2) - EP)/EP;
  555. D3G = 100*(ref(c,3) - EP)/EP;
  556. D4G = 100*(ref(c,4) - EP)/EP;
  557. D5G = 100*(ref(c,5) - EP)/EP;
  558. D6G = 100*(ref(c,6) - EP)/EP;
  559. D7G = 100*(ref(c,7) - EP)/EP;
  560. D8G = 100*(ref(c,8) - EP)/EP;
  561. D9G = 100*(ref(c,9) - EP)/EP;
  562. D10G = 100*(ref(c,10) - EP)/EP;
  563. D11G = 100*(ref(c,11) - EP)/EP;
  564. D12G = 100*(ref(c,12) - EP)/EP;
  565. D13G = 100*(ref(c,13) - EP)/EP;
  566. D14G = 100*(ref(c,14) - EP)/EP;
  567. D15G = 100*(ref(c,15) - EP)/EP;
  568. D16G = 100*(ref(c,16) - EP)/EP;
  569. D17G = 100*(ref(c,17) - EP)/EP;
  570. D18G = 100*(ref(c,18) - EP)/EP;
  571. D19G = 100*(ref(c,19) - EP)/EP;
  572. D20G = 100*(ref(c,20) - EP)/EP;
  573. /* Compute the Maximum Gain for the 20 Days  */
  574. Max20 = max(D1G,D2G);
  575. MaxCntr = iif(D1G > D2G,1,2);
  576. Max20 = max(Max20,D3G);
  577. MaxCntr = iif(Max20 > D3G,MaxCntr,3);
  578. Max20 = max(Max20,D4G);
  579. MaxCntr = iif(Max20 > D4G,MaxCntr,4);
  580. Max20 = max(Max20,D5G);
  581. MaxCntr = iif(Max20 > D5G,MaxCntr,5);
  582. Max20 = max(Max20,D6G);
  583. MaxCntr = iif(Max20 > D6G,MaxCntr,6);
  584. Max20 = max(Max20,D7G);
  585. MaxCntr = iif(Max20 > D7G,MaxCntr,7);
  586. Max20 = max(Max20,D8G);
  587. MaxCntr = iif(Max20 > D8G,MaxCntr,8);
  588. Max20 = max(Max20,D9G);
  589. MaxCntr = iif(Max20 > D9G,MaxCntr,9);
  590. Max20 = max(Max20,D10G);
  591. MaxCntr = iif(Max20 > D10G,MaxCntr,10);
  592. Max20 = max(Max20,D11G);
  593. MaxCntr = iif(Max20 > D11G,MaxCntr,11);
  594. Max20 = max(Max20,D12G);
  595. MaxCntr = iif(Max20 > D12G,MaxCntr,12);
  596. Max20 = max(Max20,D13G);
  597. MaxCntr = iif(Max20 > D13G,MaxCntr,13);
  598. Max20 = max(Max20,D14G);
  599. MaxCntr = iif(Max20 > D14G,MaxCntr,14);
  600. Max20 = max(Max20,D15G);
  601. MaxCntr = iif(Max20 > D15G,MaxCntr,15);
  602. Max20 = max(Max20,D16G);
  603. MaxCntr = iif(Max20 > D16G,MaxCntr,16);
  604. Max20 = max(Max20,D17G);
  605. MaxCntr = iif(Max20 > D17G,MaxCntr,17);
  606. Max20 = max(Max20,D18G);
  607. MaxCntr = iif(Max20 > D18G,MaxCntr,18);
  608. Max20 = max(Max20,D19G);
  609. MaxCntr = iif(Max20 > D19G,MaxCntr,19);
  610. Max20 = max(Max20,D20G);
  611. MaxCntr = iif(Max20 > D20G,MaxCntr,20);
  612. /*Now the Minimum Gain for the 20 Days  */
  613. Min20 = min(D1G,D2G);
  614. MinCntr = iif(D1G < D2G,1,2);
  615. Min20 = min(Min20,D3G);
  616. MinCntr = iif(Min20 < D3G,MinCntr,3);
  617. Min20 = min(Min20,D4G);
  618. MinCntr = iif(Min20< D4G,MinCntr,4);
  619. Min20 = min(Min20,D5G);
  620. MinCntr = iif(Min20 < D5G,MinCntr,5);
  621. Min20 = min(Min20,D6G);
  622. MinCntr = iif(Min20< D6G,MinCntr,6);
  623. Min20 = min(Min20,D7G);
  624. MinCntr = iif(Min20 < D7G,MinCntr,7);
  625. Min20 = min(Min20,D8G);
  626. MinCntr = iif(Min20< D8G,MinCntr,8);
  627. Min20 = min(Min20,D9G);
  628. MinCntr = iif(Min20 < D9G,MinCntr,9);
  629. Min20 = min(Min20,D10G);
  630. MinCntr = iif(Min20< D10G,MinCntr,10);
  631. Min20 = min(Min20,D11G);
  632. MinCntr = iif(Min20< D11G,MinCntr,11);
  633. Min20 = min(Min20,D12G);
  634. MinCntr = iif(Min20 < D12G,MinCntr,12);
  635. Min20 = min(Min20,D13G);
  636. MinCntr = iif(Min20 < D13G,MinCntr,13);
  637. Min20 = min(Min20,D14G);
  638. MinCntr = iif(Min20< D14G,MinCntr,14);
  639. Min20 = min(Min20,D15G);
  640. MinCntr = iif(Min20 < D15G,MinCntr,15);
  641. Min20 = min(Min20,D16G);
  642. MinCntr = iif(Min20 < D16G,MinCntr,16);
  643. Min20 = min(Min20,D17G);
  644. MinCntr = iif(Min20 < D17G,MinCntr,17);
  645. Min20 = min(Min20,D18G);
  646. MinCntr = iif(Min20 < D18G,MinCntr,18);
  647. Min20 = min(Min20,D19G);
  648. MinCntr = iif(Min20< D19G,MinCntr,19);
  649. Min20 = min(Min20,D20G);
  650. MinCntr = iif(Min20 < D20G,MinCntr,20);
  651. numcolumns = 26;
  652. column0 = c;
  653. column0format = 1.2;
  654. column0name = "Close";
  655. column1 = EP;
  656. column1format = 1.2;
  657. column1name = "E. P.";
  658. column2 = Max20;
  659. column2format = 1.2;
  660. column2name = "MaxGain";
  661. column3 = MaxCntr;
  662. column3format = 1.0;
  663. column3name = " +Day";
  664. column4 = Min20;
  665. column4format = 1.2;
  666. column4name = "MinGain";
  667. column5= MinCntr;
  668. column5format = 1.0;
  669. column5name = "-Day";
  670. column6 =D1G;
  671. column6format = 1.2;
  672. column6name = "D1%";
  673. column7 =D2G;
  674. column7format = 1.2;
  675. column7name = "D2%";
  676. column8 =D3G;
  677. column8format = 1.2;
  678. column8name = "D3%";
  679. column9=D4G;
  680. column9format = 1.2;
  681. column9name = "D4%";
  682. column10 =D5G;
  683. column10format = 1.2;
  684. column10name = "D5%";
  685. column11=D6G;
  686. column11format = 1.2;
  687. column11name = "D6%";
  688. column12 =D7G;
  689. column12format = 1.2;
  690. column12name = "D7%";
  691. column13 =D8G;
  692. column13format = 1.2;
  693. column13name = "D8%";
  694. column14 =D9G;
  695. column14format = 1.2;
  696. column14name = "D9%";
  697. column15 =D10G;
  698. column15format = 1.2;
  699. column15name = "D10%";
  700. column16 =D11G;
  701. column16format = 1.2;
  702. column16name = "D11%";
  703. column17 =D12G;
  704. column17format = 1.2;
  705. column17name = "D12%";
  706. column18 =D13G;
  707. column18format = 1.2;
  708. column18name = "D13%";
  709. column19 =D14G;
  710. column19format = 1.2;
  711. column19name = "D14%";
  712. column20 =D15G;
  713. column20format = 1.2;
  714. column20name = "D15%";
  715. column21 =D16G;
  716. column21format = 1.2;
  717. column21name = "D16%";
  718. column22 =D17G;
  719. column22format = 1.2;
  720. column22name = "D17%";
  721. column23 =D18G;
  722. column23format = 1.2;
  723. column23name = "D18%";
  724. column24 =D19G;
  725. column24format = 1.2;
  726. column24name = "D19%";
  727. column25 =D20G;
  728. column25format = 1.2;
  729. column25name = "D20%";
  730. filter = buy == 1;