Predicting Crypto Prices in Python

Поделиться
HTML-код
  • Опубликовано: 1 июн 2024
  • Today we learn how to predict cryptocurrency prices in Python.
    Get Tabnine for FREE here: bit.ly/3cO76nS
    DISCLAIMER: This is not investing advice. I am not a professional who is qualified in giving any financial advice. This is a video purely about programming using financial data.
    ◾◾◾◾◾◾◾◾◾◾◾◾◾◾◾◾◾
    📚 Programming Books & Merch 📚
    💻 The Algorithm Bible Book: www.neuralnine.com/books/
    🐍 The Python Bible Book: www.neuralnine.com/books/
    👕 Programming Merch: www.neuralnine.com/shop
    🌐 Social Media & Contact 🌐
    📱 Website: www.neuralnine.com/
    📷 Instagram: / neuralnine
    🐦 Twitter: / neuralnine
    🤵 LinkedIn: / neuralnine
    📁 GitHub: github.com/NeuralNine
    🎵 Outro Music From: www.bensound.com/
    Timestamps:
    0:00 Intro
    2:33 Disclaimer
    3:33 Loading Financial Data
    8:37 Preparing Data
    13:21 Neural Network Model
    17:34 Testing The Model
    27:03 Price Prediction
    28:48 Predicting Into The Future
    30:55 Outro
  • НаукаНаука

Комментарии • 266

  • @ProGuitarUA
    @ProGuitarUA 3 года назад +10

    this channel is the real thing!! no bull shit, straight forward, well arranged information. Thank you so much for all the effort!

  • @timothymagsino
    @timothymagsino 2 года назад +5

    Amazing content as always, keep up the great work!

  • @Covalent5
    @Covalent5 3 года назад +8

    Please can you show us how to predict a month ahead and plot the graph? That would be nice to see!

  • @TheRetroEngine
    @TheRetroEngine 2 года назад

    vi user here! Yeah I remember when I used it in '88 or so! thanks for mentioning it - muscle memory is a weird thang. Great video! Subbed. I love the way you type as I do, yet explain so well. Keep going dude.

  • @aadarsh_chaurasia
    @aadarsh_chaurasia 3 года назад +20

    I don't know know why my fingures automatically tap on your video notification 😂 You are amazing with amazing projects 👍🏼

  • @slawomirgontarek4213
    @slawomirgontarek4213 3 года назад +7

    You should include some indicators, eg EMA and its prediction for confirmation.

  • @ChangKaiHua300
    @ChangKaiHua300 2 года назад +39

    Dear Sir and class,
    the range of your x_test should be
    test_start=dt.datetime(2020,1,1)+dt.timedelta(days=-prediction_days)
    test_end=dt.datetime.now()
    I think the model_inputs should have data range:
    (60 days prior to 2020,1,1 to 2020,1,1) plus (2020,1,1 to now)
    ,not (60 days prior to now to now) plus (2020,1,1 to now)
    the mistake will be reflected at 25:30, since the btc has an increasing trend, your predicted price in the beginning should not be way higher than actual. The reason is you use (60 days prior to now) to predict (2020,1,1)
    Please clarify
    Thank you
    Kai-

    • @gbagba81
      @gbagba81 2 года назад

      could you please write the model_inputs please? I can't figure it out please

    • @dana-pz5wc
      @dana-pz5wc 2 года назад

      @@gbagba81 To fix the first price, put this:
      total_dataset = pd.concat((data["Close"], test_data["Close"]), axis = 0)

      model_inputs = total_dataset[len(total_dataset) - len(test_data) - prediction_days:].values

      support_array = total_dataset[len(total_dataset) - len(test_data)-prediction_days- len(test_data):len(total_dataset) - len(test_data)- len(test_data)]
      support_array = np.array(support_array)

      model_inputs2= model_inputs[prediction_days:]
      support_array2 = np.concatenate([support_array, model_inputs2])

      model_inputs = support_array2

      model_inputs = model_inputs.reshape(-1, 1)
      model_inputs = scaler.fit_transform(model_inputs)

      x_test = []

    • @gbagba81
      @gbagba81 2 года назад +1

      @@junwen6020 it's not supposed to make sense. I've seen all courses in RUclips not a single one explains why lstm, what the hell are the numbers, they just throw random parameters because science!

    • @mirzarameezahmedbaig93
      @mirzarameezahmedbaig93 Год назад +1

      @@gbagba81
      # Add This Line
      data_before_test = web.DataReader(f"{crypto_currency}-{against_currency}", "yahoo", (test_start - datetime.timedelta(days=prediction_days)), test_start)
      # Modify the line that you have to this
      total_dataset = pd.concat((data_before_test['Close'], test_data['Close']), axis=0)
      # Anddd you're done!

    • @gbagba81
      @gbagba81 Год назад

      @@mirzarameezahmedbaig93 I'll try this today and be right back

  • @swastikmajumdar6674
    @swastikmajumdar6674 2 года назад

    Great work! Loved it!

  • @horseradish4046
    @horseradish4046 2 года назад +2

    you may not need to do a whole indepth theoretical video on neural networks, just explain what you're actually doing with the tensorflow stuff.
    like what the units=50 values do if they're lower or higher, same with the Dropout(0.2), why you need the return_sequences and what does more layers give you, etc.

  • @hackercoolio
    @hackercoolio 2 года назад

    Liked and subscribed.. Thank you and keep them coming

  • @juminokahlister1748
    @juminokahlister1748 2 года назад +3

    Traceback (most recent call last):
    File "c:\Users\10001\Documents\import numpy as np.py", line 69, in
    x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
    IndexError: tuple index out of range

  • @antondelagarza6675
    @antondelagarza6675 3 года назад +13

    Can you show us how to feed the predicted data back into the model so the model can make actual predictions, please?

  • @slawomirgontarek4213
    @slawomirgontarek4213 3 года назад +3

    Thanks. Very interesting lessons, but I think you should follow and add more explanatory comments. This will allow you to analyze the code better over time.

  • @dhruvildalwadi9881
    @dhruvildalwadi9881 2 года назад

    Nice work! Do you have any documentation of this coding like a report or something?

  • @saladfingers69420
    @saladfingers69420 3 года назад

    Awesome video bro thanks!

  • @rvmishra9881
    @rvmishra9881 3 года назад

    Smart RUclips, exposing your video on right time.

  • @deanbawdry
    @deanbawdry Год назад

    extremely helpful and clear. thanks a lot

  • @gaspard__frl
    @gaspard__frl 6 месяцев назад

    Okay watch it all that’s a very good tutorial thanks for all the work
    I’m just wondering now how can we improve the model like are we going to run it over and over or there is a value we can change so the model can train longer and have a better accuracy?
    And last question, if we are tuning it few times, is the model going to remember the error it may have made before ?

  • @codewithyug1129
    @codewithyug1129 3 года назад

    Wooo awesome build ^^ When do you suppose you will upload the video for the zoom clone. I was asked for yt channels that I can prefer and your channel is one of all the channels coz you are one of the best coding tutors

  • @CallmeMrRoyal
    @CallmeMrRoyal Год назад +3

    this does not work : data = web.DataReader(f"{crypto_currency}-{against_currency}", 'yahoo', start, end), says "string indices must be integers"

  • @almighysanti3061
    @almighysanti3061 2 года назад

    Great video Thank you!

  • @dnas5629
    @dnas5629 Год назад +1

    Great tutorial, but would like to know what is it actually doing here. Is it looking at historical patterns? How many days is considered a pattern, 60? Also, when you offset the data by 60 days then is the same true when you had the data offset by 1 day? In other words, should the prediction line be shifted 1 day out?

  • @132Revolt
    @132Revolt 2 года назад +1

    Great video and thank you for explaining the way that you have.
    Did anyone else have to remove "mode." from "model.Dense(units=1)" to get Dense to be recognized?

    • @thomashouweling6450
      @thomashouweling6450 2 года назад +6

      If you imported keras layers as in the video, just replace that line with model.add(Dense(units=1))

  • @Jxmiecole
    @Jxmiecole 3 года назад

    Great 👍 as always

  • @scottcarnley625
    @scottcarnley625 3 года назад +1

    GREAT VIDEO!! Learned so much!!!
    Do you have a video on where the code predicts say day 62 on previous 60 days and then day 63 on previous 60 as you mentioned in video?

    • @thomasdowd2183
      @thomasdowd2183 2 года назад

      He gets into that in the "Predicting into the Future" segment near the end of the video.

    • @mateoruiz1311
      @mateoruiz1311 2 года назад

      Saw your profile picture and just wanted to say GIG EM! WHOOP!

  • @aliozmaral2041
    @aliozmaral2041 3 года назад

    That was realy educative Thank you

  • @Covalent5
    @Covalent5 3 года назад +12

    Can you show us how to feed the prediction data into the model so we actually predict ahead? I mean not just one day. How can we predict the next month? Thanks 🙏

    • @MACHINEBUILDER
      @MACHINEBUILDER 2 года назад +3

      it's basically impossible to accurately predict the next month's btc price. Bitcoin is such a volatile market- anything can influence it _(like Elon Musk tweeting...)_

  • @markphethean3831
    @markphethean3831 3 года назад +1

    Great video, as always!🙌

  • @shashwatshah2132
    @shashwatshah2132 3 года назад +1

    Sir, is there a way to program a speech recognition deep learning model???
    If possible could you please make a guide on this???

  • @loganbarker5341
    @loganbarker5341 2 года назад +1

    Can anyone explain the graph a little more, like the difference between what its actually predicting? If I'm predicting off the last 60 days, why does the prediction price follow the chart the whole way? I'm not entirely understanding how it's predicting future prices when there is no extent beyond the actual prices graph.

  • @tomaszpielecki9287
    @tomaszpielecki9287 Год назад +2

    Have problem with data = DataReader(f'{crypto}-{against}', 'yahoo', start=start_date, end=end_date) no conected from yahoo

  • @kalilveramartinez4617
    @kalilveramartinez4617 2 года назад +14

    Great tutorial! New subscriber. Now, what if the neurla network could take it´s own predictions compare them with the actual prices in the past, calculte the mistakes and sort of learn from them, and then do that again with the refined results and so on to finally obtain a better prediction? Is that also programable on your script? Do you think that would work?

    • @fabianarevalo2198
      @fabianarevalo2198 2 года назад +1

      I had the same thought. Have you figure anything about it?

    • @rajaboy2293
      @rajaboy2293 2 года назад +1

      I am guessing the way to do it is to log the same data on realtime but with prediction for example open, high, low, close, close_pred, and just retrain the model by loading the model using tensorflow and feeding it the features of realtime with making a backup of previous model for falling back in case of overfitting

    • @mourad5242
      @mourad5242 2 года назад

      yes, this is called transfer learning or incremental learning.

  • @matthewcollins1858
    @matthewcollins1858 2 года назад +1

    How would you run a string of predictions? Say I want to see what it predicts the price will be every minute for the next 5-10 minutes.

  • @MJ-tn8tw
    @MJ-tn8tw 3 года назад

    Hi man good work your coding is very educational and useful can you just tell me how to fix the error Sequential object has no attribute prediction

  • @NiepoprawnyKomentator
    @NiepoprawnyKomentator Год назад

    Good job, thank's! :)

  • @sayandey1478
    @sayandey1478 5 месяцев назад

    @neuralnine any idea how to do the training online/incrementally?

  • @sovereignlivingsoul
    @sovereignlivingsoul Год назад

    interesting, thanks for the video

  • @tuhindas6745
    @tuhindas6745 2 года назад +1

    Why did you scale the entire dataset using MinMax Scaling.. It causes data leakage into the test set. The reason why your prediction looks similar to actual values is because there is data leakage.. We should always fit and transform the train set only to fit the test set.

  • @vincenthughes5795
    @vincenthughes5795 3 года назад +5

    am I confusing something or testing data overlaps with training data? Is it not a problem?

  • @fredrickmahinay607
    @fredrickmahinay607 Год назад

    Hey bro. Your code seems to only care about the test data. The real data seems to be forgotten and is not being considered on the plotted values?

  • @eigen_art_ich
    @eigen_art_ich Год назад

    Do you use that script for coding predictions at Numeraire?

  • @wko_
    @wko_ 3 года назад

    I was happy when I saw the video notification, although I don't care about bitcoin..
    Brazilian here ✌

  • @anintrovertabroad2065
    @anintrovertabroad2065 3 года назад

    when I attempt to fit the model im getting " TypeError: 'int' object is not iterablef". I'm guessing this has asomething to do with the input_shpe. I can't seem to figure out why its doing that though.

  • @nagendranarapareddy760
    @nagendranarapareddy760 3 года назад +1

    Great dude 👍. Your videos like adrenaline booster's
    Waiting for next video 😁

  • @turukhuder520
    @turukhuder520 Год назад

    for x in range(prediction_days +1, len(scaled_data)):
    x_train.append(scaled_data[x-prediction_days-1:x-1, 0]) # using [1:60] to predict [61], [1:60] to predict [60] wrong!
    y_train.append(scaled_data[x,0])

  • @muktapatil4941
    @muktapatil4941 2 года назад

    Hey, i tried your code. But I am getting a "ValueError: Found array with dim 3. Estimator expected

  • @Leo-jz3tu
    @Leo-jz3tu Год назад

    Interesting subject! If this is suppose to be a tutorial you should probably explain more in general of what you're doing or give write more comments. Or both. Anyway, thanks for the video

  • @aymancassim8944
    @aymancassim8944 3 года назад

    I have problem using tabnine in vim like it doesnt activate what should I do?

  • @soundscheck5194
    @soundscheck5194 3 года назад

    so where to find these data sets ?pip install numpy like that ????, where can i find these?

  • @afkbuster6874
    @afkbuster6874 3 года назад

    best description

  • @mauricioascenciomartinez1308
    @mauricioascenciomartinez1308 2 года назад +1

    I'm stuck, how do I print the prediction?

  • @vinistudypoints5148
    @vinistudypoints5148 3 месяца назад

    What is the meaning of 'Yahoo' in above code can we use another word on this place?

  • @triggerhappy9358
    @triggerhappy9358 2 года назад

    Every time I re-train my model and re-predict, I get completely different predictions. They are off by about 1000 each time, does anyone know why this is?

  • @kaushikbajaj3522
    @kaushikbajaj3522 2 года назад

    Thank you so much sir

  • @Hasan-gh9gv
    @Hasan-gh9gv 3 года назад

    Heyy bro first of all great video. I have a request, can you put your code on your github ?

  • @AP-gx8fw
    @AP-gx8fw Год назад

    hello Sir,
    I would appreciate it if you make a video using Twitter API on sentiment analysis

  • @tamkhong2517
    @tamkhong2517 2 года назад

    Hi,
    I got an error at the last step. Could you guys explain it for me, please? the code stops at the line
    prediction_prices = model.predict(x_test)
    ValueError: in user code: ### there is a bunch of python files related to Keras I guess
    ValueError: slice index 0 of dimension 0 out of bounds. for '{{node strided_slice_1}} = StridedSlice[Index=DT_INT32, T=DT_FLOAT, begin_mask=0, ellipsis_mask=0, end_mask=0, new_axis_mask=0, shrink_axis_mask=1](transpose, strided_slice_1/stack, strided_slice_1/stack_1, strided_slice_1/stack_2)' with input shapes: [0,?,1], [1], [1], [1] and with computed input tensors: input[1] = , input[2] = , input[3] = .

  • @NivBarchechet
    @NivBarchechet Год назад

    i had a problem with line 8 and 9 importing keras from tensorflow. for me i needed to wirte from keras.layers import Dense, Dropout, LSTM thanks alot for everything men

    • @binarygun8221
      @binarygun8221 Год назад +4

      instead of
      tensorflow.keras.layers import Dense, Dropout, LSTM
      go with
      tensorflow.python.keras.layers import Dense, Dropout, LSTM

  • @LeoSantos-rp3nx
    @LeoSantos-rp3nx 2 года назад

    How Can I use this for future predicts?

  • @drathez3359
    @drathez3359 3 года назад +12

    Is there any way we could predict future price like it went ahead the actual price graph instead of it overlapping the current graph?
    Thank you in advance! :)

    • @user-oq3ti3cd8b
      @user-oq3ti3cd8b 2 года назад

      No ,there is no way ,u cannot get the next predicted price unless actual price is already given .So the prediction is a False Proposition to some extent.

  • @anshul1111
    @anshul1111 3 года назад +1

    Hey, i got this error at timestamp 25:00. Please let me know why is this occuring
    TypeError: only integer scalar arrays can be converted to a scalar index

    • @DamagedBrain24
      @DamagedBrain24 3 года назад

      Same error, if i figure it out i'il let you know

    • @DamagedBrain24
      @DamagedBrain24 3 года назад

      I solved it. You probably have writed the last x_test var wrong (like me). Just use this
      x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))

  • @ryanfurlong3213
    @ryanfurlong3213 3 года назад +1

    I get the same error for both your stock tutorials when predicting the price: "expected lstm input to have shape (60,1) but got array shape (59,1) any ideas?

    • @MyChanel1310
      @MyChanel1310 3 года назад +1

      I get the same error on both of them also

    • @IovuAdrian1
      @IovuAdrian1 3 года назад +5

      real_data = [model_inputs[len(model_inputs) - prediction_days:len(model_inputs) + 1, 0]]

  • @rompvmrix8103
    @rompvmrix8103 7 месяцев назад

    hi bro your code requires transaction variables where is this value actually taken thanks man

  • @Krisler12
    @Krisler12 3 года назад +2

    Please, how to make it to predict more than one value at a time and instead make it to predict 30 or 60 values at once after it analyses past X values sequence? Thank you!
    P.S.: Are you Romanian?

    • @NeuralNine
      @NeuralNine  3 года назад +1

      I mentioned how it would work. No.

    • @gbagba81
      @gbagba81 2 года назад

      apparently he's austrian from Vienna. But idk

  • @zacharyschneider6040
    @zacharyschneider6040 2 года назад

    I'm unable to get a window showing for the graph

  • @francoforte274
    @francoforte274 2 года назад

    Can you help me please? In line 32 I get 'tuple index out of range'

  • @balinmenezes1094
    @balinmenezes1094 Год назад +1

    Hello
    Im getting an error saying: TypeError: string indices must be integers, not 'str'
    for data = web.DataReader(f'{crypto_currency}-{against_currency}', 'yahoo', start, end)
    please help me out asap

  • @elcapitaineenterprises5245
    @elcapitaineenterprises5245 3 года назад

    Thanks for this video...been working step by step on how you were doing it but after everything, I run the program and this was the error message I got "'Sequential' object has no attribute 'prediction'." Can you please help out in solving this error? Thanks

    • @kevinchweya7310
      @kevinchweya7310 2 года назад +1

      real_data = [model_inputs[len(model_inputs) - prediction_days:len(model_inputs) + 1, 0]]
      copied from someone else. Might help you.

  • @NuncX
    @NuncX Год назад

    Where can I find the code from the video?

  • @sameersadventures4932
    @sameersadventures4932 3 года назад

    I need this thanks

  • @ENTP247
    @ENTP247 2 года назад

    I am a newbie, i just started learning programming yesterday. This seems almost impossible for me to learn I dont even know what he is doing.

  • @ShafekulAbid
    @ShafekulAbid 3 года назад

    you already have scaled the data then why did you reshape it again?

  • @Janjansen10
    @Janjansen10 2 года назад

    I have the following error message, does someone know how I could solve this?
    ValueError Traceback (most recent call last)
    99 real_data = np.reshape(real_data, (real_data.shape[0], real_data.shape[1], 1))
    100
    --> 101 prediction = model.predict(real_data)
    102 prediction = scaler.inverse_transform(prediction)
    103
    ..............
    ValueError: Error when checking input: expected lstm_3_input to have shape (60, 1) but got array with shape (59, 1)
    thanks!

  • @IzUrBoiKK
    @IzUrBoiKK 3 года назад +1

    I want go as my second learnt by you, pls make a series. p.s. I have only done python the best and bec of you bro!

  • @huntermckeown1144
    @huntermckeown1144 Год назад +1

    I just want to say that what you are doing is awesome! We need more Americans like you my friend!

  • @prod.ot5
    @prod.ot5 3 года назад +7

    24 seconds is reasonable

  • @addledanorak8297
    @addledanorak8297 3 года назад +17

    why does the description say "Today we learn how to code a simple snake game in Python." 😂?

    • @NeuralNine
      @NeuralNine  3 года назад +7

      oh boy thank you 😂

    • @richardpogoson
      @richardpogoson 3 года назад

      Couldn't possibly be further from the truth!

  • @EttoreMastrogiacomo
    @EttoreMastrogiacomo 2 года назад +1

    why do you use prices (they are not stationary) and not use returns instead?

    • @christiansmithson6575
      @christiansmithson6575 2 года назад

      When using DL with LSTM, non-stationarity isn't really a issue. Unlike traditional time series analysis.

  • @marc_montalvez
    @marc_montalvez 2 года назад

    I am lost, because I dont understand how I can see in the plot the prediction price for the future 30 days.

  • @andrewted2992
    @andrewted2992 3 года назад +3

    Сan I get the full code somewhere? Thanks for the videos 👍

    • @IovuAdrian1
      @IovuAdrian1 3 года назад +8

      import numpy as np
      import matplotlib.pyplot as plt
      import pandas as pd
      import pandas_datareader as web
      import datetime as dt
      from sklearn.preprocessing import MinMaxScaler
      from tensorflow.keras.layers import Dense, Dropout, LSTM
      from tensorflow.keras.models import Sequential
      crypto_currency = 'BTC'
      against_currency = 'USD'
      start = dt.datetime(2020, 1, 1)
      end = dt.datetime.now()
      data = web.DataReader(f'{crypto_currency}-{against_currency}', 'yahoo', start, end)
      # Prepare Data
      #print(data.head())
      scaler = MinMaxScaler(feature_range=(0,1))
      scaled_data = scaler.fit_transform(data['Close'].values.reshape(-1,1))
      prediction_days = 60
      x_train, y_train = [], []
      for x in range(prediction_days, len(scaled_data)):
      x_train.append(scaled_data[x-prediction_days:x, 0])
      y_train.append(scaled_data[x, 0])
      x_train , y_train = np.array(x_train), np.array(y_train)
      x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
      # Create Neural Network
      model = Sequential()
      model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
      model.add(Dropout(0.2))
      model.add(LSTM(units=50, return_sequences=True))
      model.add(Dropout(0.2))
      model.add(LSTM(units=50))
      model.add(Dropout(0.2))
      model.add(Dense(units=1))
      model.compile(optimizer='adam', loss='mean_squared_error')
      model.fit(x_train, y_train, epochs=25, batch_size=32)
      test_start = dt.datetime(2021, 1, 1)
      test_end = dt.datetime.now()
      test_data = web.DataReader(f'{crypto_currency}-{against_currency}', 'yahoo', test_start, test_end)
      actual_prices = test_data['Close'].values
      total_dataset = pd.concat((data['Close'], test_data['Close']), axis=0)
      model_inputs = total_dataset[len(total_dataset) - len(test_data) - prediction_days:].values
      model_inputs = model_inputs.reshape(-1, 1)
      model_inputs = scaler.fit_transform(model_inputs)
      x_test = []
      for x in range(prediction_days, len(model_inputs)):
      x_test.append(model_inputs[x-prediction_days:x, 0])
      x_test = np.array(x_test)
      x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
      prediction_prices = model.predict(x_test)
      prediction_prices = scaler.inverse_transform(prediction_prices)
      plt.plot(actual_prices, color='black', label='Actual Prices')
      plt.plot(prediction_prices, color='green', label='Predicted Prices')
      plt.title(f'{crypto_currency} price prediction')
      plt.xlabel('Time')
      plt.ylabel('Price')
      plt.legend(loc='upper left')
      plt.show()

    • @alwinjoseph4682
      @alwinjoseph4682 2 года назад

      @@IovuAdrian1 You are love!

  • @DUYTINTA
    @DUYTINTA Год назад

    Interested!

  • @mert-fh2vx
    @mert-fh2vx 3 года назад +3

    can you post the codes on github or somewhere else ?

    • @IovuAdrian1
      @IovuAdrian1 3 года назад +4

      import numpy as np
      import matplotlib.pyplot as plt
      import pandas as pd
      import pandas_datareader as web
      import datetime as dt
      from sklearn.preprocessing import MinMaxScaler
      from tensorflow.keras.layers import Dense, Dropout, LSTM
      from tensorflow.keras.models import Sequential
      crypto_currency = 'BTC'
      against_currency = 'USD'
      start = dt.datetime(2020, 1, 1)
      end = dt.datetime.now()
      data = web.DataReader(f'{crypto_currency}-{against_currency}', 'yahoo', start, end)
      # Prepare Data
      #print(data.head())
      scaler = MinMaxScaler(feature_range=(0,1))
      scaled_data = scaler.fit_transform(data['Close'].values.reshape(-1,1))
      prediction_days = 60
      x_train, y_train = [], []
      for x in range(prediction_days, len(scaled_data)):
      x_train.append(scaled_data[x-prediction_days:x, 0])
      y_train.append(scaled_data[x, 0])
      x_train , y_train = np.array(x_train), np.array(y_train)
      x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
      # Create Neural Network
      model = Sequential()
      model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
      model.add(Dropout(0.2))
      model.add(LSTM(units=50, return_sequences=True))
      model.add(Dropout(0.2))
      model.add(LSTM(units=50))
      model.add(Dropout(0.2))
      model.add(Dense(units=1))
      model.compile(optimizer='adam', loss='mean_squared_error')
      model.fit(x_train, y_train, epochs=25, batch_size=32)
      test_start = dt.datetime(2021, 1, 1)
      test_end = dt.datetime.now()
      test_data = web.DataReader(f'{crypto_currency}-{against_currency}', 'yahoo', test_start, test_end)
      actual_prices = test_data['Close'].values
      total_dataset = pd.concat((data['Close'], test_data['Close']), axis=0)
      model_inputs = total_dataset[len(total_dataset) - len(test_data) - prediction_days:].values
      model_inputs = model_inputs.reshape(-1, 1)
      model_inputs = scaler.fit_transform(model_inputs)
      x_test = []
      for x in range(prediction_days, len(model_inputs)):
      x_test.append(model_inputs[x-prediction_days:x, 0])
      x_test = np.array(x_test)
      x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
      prediction_prices = model.predict(x_test)
      prediction_prices = scaler.inverse_transform(prediction_prices)
      plt.plot(actual_prices, color='black', label='Actual Prices')
      plt.plot(prediction_prices, color='green', label='Predicted Prices')
      plt.title(f'{crypto_currency} price prediction')
      plt.xlabel('Time')
      plt.ylabel('Price')
      plt.legend(loc='upper left')
      plt.show()

  • @ahaanshah8984
    @ahaanshah8984 3 года назад

    hey im getting the error 'float' object is not subscriptable on line 22 of my code. Here is the code: scaled_data = scaler.fit_transform(data['Close'].values.reshape(-1,1)) I have tried but idk how to fix. Please somebody help.

    • @IovuAdrian1
      @IovuAdrian1 3 года назад

      scaler = MinMaxScaler(feature_range=(0,1))
      scaled_data = scaler.fit_transform(data['Close'].values.reshape(-1,1))

  • @CodewithSaad
    @CodewithSaad 6 месяцев назад

    Which ide is being used

  • @diogobranco1927
    @diogobranco1927 3 года назад +1

    Hello there nice work. Tried to follow your code but my BTC or other currency prediction plot is a straight line one or two orders of magnitude above the real price... while training the model the loss is always 500k and I get this message: WARNING:tensorflow:Model was constructed with shape (None, 60, 1) for input KerasTensor(type_spec=TensorSpec(shape=(None, 60, 1), dtype=tf.float32, name='lstm_input'), name='lstm_input', description="created by layer 'lstm_input'"), but it was called on an input with incompatible shape (None, 59, 1).
    Could you help or share your code please so I can see what I'm doing wrong?
    Best regards and keep up the good work.

    • @dingdingdongbong921
      @dingdingdongbong921 3 года назад

      I have the same error, still looking for a fix :(

    • @IovuAdrian1
      @IovuAdrian1 3 года назад +4

      real_data = [model_inputs[len(model_inputs) - prediction_days:len(model_inputs) + 1, 0]]

    • @IovuAdrian1
      @IovuAdrian1 3 года назад

      @@dingdingdongbong921 up

  • @salemabualem
    @salemabualem Год назад +2

    I am getting this error
    TypeError: string indices must be integers
    when I run get reader line

    • @kobalt2923
      @kobalt2923 Год назад +1

      Any fix available found for this?

  • @aleksandarcepic1104
    @aleksandarcepic1104 2 года назад

    hvala kralju

  • @abhi95911
    @abhi95911 3 года назад

    Bro ... Give us some time to watch privious videos..

  • @nicolascalvisi3359
    @nicolascalvisi3359 2 года назад

    6:12 i prefer gru and batchnormalisation.

  • @williamspatricia1003
    @williamspatricia1003 2 года назад +20

    I'm actually tired of working about stocks...it's driving me nuts these days, I think crypto investment is far better than stock..

    • @bennywillow5710
      @bennywillow5710 2 года назад

      Trading crypto has been a lucrative way of making money

    • @alexanderfrance7353
      @alexanderfrance7353 2 года назад

      Stocks are good but crypto is more profitable

    • @lucyanthony1092
      @lucyanthony1092 2 года назад

      I'm new to forex trade and I have making huge losses but recently I see a lot of people earning from it. can someone please tell me what I'm doing wrong

    • @malamnataalah804
      @malamnataalah804 2 года назад

      all you need is a professional trader else you will continue making losses

    • @sevaersharon6163
      @sevaersharon6163 2 года назад +1

      How can someone know a professional account manager that is trustworthy when legit once are hard to find this days

  • @mohammadkw1937
    @mohammadkw1937 3 года назад

    the code didn't work
    any help would be appreciated

  • @robertskidmore4134
    @robertskidmore4134 2 года назад +2

    After watching a couple times, I believe you made some mistakes. When loading training data, you get up till now. Meaning you are training all the data. This also results in a mistake when you concat all the values together for total_dataset (total_data has from 1/1/20 twice). As a result when you run your test, it appear remarkably accurate because, it trained on that exact data already. Still learning myself (totally new), so I could be wrong, but when I changed those things it was less accurate and much more realistic.
    Additional question: I want to start adding extra data to learn from as well. For example, including the day of the week (mon tue wed) of the data. How would you go about doing this?

    • @bluebull399
      @bluebull399 2 года назад

      Great question, did you manage to figure it out and more so how do you get the extra data? My question is how do I make data for it to train. For example, let's say I wanted the daily RSI value for the last 6 months. Where do I go to get that data?

    • @cryptoview2397
      @cryptoview2397 2 года назад

      yes, the model is being tested with data that it was trained with. that should always be avoided.

    • @davidutassy9081
      @davidutassy9081 Год назад

      I believe you are absolutely right... 😅

  • @Rp73113
    @Rp73113 3 года назад +1

    Why is line 17 giving me a syntaxerror: invalid syntax. Help

  • @pineapple3832
    @pineapple3832 Год назад

    I just started this video and my initial reaction is “no way” because if it were this simple to accurately predict crypto this guy including every other ML programmer would be rich so this will most likely not work. However I’ll watch the rest of the video and edit this to include my thoughts after.

  • @panagiotislitsas3991
    @panagiotislitsas3991 2 года назад

    Why pip is not installing on my cmd?

  • @asifshaikh594
    @asifshaikh594 2 года назад +1

    I am getting error for tensor flow

  • @cryptoview2397
    @cryptoview2397 2 года назад

    you are testing the model with the same data you used to train it.

  • @loganbarker5341
    @loganbarker5341 2 года назад +3

    I had an error with shaping in the real_data where I was getting errors stating expected shape=(None, 60, 1), found shape=(None, 59, 1). To fix this I had to remove the +1 in real_data = [model_inputs[len(model_inputs) + 1 - predict_days:len(model_inputs) + 1, 0]]. I changed it to real_data = [model_inputs[len(model_inputs) - predict_days:len(model_inputs) + 1, 0]], which changed the found shape to (1,60,1) instead of (1,59,1). Is this ok?

    • @gbagba81
      @gbagba81 2 года назад

      you know i actually believe that to put just real_data = [model_inputs[ - predict_days:, 0]] will just do it, because, think you have to place an input to the prediction model with only the 60 latest days so you can predict the 61th one. the ugly thing there is just to figure what on earth is the ":" doing. so i started playing with it until i figured what was that actually expressing. i'll be looking after your answer good luck

  • @vinistudypoints5148
    @vinistudypoints5148 2 месяца назад

    How to run this code?

  • @vinistudypoints5148
    @vinistudypoints5148 3 месяца назад

    Can we use another word on the place of 'web' ?