Advertisement
Guest User

Untitled

a guest
Jan 24th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. // Inverse Fisher Transformation crossing on CCI (using EMA smoothening)
  2.  
  3. // required indicators
  4. var EMA = require('./EMA.js');
  5. var TEMA = require('./TEMA.js');
  6. var DEMA = require('./DEMA2.js');
  7. var RSI = require('./RSI.js');
  8. var Indicator = function(config) {
  9. console.log("config",config);
  10. this.lastTrade ==''
  11. this.vh1Array = [0]
  12. this.vl1Array = [0]
  13. this.signals = []
  14.  
  15. this.result ;
  16.  
  17. this.vh1Array_size = 5//config.settings.vh1Array_size
  18. this.vl1Array_size = 8//config.settings.vl1Array_size
  19. this.signals_size = 8
  20. this.vh1 = new EMA(5)//config.vh1);
  21. this.vl1 = new EMA(8)//config.vl1);
  22.  
  23. this.tema = new TEMA({weight:1});
  24. this.dema = new DEMA({weight1:8,weight2:5})
  25. this.rsi = new RSI({interval:7})
  26.  
  27. }
  28.  
  29. Indicator.prototype.update = function (candle) {
  30.  
  31. this.vl1Array.push((candle.high + candle.close)/2)
  32. if(this.vl1Array.length==this.vl1Array_size+1) this.vl1Array.shift()
  33.  
  34. this.vh1Array.push((candle.low + candle.close)/2)
  35. if(this.vh1Array.length==this.vh1Array_size+1) this.vh1Array.shift()
  36.  
  37. this.vh1.update(Math.max(...this.vh1Array))
  38. this.vl1.update(Math.min(...this.vl1Array))
  39.  
  40. this.rsi.update(candle)
  41. this.tema.update(candle.close)
  42. this.dema.update(candle.close)
  43. // signal should be an array.. for the is_call is_put logic to work...then almost done :)
  44. const tema = this.tema.result
  45. const dema = this.dema.result
  46. const vh1 = this.vh1.result
  47. const vl1 = this.vl1.result
  48.  
  49. const temp_signal = tema > dema ? Math.max(vh1, vl1) : Math.min(vh1, vl1)
  50.  
  51. this.signals.push(temp_signal)
  52. if(this.signals.length==this.signals_size+1) this.signals.shift()
  53.  
  54. const signals =this.signals
  55. const signals_size = this.signals_size
  56.  
  57. buy_signal =((tema >dema) &&( signals[signals_size-1] > candle.low) && (signals[signals_size-1] -signals[signals_size-2] > signals[signals_size-2] -signals[signals_size-3] ))
  58.  
  59. sell_signal =((tema < dema )&& (signals[signals_size-1] < candle.low) && (signals[signals_size-2] -signals[signals_size-1] > signals[signals_size-3]-signals[signals_size-1] ))
  60.  
  61.  
  62. if(buy_signal && this.rsi.result >74){
  63. this.result = "buy"
  64. console.log("-----------------------------------------");
  65. console.log("BUYING ",candle.start.format('MMMM Do YYYY, HH:mm:ss'));
  66.  
  67. console.log(candle.close,vh1,vl1,tema,dema,signals[signals_size-1]);
  68. console.log("-----------------------------------------");
  69.  
  70. }
  71. else if(sell_signal ){
  72. this.result = "sell"
  73. console.log("-----------------------------------------");
  74. console.log("SELLING ",candle.start.format('MMMM Do YYYY, HH:mm:ss'));
  75.  
  76. console.log(candle.close,vh1,vl1,tema,dema,signals[signals_size-1]);
  77. console.log("-----------------------------------------");
  78. }
  79. // console.log("-----------------------------------------");
  80. // console.log(candle.start.format('MMMM Do YYYY, HH:mm:ss'));
  81.  
  82. // console.log("-----------------------------------------");
  83. else{
  84. this.result = "hold"
  85. }
  86.  
  87. // if(candle.start.format('MMMM Do YYYY, h:mm:ss a')=="January 1st 2018, 8:00:00 pm")
  88. // throw Error
  89.  
  90. // console.log(signals[signals_size-1], candle.low,)//(signals[signals_size] -signals[signals_size-2] > signals[signals_size-1] -signals[signals_size-3] );
  91.  
  92. // if(sell_signal ==true || buy_signal==true) console.log("buy_signal",buy_signal,"sell_signal",sell_signal);
  93.  
  94.  
  95.  
  96.  
  97. }
  98.  
  99.  
  100. module.exports = Indicator;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement