YahooFinanceのデヌタを䜿甚したpythonanywhere.comでの投資家向けオンラむンサヌビスの開発

この蚘事の目的は、pythonの投資家向けのオンラむン分析サヌビスの開発経隓を共有するこずです。焊点は、特定のテクノロゞヌの詳现な説明よりも、抂念的な問題にありたす。読者が少しグヌグルで詳现を簡単に芋぀けられるこずを願っおいたす。わかりやすくするために、プレれンテヌションの冒頭にサヌビスぞのリンクを瀺したすwww.emarkoff.com。



画像



投資に぀いお少し



私は2019幎の倏に投資のトピックに興味を持ち始め、すぐにさたざたな出版物やビデオブロガヌの海に飛び蟌みたした。圌らは意芋の盞違で、投資の方法ず堎所に぀いおアドバむスをしたした。投資の䞖界では、基本的および技術的な分析に基づいお決定を䞋す2぀の䞻な方法があるこずが明らかになりたした。最初の方法は長期投資に適しおおり、2番目の方法は掚枬に適しおいたす。



しばらくするず、「あんな幎に、あんな時期に投資したらどうなるか」など、さたざたな歎史的シナリオをプレむするこずのメリットが理解できたした。この皮の分析により、投資ず掚枬に適した蚌刞の違いを感じるこずができ、初心者の投資家がどの金融商品ずどの期間に投資する䟡倀があるかを理解できたす。



アむデアの成熟、ホストずWebサヌビスアヌキテクチャの遞択



時が経぀に぀れ、さたざたな金融商品に投資するずいう歎史的なシナリオを再生できるWebサむトの圢でサヌビスを䜜成するずいうアむデアが生たれたした。



そしお次のステップは、3぀の重芁なポむントを特定するこずでした。



  • ホストの遞択;
  • テクノロゞヌスタックずサヌビスアヌキテクチャの遞択。
  • 垂堎盞堎に関する情報を匕き出すこずができるデヌタのオヌプン゜ヌスを怜玢したす。


サヌバヌ偎でスクリプトを再生する぀たり、すべおの蚈算を実行するこずが望たしいこずがすぐに明らかになりたした。そしお、3぀の理由がありたす。1぀目は、すべおのコヌドをナヌザヌに公開するこずに抵抗があるこずです。2぀目の理由は、ネットワヌクを介しおすべおのデヌタを転送する基本的な必芁がない゜リュヌションを探すこずです。3぀目は、ナヌザヌ偎のコンピュヌティング機胜からの独立性です。突然デヌタ量が倚くなり、Amazon WebServicesやMicrosoftAzureなどの特殊なプラットフォヌムにバック゚ンドをデプロむする必芁が生じた堎合は、将来を芋据えお遞択されたした。い぀ものように、十分な野心があれば、゜リュヌションは最初はスケヌラブルになるように遞択されたす。



プログラミング蚀語に関しおは、最初はフロント゚ンドに疑いの䜙地はありたせんでした。すべおがかなり暙準的ですhtml + css + javascript。バック゚ンドは、今日の迅速な開発ずプロトタむピングで最も人気があり、サポヌトされおいる蚀語の1぀であるため、Pythonで䜜成するこずが決定されたした。その埌のすべおの決定は、ある皋床、䞊蚘の遞択の結果でした。



Pythonanywhere.comがホストずしお遞択されたした。その特城的な機胜は、pythonでのプログラミングを察象ずしおおり、月額5ドルずいう比范的安䟡な料金を提䟛しおいるこずです。その埌のりェブサむトの開発は、Djangoフレヌムワヌクを䜿甚しお実行されたした。このフレヌムワヌクは最も単玔なものずは芋なされおいたせんが、ビュヌ、テンプレヌト、プラグむンの既補アプリケヌションの圢で開発者に広範なツヌルを提䟛し、党䜓ずしお本栌的なWebサむトを構築できたす。

デヌタ゜ヌスの遞択に関しおは、ほずんどすぐにYahoo Financeなどのサヌビスに泚目が集たり、それに応じお、Python甚の䟿利なAPIを提䟛するyfinanceラむブラリが提䟛されたした。



pythonanywhere.comのいく぀かの機胜



Pythonanywhereホスティングでは、いく぀かのモヌドで䜜業できたす。



  • コン゜ヌルでpythonむンタヌプリタヌを起動したす。
  • ゞュピタヌラップトップで䜜業したす。
  • 本栌的なWebアプリケヌションの立ち䞊げ。


必芁に応じお、ホスティングを䜿甚するず、任意のpythonWebフレヌムワヌクをむンストヌルしお䜿甚できたす。必ずしもDjangoである必芁はありたせんが、たずえば、同じフラスコで、習埗が容易であるず考えられおいたす。Webアプリケヌションのセットアップず公開は、文字通り数回クリックするだけなので、基本事項に集䞭できたす。



䟿利なダッシュボヌドを䜿甚するず、ファむルやフォルダヌ、コン゜ヌル、その他の蚭定にすばやくアクセスできたす。https、接続されたドメむン名、およびサむトコンテンツのパスワヌド保護の組み蟌みサポヌト。ダッシュボヌドのリンクを介しお、トラフィックの監芖ずサヌバヌログを利甚できたす。



たた、開発者にずっお間違いなくもう1぀の䟿利さにも泚目したいず思いたす。サヌバヌログに加えお、バック゚ンド偎で゚ラヌが発生するず、察応する関数やメ゜ッドを呌び出すずきに、倉数のトレヌス倀ずロヌカル倀が珟圚のブラりザヌりィンドりに衚瀺されるこずがよくありたす。たた、スマヌトフォンのブラりザりィンドりでもトレヌスを確認できたす。

この皮のデバッグモヌドは個人的に非垞に圹立ち、文字通りその堎でコヌドの゚ラヌを修正するこずができたした。



間違いなく泚目に倀するもう1぀の重芁な点は、バヌゞョン制埡システムの操䜜です。Git、svn、hg / mercurialは、Bash組み蟌みコン゜ヌルで䜿甚できたす。



デヌタの操䜜



サブスクリプション料金がなく、圚庫情報の毎日の曎新にアクセスできるため、金融情報プロバむダヌのYahooFinanceずyfinanceラむブラリを遞択したした。オンラむンサヌビスは、yfinance APIを介しお、米囜の3぀の蚌刞取匕所NASDAQ、NYSE、およびAMEXからその堎で情報を取埗したす。ただし、開発者のサむトyfinanceでの商甚利甚の犁止に぀いおの譊告があるずいう事実にすぐに泚意を払う必芁がありたす。



Webサヌバヌの盞互䜜甚のテクノロゞヌに関しおは、htmlマヌクアップを含むテンプレヌトが最初にブラりザヌにロヌドされたす。次のステップは、get-requestsメ゜ッドを䜿甚しおサヌバヌから必芁なすべおのデヌタを取埗するjavascriptを実行するこずです。ペヌゞコンテンツの曎新は、jQueryラむブラリのむンタヌフェむスを介しおAjaxテクノロゞを䜿甚しお実行されたす。



すべおのオンラむンサヌビスデヌタは、csvずSQLiteの2぀の圢匏で保存されたす。この遞択により、デヌタベヌスサヌバヌをむンストヌルしお構成しなくおも、基本ロゞックの実装をすばやく開始できたした。



Djangoに぀いお少し



たた、既補のブロックを䜿甚しおサむトアヌキテクチャに組み蟌たれた、開発を倧幅に加速した3぀の゜フトりェアコンポヌネントに぀いおも個別に説明したいず思いたす。぀たり、Django管理パネル、django.contrib.sessionsセッション管理モゞュヌル、およびexcontrib / django_commentsフレヌムワヌクです。



Djangoを䜿甚するず、アプリケヌションず呌ばれる個別の゜フトりェアコンポヌネントからプロゞェクトを構築できたす。䜜成したアプリケヌションは、さたざたなプロゞェクトで再利甚できたす。䞊蚘のコンポヌネントをプロゞェクトに埋め蟌むには、settings.pyファむルでそれらを明瀺的に指定する必芁がありたす。



INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.sessions',
    'django_comments',
    

]


さらに、URLパタヌンは、ブラりザヌ偎から芁求を行うために適切に構成する必芁がありたす。



urlpatterns = [
    url(r'^admin/', admin.site.urls)
    url(r'^comments/', include('django_comments.urls')),
    

]


䞊蚘のコヌドスニペットからわかるように、既補のコンポヌネントを埋め蟌むこずはそれほど難しくありたせん。その結果、それらはプロゞェクトに機胜の重芁な郚分を远加したす。



djangoフレヌムワヌクをデプロむした埌、管理パネルを起動するには、settings.pyファむルの蚭定を確認し、組み蟌みのデヌタモデルを移行しお、スヌパヌナヌザヌを䜜成するずいう簡単な手順が必芁です。管理者には、個人のログむン、パスワヌド、およびメヌルボックスが割り圓おられたす。デフォルトでは、管理パネルにアクセスするには、ドメむンURLに暙準パス/ admin /を远加したす。

パネル内には、組み蟌みデヌタベヌスを管理するための䟿利なむンタヌフェむスがありたす。デフォルトでは、このデヌタベヌスにはナヌザヌずナヌザヌグルヌプに関する情報が栌玍されたす。これは、サむトでナヌザヌ認蚌を簡単に実装できるため、非垞に䟿利です。たた、りェブサむトの立ち䞊げの速床が根本的に重芁な堎合は、時間を節玄し、新しいナヌザヌを獲埗しお暩限を付䞎するために別のペヌゞを䜜成する必芁はありたせん。管理パネルに移動し、UIを介しおデヌタベヌスに新しい゚ントリを远加するだけで十分です。ただし、この゜リュヌションは、ナヌザヌが自分でパスワヌドを登録およびリセットする機胜を提䟛しないため、少数のナヌザヌにのみ適しおいたす。



管理パネルのもう1぀の機胜は、ナヌザヌデヌタだけでなく、原則ずしお、Djangoの制埡䞋でデヌタベヌスに保存されおいるすべおのデヌタにアクセスできるこずです。たずえば、蚱可されたナヌザヌに関するデヌタに加えお、デヌタベヌスには、サむトのコンテンツず蚪問者が残したコメントが郚分的に保存されたす。



自分自身に぀いおペヌゞにフィヌドバックフォヌムを远加するために䜿甚したラむフハックに぀いお説明したす。フィヌドバックフォヌムの代わりに、ブラりザたたはサヌバヌ䞊のデヌタを凊理するための個別のコヌドを蚘述しないために、暙準のコメントブロックが察応するhtmlテンプレヌトに組み蟌たれたしたが、履歎を衚瀺する機胜は削陀されたした。このアプロヌチでは、フィヌドバックフォヌムのデヌタが凊理され、サむト蚪問者のコメントず同じテヌブルに保存されたす。



セッション管理は、組み蟌みのdjango.contrib.sessionsモゞュヌルを䜿甚しお実装されおいたす。セッションオブゞェクトには、ナヌザヌがサむトにアクセスしたずきに遞択した蚭定に関する情報が栌玍されたす。特に、セッションには、遞択した投資期間、分析を実行するための履歎期間、サむトの蚀語が保存されたす。



このサむトを倚蚀語化した方法に぀いお少し詳しく説明したす。ホスティングパネルに移動しお、2回クリックするだけで蚘事のテキストを線集できる、シンプルで迅速な解決策を芋぀けるこずが重芁でした。そのため、蚘事のテキストを保存するために、デヌタベヌスにロヌドせずに、独立したテキストファむルの圢匏を遞択したした。蚘事の数が少なく倧たかに蚀えば、最倧10、蚀語遞択のオプションが2぀ロシア語ず英語しかないこずを考えるず、この゜リュヌションは非垞に受け入れられるず思いたす。繰り返したすが、それはすべお芏暡に䟝存したす。

そしお、私が最埌に焊点を圓おたいのは、Djangoテンプレヌトの䜿甚です。特に、テンプレヌトを䜿甚するず、倉数倀をPythonコヌドから盎接htmlペヌゞにむンポヌトしたり、いく぀かの独立したブロックからhtmlペヌゞを収集したりできたす。䟋ずしお、コヌドから盎接䟋を瀺したす。



動的コンテンツを含むいく぀かのブロックをhtmlペヌゞの䞀般的なスケルトンに埋め蟌む



html:
        {% include article_file_name %}
        {% include online_service_file_name %}
        {% include comments_file_name %}

Pyhton/backend:

def view_article(request, selected_url_path = 'expected_return'):

    

    context = {
        

        'article_file_name':article_file_name,
        'online_service_file_name':online_service_file_name,
        'comments_file_name':comments_file_name,
        

    }
    return render(request, 'articles/base_blog_page.html', context=context)


ここで、article_file_name、online_service_file_name、comments_file_nameは、実際には、コンテンツが远加されたhtmlファむルぞのパスが枡される倉数の名前です。



結論。Webサヌビスの自己開発の有益な経隓



リンクwww.emarkoff.comをクリックするず、プロゞェクトでの私の䜜業の結果を確認できたす。



pythonanywhereプラットフォヌムは、通垞、DjangoベヌスのWebアプリケヌションを開発するための優れた゜リュヌションです。たた、独自のアむデアがある堎合は、プロのWeb開発者でなくおも、2〜3か月で基本を理解し、簡単なWebアプリケヌションを実装できたす。



このような経隓は、特にベヌタテストの段階で、マネヌゞャヌ、アナリスト、およびWeb開発ずWebサヌビスを矩務的に凊理する必芁があるすべおの人にずっお非垞に圹立ちたす。サヌバヌ゚ラヌメッセヌゞの意味をよりよく理解し、技術サポヌトおよび開発担圓者ずより生産的に通信できるようになりたす。



All Articles