Guest User

SM_MultiTimeFrameTrend

a guest
Jun 22nd, 2018
1,855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.33 KB | None | 0 0
  1. input MAtype = AverageType.EXPONENTIAL;
  2. input ShortAverage = 5;
  3. input LongAverage = 21;
  4.  
  5. def MA_month_close;
  6. def MA_month_shortAvg;
  7. def MA_month_longAvg;
  8. def MA_month_higher;
  9. def MA_month_lower;
  10. def MA_month_same;
  11. def MA_month_nowcrossing;
  12. if GetAggregationPeriod() <= AggregationPeriod.MONTH {
  13. MA_month_close = close(period="Month");
  14. MA_month_shortAvg = MovingAverage(MAtype, MA_month_close, ShortAverage);
  15. MA_month_longAvg = MovingAverage(MAtype,MA_month_close, LongAverage);
  16. MA_month_nowcrossing = if Crosses(MA_month_shortAvg, MA_month_longAvg, CrossingDirection.ANY) then 1 else 0;
  17. MA_month_same = if MA_month_nowcrossing == 1 then 1 else Double.NaN;
  18. if MA_month_same == 1 {
  19. MA_month_higher = Double.NaN;
  20. MA_month_lower = Double.NaN;
  21. } else {
  22. MA_month_higher = if MA_month_shortAvg >= MA_month_longAvg then 1 else Double.NaN;
  23. MA_month_lower = if MA_month_shortAvg < MA_month_longAvg then 1 else Double.NaN;
  24. }
  25. } else {
  26. MA_month_close = 0;
  27. MA_month_shortAvg = 0;
  28. MA_month_longAvg = 0;
  29. MA_month_higher = Double.NaN;
  30. MA_month_lower = Double.NaN;
  31. MA_month_same = Double.NaN;
  32. MA_month_nowcrossing = 0;
  33. }
  34. AddLabel(MA_month_higher, "M", Color.DARK_GREEN);
  35. AddLabel(MA_month_lower, "M", Color.DARK_RED);
  36. AddLabel(MA_month_same, "M", Color.WHITE);
  37.  
  38. def MA_week_close;
  39. def MA_week_shortAvg;
  40. def MA_week_longAvg;
  41. def MA_week_higher;
  42. def MA_week_lower;
  43. def MA_week_same;
  44. def MA_week_nowcrossing;
  45. if GetAggregationPeriod() <= AggregationPeriod.WEEK {
  46. MA_week_close = close(period="Week");
  47. MA_week_shortAvg = MovingAverage(MAtype, MA_week_close, ShortAverage);
  48. MA_week_longAvg = MovingAverage(MAtype,MA_week_close, LongAverage);
  49. MA_week_nowcrossing = if Crosses(MA_week_shortAvg, MA_week_longAvg, CrossingDirection.ANY) then 1 else 0;
  50. MA_week_same = if MA_week_nowcrossing == 1 then 1 else Double.NaN;
  51. if MA_week_same == 1 {
  52. MA_week_higher = Double.NaN;
  53. MA_week_lower = Double.NaN;
  54. } else {
  55. MA_week_higher = if MA_week_shortAvg >= MA_week_longAvg then 1 else Double.NaN;
  56. MA_week_lower = if MA_week_shortAvg < MA_week_longAvg then 1 else Double.NaN;
  57. }
  58. } else {
  59. MA_week_close = 0;
  60. MA_week_shortAvg = 0;
  61. MA_week_longAvg = 0;
  62. MA_week_higher = Double.NaN;
  63. MA_week_lower = Double.NaN;
  64. MA_week_same = Double.NaN;
  65. MA_week_nowcrossing = 0;
  66. }
  67. AddLabel(MA_week_higher, "W", Color.DARK_GREEN);
  68. AddLabel(MA_week_lower, "W", Color.DARK_RED);
  69. AddLabel(MA_week_same, "W", Color.WHITE);
  70.  
  71. def MA_4day_close;
  72. def MA_4day_shortAvg;
  73. def MA_4day_longAvg;
  74. def MA_4day_higher;
  75. def MA_4day_lower;
  76. def MA_4day_same;
  77. def MA_4day_nowcrossing;
  78. if GetAggregationPeriod() <= AggregationPeriod.FOUR_DAYS {
  79. MA_4day_close = close(period="4 days");
  80. MA_4day_shortAvg = MovingAverage(MAtype, MA_4day_close, ShortAverage);
  81. MA_4day_longAvg = MovingAverage(MAtype,MA_4day_close, LongAverage);
  82. MA_4day_nowcrossing = if Crosses(MA_4day_shortAvg, MA_4day_longAvg, CrossingDirection.ANY) then 1 else 0;
  83. MA_4day_same = if MA_4day_nowcrossing == 1 then 1 else Double.NaN;
  84. if MA_4day_same == 1 {
  85. MA_4day_higher = Double.NaN;
  86. MA_4day_lower = Double.NaN;
  87. } else {
  88. MA_4day_higher = if MA_4day_shortAvg >= MA_4day_longAvg then 1 else Double.NaN;
  89. MA_4day_lower = if MA_4day_shortAvg < MA_4day_longAvg then 1 else Double.NaN;
  90. }
  91. } else {
  92. MA_4day_close = 0;
  93. MA_4day_shortAvg = 0;
  94. MA_4day_longAvg = 0;
  95. MA_4day_higher = Double.NaN;
  96. MA_4day_lower = Double.NaN;
  97. MA_4day_same = Double.NaN;
  98. MA_4day_nowcrossing = 0;
  99. }
  100. AddLabel(MA_4day_higher, "4D", Color.DARK_GREEN);
  101. AddLabel(MA_4day_lower, "4D", Color.DARK_RED);
  102. AddLabel(MA_4day_same, "4D", Color.WHITE);
  103.  
  104. def MA_3day_close;
  105. def MA_3day_shortAvg;
  106. def MA_3day_longAvg;
  107. def MA_3day_higher;
  108. def MA_3day_lower;
  109. def MA_3day_same;
  110. def MA_3day_nowcrossing;
  111. if GetAggregationPeriod() <= AggregationPeriod.THREE_DAYS {
  112. MA_3day_close = close(period="3 days");
  113. MA_3day_shortAvg = MovingAverage(MAtype, MA_3day_close, ShortAverage);
  114. MA_3day_longAvg = MovingAverage(MAtype,MA_3day_close, LongAverage);
  115. MA_3day_nowcrossing = if Crosses(MA_3day_shortAvg, MA_3day_longAvg, CrossingDirection.ANY) then 1 else 0;
  116. MA_3day_same = if MA_3day_nowcrossing == 1 then 1 else Double.NaN;
  117. if MA_3day_same == 1 {
  118. MA_3day_higher = Double.NaN;
  119. MA_3day_lower = Double.NaN;
  120. } else {
  121. MA_3day_higher = if MA_3day_shortAvg >= MA_3day_longAvg then 1 else Double.NaN;
  122. MA_3day_lower = if MA_3day_shortAvg < MA_3day_longAvg then 1 else Double.NaN;
  123. }
  124. } else {
  125. MA_3day_close = 0;
  126. MA_3day_shortAvg = 0;
  127. MA_3day_longAvg = 0;
  128. MA_3day_higher = Double.NaN;
  129. MA_3day_lower = Double.NaN;
  130. MA_3day_same = Double.NaN;
  131. MA_3day_nowcrossing = 0;
  132. }
  133. AddLabel(MA_3day_higher, "3D", Color.DARK_GREEN);
  134. AddLabel(MA_3day_lower, "3D", Color.DARK_RED);
  135. AddLabel(MA_3day_same, "3D", Color.WHITE);
  136.  
  137. def MA_2day_close;
  138. def MA_2day_shortAvg;
  139. def MA_2day_longAvg;
  140. def MA_2day_higher;
  141. def MA_2day_lower;
  142. def MA_2day_same;
  143. def MA_2day_nowcrossing;
  144. if GetAggregationPeriod() <= AggregationPeriod.TWO_DAYS {
  145. MA_2day_close = close(period="2 days");
  146. MA_2day_shortAvg = MovingAverage(MAtype, MA_2day_close, ShortAverage);
  147. MA_2day_longAvg = MovingAverage(MAtype,MA_2day_close, LongAverage);
  148. MA_2day_nowcrossing = if Crosses(MA_2day_shortAvg, MA_2day_longAvg, CrossingDirection.ANY) then 1 else 0;
  149. MA_2day_same = if MA_2day_nowcrossing == 1 then 1 else Double.NaN;
  150. if MA_2day_same == 1 {
  151. MA_2day_higher = Double.NaN;
  152. MA_2day_lower = Double.NaN;
  153. } else {
  154. MA_2day_higher = if MA_2day_shortAvg >= MA_2day_longAvg then 1 else Double.NaN;
  155. MA_2day_lower = if MA_2day_shortAvg < MA_2day_longAvg then 1 else Double.NaN;
  156. }
  157. } else {
  158. MA_2day_close = 0;
  159. MA_2day_shortAvg = 0;
  160. MA_2day_longAvg = 0;
  161. MA_2day_higher = Double.NaN;
  162. MA_2day_lower = Double.NaN;
  163. MA_2day_same = Double.NaN;
  164. MA_2day_nowcrossing = 0;
  165. }
  166. AddLabel(MA_2day_higher, "2D", Color.DARK_GREEN);
  167. AddLabel(MA_2day_lower, "2D", Color.DARK_RED);
  168. AddLabel(MA_2day_same, "2D", Color.WHITE);
  169.  
  170. def MA_1day_close;
  171. def MA_1day_shortAvg;
  172. def MA_1day_longAvg;
  173. def MA_1day_higher;
  174. def MA_1day_lower;
  175. def MA_1day_same;
  176. def MA_1day_nowcrossing;
  177. if GetAggregationPeriod() <= AggregationPeriod.DAY {
  178. MA_1day_close = close(period="Day");
  179. MA_1day_shortAvg = MovingAverage(MAtype, MA_1day_close, ShortAverage);
  180. MA_1day_longAvg = MovingAverage(MAtype,MA_1day_close, LongAverage);
  181. MA_1day_nowcrossing = if Crosses(MA_1day_shortAvg, MA_1day_longAvg, CrossingDirection.ANY) then 1 else 0;
  182. MA_1day_same = if MA_1day_nowcrossing == 1 then 1 else Double.NaN;
  183. if MA_1day_same == 1 {
  184. MA_1day_higher = Double.NaN;
  185. MA_1day_lower = Double.NaN;
  186. } else {
  187. MA_1day_higher = if MA_1day_shortAvg >= MA_1day_longAvg then 1 else Double.NaN;
  188. MA_1day_lower = if MA_1day_shortAvg < MA_1day_longAvg then 1 else Double.NaN;
  189. }
  190. } else {
  191. MA_1day_close = 0;
  192. MA_1day_shortAvg = 0;
  193. MA_1day_longAvg = 0;
  194. MA_1day_higher = Double.NaN;
  195. MA_1day_lower = Double.NaN;
  196. MA_1day_same = Double.NaN;
  197. MA_1day_nowcrossing = 0;
  198. }
  199. AddLabel(MA_1day_higher, "1D", Color.DARK_GREEN);
  200. AddLabel(MA_1day_lower, "1D", Color.DARK_RED);
  201. AddLabel(MA_1day_same, "1D", Color.WHITE);
  202.  
  203. def MA_4hour_close;
  204. def MA_4hour_shortAvg;
  205. def MA_4hour_longAvg;
  206. def MA_4hour_higher;
  207. def MA_4hour_lower;
  208. def MA_4hour_same;
  209. def MA_4hour_nowcrossing;
  210. if GetAggregationPeriod() <= AggregationPeriod.FOUR_HOURS {
  211. MA_4hour_close = close(period="4 hours");
  212. MA_4hour_shortAvg = MovingAverage(MAtype, MA_4hour_close, ShortAverage);
  213. MA_4hour_longAvg = MovingAverage(MAtype,MA_4hour_close, LongAverage);
  214. MA_4hour_nowcrossing = if Crosses(MA_4hour_shortAvg, MA_4hour_longAvg, CrossingDirection.ANY) then 1 else 0;
  215. MA_4hour_same = if MA_4hour_nowcrossing == 1 then 1 else Double.NaN;
  216. if MA_4hour_same == 1 {
  217. MA_4hour_higher = Double.NaN;
  218. MA_4hour_lower = Double.NaN;
  219. } else {
  220. MA_4hour_higher = if MA_4hour_shortAvg >= MA_4hour_longAvg then 1 else Double.NaN;
  221. MA_4hour_lower = if MA_4hour_shortAvg < MA_4hour_longAvg then 1 else Double.NaN;
  222. }
  223. } else {
  224. MA_4hour_close = 0;
  225. MA_4hour_shortAvg = 0;
  226. MA_4hour_longAvg = 0;
  227. MA_4hour_higher = Double.NaN;
  228. MA_4hour_lower = Double.NaN;
  229. MA_4hour_same = Double.NaN;
  230. MA_4hour_nowcrossing = 0;
  231. }
  232. AddLabel(MA_4hour_higher, "4h", Color.DARK_GREEN);
  233. AddLabel(MA_4hour_lower, "4h", Color.DARK_RED);
  234. AddLabel(MA_4hour_same, "4h", Color.WHITE);
  235.  
  236. def MA_2hour_close;
  237. def MA_2hour_shortAvg;
  238. def MA_2hour_longAvg;
  239. def MA_2hour_higher;
  240. def MA_2hour_lower;
  241. def MA_2hour_same;
  242. def MA_2hour_nowcrossing;
  243. if GetAggregationPeriod() <= AggregationPeriod.TWO_HOURS {
  244. MA_2hour_close = close(period="2 hours");
  245. MA_2hour_shortAvg = MovingAverage(MAtype, MA_2hour_close, ShortAverage);
  246. MA_2hour_longAvg = MovingAverage(MAtype,MA_2hour_close, LongAverage);
  247. MA_2hour_nowcrossing = if Crosses(MA_2hour_shortAvg, MA_2hour_longAvg, CrossingDirection.ANY) then 1 else 0;
  248. MA_2hour_same = if MA_2hour_nowcrossing == 1 then 1 else Double.NaN;
  249. if MA_2hour_same == 1 {
  250. MA_2hour_higher = Double.NaN;
  251. MA_2hour_lower = Double.NaN;
  252. } else {
  253. MA_2hour_higher = if MA_2hour_shortAvg >= MA_2hour_longAvg then 1 else Double.NaN;
  254. MA_2hour_lower = if MA_2hour_shortAvg < MA_2hour_longAvg then 1 else Double.NaN;
  255. }
  256. } else {
  257. MA_2hour_close = 0;
  258. MA_2hour_shortAvg = 0;
  259. MA_2hour_longAvg = 0;
  260. MA_2hour_higher = Double.NaN;
  261. MA_2hour_lower = Double.NaN;
  262. MA_2hour_same = Double.NaN;
  263. MA_2hour_nowcrossing = 0;
  264. }
  265. AddLabel(MA_2hour_higher, "2h", Color.DARK_GREEN);
  266. AddLabel(MA_2hour_lower, "2h", Color.DARK_RED);
  267. AddLabel(MA_2hour_same, "2h", Color.WHITE);
  268.  
  269. def MA_1hour_close;
  270. def MA_1hour_shortAvg;
  271. def MA_1hour_longAvg;
  272. def MA_1hour_higher;
  273. def MA_1hour_lower;
  274. def MA_1hour_same;
  275. def MA_1hour_nowcrossing;
  276. if GetAggregationPeriod() <= AggregationPeriod.HOUR {
  277. MA_1hour_close = close(period="1 hour");
  278. MA_1hour_shortAvg = MovingAverage(MAtype, MA_1hour_close, ShortAverage);
  279. MA_1hour_longAvg = MovingAverage(MAtype,MA_1hour_close, LongAverage);
  280. MA_1hour_nowcrossing = if Crosses(MA_1hour_shortAvg, MA_1hour_longAvg, CrossingDirection.ANY) then 1 else 0;
  281. MA_1hour_same = if MA_1hour_nowcrossing == 1 then 1 else Double.NaN;
  282. if MA_1hour_same == 1 {
  283. MA_1hour_higher = Double.NaN;
  284. MA_1hour_lower = Double.NaN;
  285. } else {
  286. MA_1hour_higher = if MA_1hour_shortAvg >= MA_1hour_longAvg then 1 else Double.NaN;
  287. MA_1hour_lower = if MA_1hour_shortAvg < MA_1hour_longAvg then 1 else Double.NaN;
  288. }
  289. } else {
  290. MA_1hour_close = 0;
  291. MA_1hour_shortAvg = 0;
  292. MA_1hour_longAvg = 0;
  293. MA_1hour_higher = Double.NaN;
  294. MA_1hour_lower = Double.NaN;
  295. MA_1hour_same = Double.NaN;
  296. MA_1hour_nowcrossing = 0;
  297. }
  298. AddLabel(MA_1hour_higher, "1h", Color.DARK_GREEN);
  299. AddLabel(MA_1hour_lower, "1h", Color.DARK_RED);
  300. AddLabel(MA_1hour_same, "1h", Color.WHITE);
  301.  
  302. def MA_30min_close;
  303. def MA_30min_shortAvg;
  304. def MA_30min_longAvg;
  305. def MA_30min_higher;
  306. def MA_30min_lower;
  307. def MA_30min_same;
  308. def MA_30min_nowcrossing;
  309. if GetAggregationPeriod() <= AggregationPeriod.THIRTY_MIN {
  310. MA_30min_close = close(period="30 min");
  311. MA_30min_shortAvg = MovingAverage(MAtype, MA_30min_close, ShortAverage);
  312. MA_30min_longAvg = MovingAverage(MAtype,MA_30min_close, LongAverage);
  313. MA_30min_nowcrossing = if Crosses(MA_30min_shortAvg, MA_30min_longAvg, CrossingDirection.ANY) then 1 else 0;
  314. MA_30min_same = if MA_30min_nowcrossing == 1 then 1 else Double.NaN;
  315. if MA_30min_same == 1 {
  316. MA_30min_higher = Double.NaN;
  317. MA_30min_lower = Double.NaN;
  318. } else {
  319. MA_30min_higher = if MA_30min_shortAvg >= MA_30min_longAvg then 1 else Double.NaN;
  320. MA_30min_lower = if MA_30min_shortAvg < MA_30min_longAvg then 1 else Double.NaN;
  321. }
  322. } else {
  323. MA_30min_close = 0;
  324. MA_30min_shortAvg = 0;
  325. MA_30min_longAvg = 0;
  326. MA_30min_higher = Double.NaN;
  327. MA_30min_lower = Double.NaN;
  328. MA_30min_same = Double.NaN;
  329. MA_30min_nowcrossing = 0;
  330. }
  331. AddLabel(MA_30min_higher, "30m", Color.DARK_GREEN);
  332. AddLabel(MA_30min_lower, "30m", Color.DARK_RED);
  333. AddLabel(MA_30min_same, "30m", Color.WHITE);
  334.  
  335. def MA_15min_close;
  336. def MA_15min_shortAvg;
  337. def MA_15min_longAvg;
  338. def MA_15min_higher;
  339. def MA_15min_lower;
  340. def MA_15min_same;
  341. def MA_15min_nowcrossing;
  342. if GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN {
  343. MA_15min_close = close(period="15 min");
  344. MA_15min_shortAvg = MovingAverage(MAtype, MA_15min_close, ShortAverage);
  345. MA_15min_longAvg = MovingAverage(MAtype,MA_15min_close, LongAverage);
  346. MA_15min_nowcrossing = if Crosses(MA_15min_shortAvg, MA_15min_longAvg, CrossingDirection.ANY) then 1 else 0;
  347. MA_15min_same = if MA_15min_nowcrossing == 1 then 1 else Double.NaN;
  348. if MA_15min_same == 1 {
  349. MA_15min_higher = Double.NaN;
  350. MA_15min_lower = Double.NaN;
  351. } else {
  352. MA_15min_higher = if MA_15min_shortAvg >= MA_15min_longAvg then 1 else Double.NaN;
  353. MA_15min_lower = if MA_15min_shortAvg < MA_15min_longAvg then 1 else Double.NaN;
  354. }
  355. } else {
  356. MA_15min_close = 0;
  357. MA_15min_shortAvg = 0;
  358. MA_15min_longAvg = 0;
  359. MA_15min_higher = Double.NaN;
  360. MA_15min_lower = Double.NaN;
  361. MA_15min_same = Double.NaN;
  362. MA_15min_nowcrossing = 0;
  363. }
  364. AddLabel(MA_15min_higher, "15m", Color.DARK_GREEN);
  365. AddLabel(MA_15min_lower, "15m", Color.DARK_RED);
  366. AddLabel(MA_15min_same, "15m", Color.WHITE);
  367.  
  368. def MA_10min_close;
  369. def MA_10min_shortAvg;
  370. def MA_10min_longAvg;
  371. def MA_10min_higher;
  372. def MA_10min_lower;
  373. def MA_10min_same;
  374. def MA_10min_nowcrossing;
  375. if GetAggregationPeriod() <= AggregationPeriod.TEN_MIN {
  376. MA_10min_close = close(period="10 min");
  377. MA_10min_shortAvg = MovingAverage(MAtype, MA_10min_close, ShortAverage);
  378. MA_10min_longAvg = MovingAverage(MAtype,MA_10min_close, LongAverage);
  379. MA_10min_nowcrossing = if Crosses(MA_10min_shortAvg, MA_10min_longAvg, CrossingDirection.ANY) then 1 else 0;
  380. MA_10min_same = if MA_10min_nowcrossing == 1 then 1 else Double.NaN;
  381. if MA_10min_same == 1 {
  382. MA_10min_higher = Double.NaN;
  383. MA_10min_lower = Double.NaN;
  384. } else {
  385. MA_10min_higher = if MA_10min_shortAvg >= MA_10min_longAvg then 1 else Double.NaN;
  386. MA_10min_lower = if MA_10min_shortAvg < MA_10min_longAvg then 1 else Double.NaN;
  387. }
  388. } else {
  389. MA_10min_close = 0;
  390. MA_10min_shortAvg = 0;
  391. MA_10min_longAvg = 0;
  392. MA_10min_higher = Double.NaN;
  393. MA_10min_lower = Double.NaN;
  394. MA_10min_same = Double.NaN;
  395. MA_10min_nowcrossing = 0;
  396. }
  397. AddLabel(MA_10min_higher, "10m", Color.DARK_GREEN);
  398. AddLabel(MA_10min_lower, "10m", Color.DARK_RED);
  399. AddLabel(MA_10min_same, "10m", Color.WHITE);
  400.  
  401. def MA_shortAvgmin_close;
  402. def MA_shortAvgmin_shortAvg;
  403. def MA_shortAvgmin_longAvg;
  404. def MA_shortAvgmin_higher;
  405. def MA_shortAvgmin_lower;
  406. def MA_shortAvgmin_same;
  407. def MA_shortAvgmin_nowcrossing;
  408. if GetAggregationPeriod() <= AggregationPeriod.FIVE_MIN {
  409. MA_shortAvgmin_close = close(period="5 min");
  410. MA_shortAvgmin_shortAvg = MovingAverage(MAtype, MA_shortAvgmin_close, ShortAverage);
  411. MA_shortAvgmin_longAvg = MovingAverage(MAtype,MA_shortAvgmin_close, LongAverage);
  412. MA_shortAvgmin_nowcrossing = if Crosses(MA_shortAvgmin_shortAvg, MA_shortAvgmin_longAvg, CrossingDirection.ANY) then 1 else 0;
  413. MA_shortAvgmin_same = if MA_shortAvgmin_nowcrossing == 1 then 1 else Double.NaN;
  414. if MA_shortAvgmin_same == 1 {
  415. MA_shortAvgmin_higher = Double.NaN;
  416. MA_shortAvgmin_lower = Double.NaN;
  417. } else {
  418. MA_shortAvgmin_higher = if MA_shortAvgmin_shortAvg >= MA_shortAvgmin_longAvg then 1 else Double.NaN;
  419. MA_shortAvgmin_lower = if MA_shortAvgmin_shortAvg < MA_shortAvgmin_longAvg then 1 else Double.NaN;
  420. }
  421. } else {
  422. MA_shortAvgmin_close = 0;
  423. MA_shortAvgmin_shortAvg = 0;
  424. MA_shortAvgmin_longAvg = 0;
  425. MA_shortAvgmin_higher = Double.NaN;
  426. MA_shortAvgmin_lower = Double.NaN;
  427. MA_shortAvgmin_same = Double.NaN;
  428. MA_shortAvgmin_nowcrossing = 0;
  429. }
  430. AddLabel(MA_shortAvgmin_higher, "5m", Color.DARK_GREEN);
  431. AddLabel(MA_shortAvgmin_lower, "5m", Color.DARK_RED);
  432. AddLabel(MA_shortAvgmin_same, "5m", Color.WHITE);
  433.  
  434. def MA_4min_close;
  435. def MA_4min_shortAvg;
  436. def MA_4min_longAvg;
  437. def MA_4min_higher;
  438. def MA_4min_lower;
  439. def MA_4min_same;
  440. def MA_4min_nowcrossing;
  441. if GetAggregationPeriod() <= AggregationPeriod.FOUR_MIN {
  442. MA_4min_close = close(period="4 min");
  443. MA_4min_shortAvg = MovingAverage(MAtype, MA_4min_close, ShortAverage);
  444. MA_4min_longAvg = MovingAverage(MAtype,MA_4min_close, LongAverage);
  445. MA_4min_nowcrossing = if Crosses(MA_4min_shortAvg, MA_4min_longAvg, CrossingDirection.ANY) then 1 else 0;
  446. MA_4min_same = if MA_4min_nowcrossing == 1 then 1 else Double.NaN;
  447. if MA_4min_same == 1 {
  448. MA_4min_higher = Double.NaN;
  449. MA_4min_lower = Double.NaN;
  450. } else {
  451. MA_4min_higher = if MA_4min_shortAvg >= MA_4min_longAvg then 1 else Double.NaN;
  452. MA_4min_lower = if MA_4min_shortAvg < MA_4min_longAvg then 1 else Double.NaN;
  453. }
  454. } else {
  455. MA_4min_close = 0;
  456. MA_4min_shortAvg = 0;
  457. MA_4min_longAvg = 0;
  458. MA_4min_higher = Double.NaN;
  459. MA_4min_lower = Double.NaN;
  460. MA_4min_same = Double.NaN;
  461. MA_4min_nowcrossing = 0;
  462. }
  463. AddLabel(MA_4min_higher, "4m", Color.DARK_GREEN);
  464. AddLabel(MA_4min_lower, "4m", Color.DARK_RED);
  465. AddLabel(MA_4min_same, "4m", Color.WHITE);
  466.  
  467. def MA_3min_close;
  468. def MA_3min_shortAvg;
  469. def MA_3min_longAvg;
  470. def MA_3min_higher;
  471. def MA_3min_lower;
  472. def MA_3min_same;
  473. def MA_3min_nowcrossing;
  474. if GetAggregationPeriod() <= AggregationPeriod.THREE_MIN {
  475. MA_3min_close = close(period="3 min");
  476. MA_3min_shortAvg = MovingAverage(MAtype, MA_3min_close, ShortAverage);
  477. MA_3min_longAvg = MovingAverage(MAtype,MA_3min_close, LongAverage);
  478. MA_3min_nowcrossing = if Crosses(MA_3min_shortAvg, MA_3min_longAvg, CrossingDirection.ANY) then 1 else 0;
  479. MA_3min_same = if MA_3min_nowcrossing == 1 then 1 else Double.NaN;
  480. if MA_3min_same == 1 {
  481. MA_3min_higher = Double.NaN;
  482. MA_3min_lower = Double.NaN;
  483. } else {
  484. MA_3min_higher = if MA_3min_shortAvg >= MA_3min_longAvg then 1 else Double.NaN;
  485. MA_3min_lower = if MA_3min_shortAvg < MA_3min_longAvg then 1 else Double.NaN;
  486. }
  487. } else {
  488. MA_3min_close = 0;
  489. MA_3min_shortAvg = 0;
  490. MA_3min_longAvg = 0;
  491. MA_3min_higher = Double.NaN;
  492. MA_3min_lower = Double.NaN;
  493. MA_3min_same = Double.NaN;
  494. MA_3min_nowcrossing = 0;
  495. }
  496. AddLabel(MA_3min_higher, "3m", Color.DARK_GREEN);
  497. AddLabel(MA_3min_lower, "3m", Color.DARK_RED);
  498. AddLabel(MA_3min_same, "3m", Color.WHITE);
  499.  
  500. def MA_2min_close;
  501. def MA_2min_shortAvg;
  502. def MA_2min_longAvg;
  503. def MA_2min_higher;
  504. def MA_2min_lower;
  505. def MA_2min_same;
  506. def MA_2min_nowcrossing;
  507. if GetAggregationPeriod() <= AggregationPeriod.TWO_MIN {
  508. MA_2min_close = close(period="2 min");
  509. MA_2min_shortAvg = MovingAverage(MAtype, MA_2min_close, ShortAverage);
  510. MA_2min_longAvg = MovingAverage(MAtype,MA_2min_close, LongAverage);
  511. MA_2min_nowcrossing = if Crosses(MA_2min_shortAvg, MA_2min_longAvg, CrossingDirection.ANY) then 1 else 0;
  512. MA_2min_same = if MA_2min_nowcrossing == 1 then 1 else Double.NaN;
  513. if MA_2min_same == 1 {
  514. MA_2min_higher = Double.NaN;
  515. MA_2min_lower = Double.NaN;
  516. } else {
  517. MA_2min_higher = if MA_2min_shortAvg >= MA_2min_longAvg then 1 else Double.NaN;
  518. MA_2min_lower = if MA_2min_shortAvg < MA_2min_longAvg then 1 else Double.NaN;
  519. }
  520. } else {
  521. MA_2min_close = 0;
  522. MA_2min_shortAvg = 0;
  523. MA_2min_longAvg = 0;
  524. MA_2min_higher = Double.NaN;
  525. MA_2min_lower = Double.NaN;
  526. MA_2min_same = Double.NaN;
  527. MA_2min_nowcrossing = 0;
  528. }
  529. AddLabel(MA_2min_higher, "2m", Color.DARK_GREEN);
  530. AddLabel(MA_2min_lower, "2m", Color.DARK_RED);
  531. AddLabel(MA_2min_same, "2m", Color.WHITE);
  532.  
  533.  
  534. def MA_1min_close;
  535. def MA_1min_shortAvg;
  536. def MA_1min_longAvg;
  537. def MA_1min_higher;
  538. def MA_1min_lower;
  539. def MA_1min_same;
  540. def MA_1min_nowcrossing;
  541. if GetAggregationPeriod() == AggregationPeriod.MIN {
  542. MA_1min_close = close(period="1 min");
  543. MA_1min_shortAvg = MovingAverage(MAtype, MA_1min_close, ShortAverage);
  544. MA_1min_longAvg = MovingAverage(MAtype,MA_1min_close, LongAverage);
  545. MA_1min_nowcrossing = if Crosses(MA_1min_shortAvg, MA_1min_longAvg, CrossingDirection.ANY) then 1 else 0;
  546. MA_1min_same = if MA_1min_nowcrossing == 1 then 1 else Double.NaN;
  547. if MA_1min_same == 1 {
  548. MA_1min_higher = Double.NaN;
  549. MA_1min_lower = Double.NaN;
  550. } else {
  551. MA_1min_higher = if MA_1min_shortAvg >= MA_1min_longAvg then 1 else Double.NaN;
  552. MA_1min_lower = if MA_1min_shortAvg < MA_1min_longAvg then 1 else Double.NaN;
  553. }
  554. } else {
  555. MA_1min_close = 0;
  556. MA_1min_shortAvg = 0;
  557. MA_1min_longAvg = 0;
  558. MA_1min_higher = Double.NaN;
  559. MA_1min_lower = Double.NaN;
  560. MA_1min_same = Double.NaN;
  561. MA_1min_nowcrossing = 0;
  562. }
  563. AddLabel(MA_1min_higher, "1m", Color.DARK_GREEN);
  564. AddLabel(MA_1min_lower, "1m", Color.DARK_RED);
  565. AddLabel(MA_1min_same, "1m", Color.WHITE);
Advertisement
Add Comment
Please, Sign In to add comment