TradingView
tbiktag
26. Okt. 2021 21:46

FFTLibrary 

SPDR S&P 500 ETF TRUSTArca

Beschreibung

Library "FFTLibrary" contains a function for performing Fast Fourier Transform (FFT) along with a few helper functions. In general, FFT is defined for complex inputs and outputs. The real and imaginary parts of formally complex data are treated as separate arrays (denoted as x and y). For real-valued data, the array of imaginary parts should be filled with zeros.

FFT function

fft(x, y, dir) : Computes the one-dimensional discrete Fourier transform using an [url=paulbourke.net/miscellaneous/dft/
 ]in-place complex-to-complex FFT algorithm. Note: The transform also produces a mirror copy of the frequency components, which correspond to the signal's negative frequencies.
  Parameters:
    x: float array, real part of the data, array size must be a power of 2
    y: float array, imaginary part of the data, array size must be the same as x; for real-valued input, y must be an array of zeros
    dir: string, options = ["Forward", "Inverse"], defines the direction of the transform: forward" (time-to-frequency) or inverse (frequency-to-time)
  Returns: x, y: tuple (float array, float array), real and imaginary parts of the transformed data (original x and y are changed on output)

Helper functions

fftPower(x, y) : Helper function that computes the power of each frequency component (in other words, Fourier amplitudes squared).
  Parameters:
    x: float array, real part of the Fourier amplitudes
    y: float array, imaginary part of the Fourier amplitudes
  Returns: power: float array of the same length as x and y, Fourier amplitudes squared

fftFreq(N) : Helper function that returns the FFT sample frequencies defined in cycles per timeframe unit. For example, if the timeframe is 5m, the frequencies are in cycles/(5 minutes).
  Parameters:
    N: int, window length (number of points in the transformed dataset)
  Returns: freq : float array of N, contains the sample frequencies (with zero at the start).
Kommentare
jphlong
Your code works really well. Thank you!
tbiktag
@jphlong, 🙏
henryph24
Thank you gentleman
tbiktag
@henryph24, many thanks for your support!
hybrid200x
This is an extremely useful code. Appreciate your efforts and generosity!
Bull_Market_Trader
Amazing
LearnerYK
Hello. I adapted a code to toggle position on and off. When I run this code with the bot I have, I get some errors. The thing that I can't solve from these errors is this. I want him to open a new position after closing the position. However, I cannot do what I want because I equate closing a position with opening a position.

if longEntry and shortEntry

if long
strategy.close_all( when = buySignall, comment = exitShortComment)
strategy.entry("LONG", strategy.long, when = buySignall, qty=math.min(orderQty, maxOrderQty), comment = enterLongComment)
stoppedOutLong := true
stoppedOutShort := false

else
strategy.close_all(when=sellSignall, comment = exitLongComment)
strategy.entry("SHORT", strategy.short, when = sellSignall, qty=math.min(orderQty, maxOrderQty), comment = enterShortComment)
stoppedOutLong := false
stoppedOutShort := true

else if(longEntry)
strategy.entry("LONG", strategy.long, when = buySignall, qty=math.min(orderQty, maxOrderQty), comment = enterLongComment)
strategy.close("LONG", when = sellSignall, comment = exitLongComment)
if long
stoppedOutLong := true
stoppedOutShort := false
else
stoppedOutLong := false
stoppedOutShort := true

else if(shortEntry)
strategy.entry("SHORT", strategy.short, when = sellSignall, qty=math.min(orderQty, maxOrderQty), comment = enterShortComment)
strategy.close("SHORT", when = buySignall, comment = exitShortComment)
if not long
stoppedOutShort := true
stoppedOutLong := false
else
stoppedOutShort := false
stoppedOutLong := true
jphlong
Hello @tbiktag Can you private message me? I integrated your library into a fully comprehensive trading strategy I have been developing for the last year which I'm considering sharing with the Trading View Community for small fee. I'd like to discuss with you if your open?
Mehr