Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Inverse Fisher Transformation crossing on CCI (using EMA smoothening)
- // required indicators
- var EMA = require('./EMA.js');
- var TEMA = require('./TEMA.js');
- var DEMA = require('./DEMA2.js');
- var RSI = require('./RSI.js');
- var Indicator = function(config) {
- console.log("config",config);
- this.lastTrade ==''
- this.vh1Array = [0]
- this.vl1Array = [0]
- this.signals = []
- this.result ;
- this.vh1Array_size = 5//config.settings.vh1Array_size
- this.vl1Array_size = 8//config.settings.vl1Array_size
- this.signals_size = 8
- this.vh1 = new EMA(5)//config.vh1);
- this.vl1 = new EMA(8)//config.vl1);
- this.tema = new TEMA({weight:1});
- this.dema = new DEMA({weight1:8,weight2:5})
- this.rsi = new RSI({interval:7})
- }
- Indicator.prototype.update = function (candle) {
- this.vl1Array.push((candle.high + candle.close)/2)
- if(this.vl1Array.length==this.vl1Array_size+1) this.vl1Array.shift()
- this.vh1Array.push((candle.low + candle.close)/2)
- if(this.vh1Array.length==this.vh1Array_size+1) this.vh1Array.shift()
- this.vh1.update(Math.max(...this.vh1Array))
- this.vl1.update(Math.min(...this.vl1Array))
- this.rsi.update(candle)
- this.tema.update(candle.close)
- this.dema.update(candle.close)
- // signal should be an array.. for the is_call is_put logic to work...then almost done :)
- const tema = this.tema.result
- const dema = this.dema.result
- const vh1 = this.vh1.result
- const vl1 = this.vl1.result
- const temp_signal = tema > dema ? Math.max(vh1, vl1) : Math.min(vh1, vl1)
- this.signals.push(temp_signal)
- if(this.signals.length==this.signals_size+1) this.signals.shift()
- const signals =this.signals
- const signals_size = this.signals_size
- 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] ))
- 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] ))
- if(buy_signal && this.rsi.result >74){
- this.result = "buy"
- console.log("-----------------------------------------");
- console.log("BUYING ",candle.start.format('MMMM Do YYYY, HH:mm:ss'));
- console.log(candle.close,vh1,vl1,tema,dema,signals[signals_size-1]);
- console.log("-----------------------------------------");
- }
- else if(sell_signal ){
- this.result = "sell"
- console.log("-----------------------------------------");
- console.log("SELLING ",candle.start.format('MMMM Do YYYY, HH:mm:ss'));
- console.log(candle.close,vh1,vl1,tema,dema,signals[signals_size-1]);
- console.log("-----------------------------------------");
- }
- // console.log("-----------------------------------------");
- // console.log(candle.start.format('MMMM Do YYYY, HH:mm:ss'));
- // console.log("-----------------------------------------");
- else{
- this.result = "hold"
- }
- // if(candle.start.format('MMMM Do YYYY, h:mm:ss a')=="January 1st 2018, 8:00:00 pm")
- // throw Error
- // console.log(signals[signals_size-1], candle.low,)//(signals[signals_size] -signals[signals_size-2] > signals[signals_size-1] -signals[signals_size-3] );
- // if(sell_signal ==true || buy_signal==true) console.log("buy_signal",buy_signal,"sell_signal",sell_signal);
- }
- module.exports = Indicator;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement