Dziennik transakcji Forex 1 - Automatyczny Handel Forex z OANDA API. I wcześniej wspomniałem w artykule QuantStart 2017 In Review, który chciałbym poświęcić około 2018 r. Pisaniu o automatycznym handlu forex. Po to, że ja sam zazwyczaj przeprowadzam badania na temat rynków akcji i futures , Pomyślałem, że byłoby zabawne i edukacyjne, aby pisać o moich doświadczeniach związanych z wejściem na rynek forex w stylu pamiętnika Każde wpisanie dziennika będzie próbowało budować na wszystkich poprzednich, ale powinno być stosunkowo samoistne. W tym pierwszym wpisie pamiętaj o tym, jak założyć nowe konto pośrednictwa w praktyce z OANDA, a także jak stworzyć podstawowy wielowątkowy silnik handlu zdarzenia, który może automatycznie wykonywać zawody zarówno w praktyce jak i na żywo. Następny rok spędziliśmy dużo czasu patrząc na backtester zdarzeń, głównie dla akcji i ETFs Poniżej prezentuję się w kierunku forex i może być używany do obrotu papierem lub handlu na żywo. wszystkie poniższe instrukcje dla Ubuntu 14 04, ale powinny one łatwo przetłumaczyć na system Windows lub Mac OS X, używając dystrybucji Pythona, takiej jak Anaconda Jedyna dodatkowa biblioteka używana do silnika handlu Python jest biblioteką żądań, która jest niezbędna do komunikacji z OANDA API. Ponieważ jest to pierwszy wpis dotyczący obrotu walutowego, a przedstawiony poniżej kod może być prosto dostosowany do warunków handlu na żywo, pragnę przedstawić następujące zastrzeżenia. Zrzeczenie się Obrót walutą obarczoną marginesem osiąga wysoki poziom ryzyka i mogą nie być odpowiednie dla wszystkich inwestorów Wyniki przeszłości nie wskazują na przyszłe wyniki Wysoki stopień dźwigni może działać zarówno przed Tobą, jak i dla Ciebie Przed podjęciem decyzji o inwestowaniu w walutę obcą należy dokładnie rozważyć cele inwestycyjne, poziom doświadczenie i apetyt na ryzyko Istnieje prawdopodobieństwo, że można ponieść stratę w całości lub częściowo zainwestowanej przez Ciebie inwestycji nie powinno się inwestować w pieniądze, których nie stać na stracenie Należy mieć świadomość wszystkich zagrożeń związanych z obrotem dewizowym i zwrócić się o poradę niezależnego doradcy finansowego, jeśli masz jakieś wątpliwości. Oprogramowanie to jest dostarczane w takim stanie, jak iw jakimkolwiek wyrażonym lub domniemanym Gwarancje, w tym, między innymi, domniemane gwarancje dotyczące sprzedaży i przydatności do określonego celu są odrzucane. W żadnym przypadku regenci lub współautorzy nie ponoszą odpowiedzialności za szkody bezpośrednie, pośrednie, przypadkowe, specjalne, przykładowe lub wtórne, w tym, ale nie ograniczając się do zamówień na towary lub usługi zastępcze, utraty użytkowania, danych, zysków lub przerw w prowadzeniu działalności gospodarczej, niezależnie od tego, czy w umowie, odpowiedzialności ścisłej, czy tortu, w tym zaniedbań lub w inny sposób powstających w jakichkolwiek zastosowaniach z tego oprogramowania, nawet jeśli zostanie poinformowany o możliwości takiej szkody. Założenie konta w OANDA. Pierwsze pytanie, o które warto wspomnieć, jest Dlaczego wybrać OANDA S sugerują, po odrobinie Googling wokół forex brokerów, że miał API, widziałem, że OANDA niedawno wydał odpowiedni REST API, które można łatwo komunikować się z niemal każdego języka w bardzo prosty sposób Po przeczytaniu ich dokumentacji API dla programistów postanowiłem spróbować, przynajmniej z kontem z praktyką. Jasne - nie mam wcześniejszego lub istniejącego związku z firmą OANDA i jestem tylko dostarczając tego zalecenia w oparciu o moje ograniczone doświadczenie związane z ich praktyką API i krótkim zastosowaniem na rynek pobieranie danych podczas pracy w funduszu wcześniej Jeśli ktoś natknął się na innych brokerów forex, które mają również podobny interfejs API, chętnie dam im też spojrzenie. Przed skorzystaniem z interfejsu API konieczne jest zarejestrowanie się w praktyce konto W tym celu przejdź do linku rejestracji Na ekranie pojawi się następujący ekran. Oferta rejestracji w witrynie CITYA. Będziesz wtedy mógł się zalogować za pomocą poświadczeń logowania. karta fxTradePractice z ekranu logowania. Ekran logowania ORANDA. Gdy będziesz musiał zanotować swój identyfikator konta, który znajduje się pod nagłówkiem Black My Funds obok Primary Mine to 7-cyfrowy numer musisz także wygenerować osobisty token API Aby to zrobić, kliknij Zarządzaj dostępem API pod kartą Inne działania w lewym dolnym rogu. Na tym etapie będziesz mógł wygenerować token API. Potrzebujesz klucza do użycia później, więc upewnij się, aby je zapisać. Należy teraz uruchomić aplikację FXTrade Practice, która pozwoli nam zobaczyć zrealizowane zlecenia i naszą stratę zysku na papierze. Jeśli używasz systemu Ubuntu, musisz zainstalować nieco inną wersję Java W szczególności wersja Oracle Javy 8 Jeśli nie zrobisz tego, a następnie symulator ćwiczeń nie zostanie załadowany z przeglądarki, uruchomiłem te polecenia na moim systemie. Będziesz teraz mógł uruchomić środowisko handlowe praktyki Wróć do pulpitu nawigacyjnego OANDA i kliknij zielony przycisk hi ghlighted Uruchom łącze praktyki FXTrade Zostanie wyświetlone okno dialogowe Java z pytaniem, czy chcesz go uruchomić Kliknij przycisk Uruchom, a narzędzie fxTrade Practice załaduje Mój domyślnie do 15-minutowego wykresu świec USD w dolarach z panelem wyceny na lewo. ANDA fxTrade Praktyka screen. At tym momencie jesteśmy gotowi, aby rozpocząć projektowanie i kodowanie naszego automatycznego systemu handlu forex przeciwko OANDA API. Overview of Trading Architecture. Jeśli byłeś śledzić event-backtester serii akcji i ETFs, które stworzyłem w zeszłym roku, będziesz świadomy tego, jak funkcjonuje system handlu zdarzeniowego Dla tych, którzy są nowi w oprogramowaniu opartym na zdarzeniach, zdecydowanie polecam przeczytać artykuł, aby zrozumieć, jak one działają. W istocie cały program jest wykonywany w pętli "infinte while", która kończy się tylko wtedy, gdy system handlu jest wyłączony Centralny mechanizm komunikacyjny programu jest przekazywany przez kolejkę zawierającą zdarzenia. Kolejka jest stale pytana sprawdzanie nowych zdarzeń Po zdarzeniu wydarzenia na szczycie kolejki musi być obsługiwane przez odpowiedni składnik programu Dlatego kanał danych rynkowych może utworzyć TickEvent s, które są umieszczane w kolejce, gdy nowa cena rynkowa przybywa do A obiekt strategii generowania sygnału może utworzyć transakcje typu OrderEvent, które mają zostać wysłane do pośrednictwa. Użyteczność tego systemu wynika z faktu, że nie ma znaczenia, jaki porządek lub typy zdarzeń są umieszczane w kolejce, ponieważ będą one zawsze prawidłowo obsługiwane przez właściwy komponent programu. Ponadto różne części programu mogą być uruchamiane w oddzielnych wątkach, co oznacza, że nigdy nie trzeba czekać na konkretny składnik przed przetwarzaniem innych. Jest to bardzo użyteczne w algorytmicznych sytuacjach handlowych, w których dane rynkowe ładowarki i generatory sygnałów strategicznych mają bardzo różną charakterystykę wydajności. Główna pętla transakcyjna jest podana przez następujący kod pseudodym Pythona. Jak stwierdziliśmy powyżej dorsza e uruchamia się w nieskończonej pętli Po pierwsze, kolejka jest odpytywana w celu pobrania nowego zdarzenia Jeśli kolejka jest pusta, pętla po prostu uruchamia się ponownie po krótkim okresie snu zwanym pulsu serca Jeśli zdarzenie zostanie odnalezione, jego typ zostanie oceniony, a następnie odpowiednie moduł obsługi strategicznej lub obsługi wykonawczej jest wezwany do obsłużenia zdarzenia i ewentualnie wygenerowania nowych, które wracają do kolejki. Podstawowymi składnikami, które utworzymy dla naszego systemu handlowego, są następujące :Standardowy handler cen - zachowuje to długotrwałe połączenie otwarte na serwerach OANDAs i wysyłanie danych typu tick, tzn. żądanie zażądania w związku z wszelkimi instrumentami, z którymi jesteśmy zainteresowani. Generator sygnałów strategicznych - podejmie sekwencję zdarzeń typu tick i użyj ich do generowania zleceń handlowych, które będą wykonywane przez operatora obsługi. Execution Handler - podejmuje zestaw zdarzeń zamówienia, a następnie ślepo wykonuje je za pomocą OANDA. Events - te obiekty stanowią wiadomości, które są przekazywane na zdarzenia que ue Wymagamy tylko dwóch dla tej implementacji, a mianowicie TickEvent i OrderEvent. Main Entry Point - główny punkt wejścia zawiera również pętlę handlową, która w sposób ciągły odpytywuje kolejkę wiadomości i wysyła wiadomości do poprawnego składnika. Często jest to pętla zdarzeń lub obsługi zdarzeń. Będziemy teraz omówić implementację kodu szczegółowo Na dole artykułu jest pełna lista wszystkich plików kodu źródłowego Jeśli umieścisz je w tym samym katalogu i uruchomisz Pythona, zaczniesz generować zlecenia, zakładając, że masz wypełnione ID swojego konta i tokenu uwierzytelniającego z implementacji OANDA. Python. Jest złe praktyki przechowywania haseł lub kluczy uwierzytelniających w bazie kodu, ponieważ nigdy nie można przewidzieć, kto ostatecznie będzie miał dostęp do projektu W systemie produkcyjnym będziemy przechowywać te poświadczenia jako zmienne środowiskowe w systemie, a następnie kwerendy te envvars za każdym razem, gdy kod jest przesunięty na nowe. Zapewnia to, że hasła i identyfikatory auth nigdy nie są nigdy przechowywane w systemie kontroli wersji. Jednakże ponieważ jesteśmy wyłącznie zainteresowani budowaniem systemu handlu zabawkami i nie dotyczą szczegółów produkcji w tym artykule, zamiast tego oddzielić te pliki tożsamości do pliku ustawień. W następującym pliku konfiguracyjnym mają słownik zwany ŚRODKI ŚRODOWISKOWE, które przechowują punkty końcowe dla interfejsu API zarówno dla interfejsu API cen transakcyjnych OANDA, jak i interfejsu API handlowego Każdy słownik podrzędny zawiera trzy różne punkty końcowe interfejsu API API i praktykę piaskownicy. Piaskowy interfejs API jest przeznaczony wyłącznie do testowania kodu i sprawdzenia, czy nie ma błędów lub błędów Nie ma gwarancji uptime w prawdziwych lub praktycznych interfejsach API Praktyka API w zasadzie zapewnia możliwość handlu papierem To znaczy udostępnia wszystkie funkcje prawdziwego API na symulowanym koncie ćwiczeń Prawdziwe API jest po prostu - to jest handel na żywo Jeśli użyjesz tego punktu końcowego w swoim kodzie, będzie on działał na Twoim koncie na żywo. BARDZO UWAGA. ce API pamiętać, że nie jest brany pod uwagę ważny koszt transakcji, a wpływ na rynek nie jest brany pod uwagę. Ponieważ transakcje nie są rzeczywiście wprowadzane do środowiska, koszty te muszą zostać rozliczone w inny sposób gdzie indziej przy użyciu modelu oddziaływania na rynek, jeśli chcesz realistycznie ocenić wyniki. następująco używamy konta ćwiczeń podanego przez ustawienie DOMAIN Potrzebujemy dwóch oddzielnych słowników dla domen, po jednym dla komponentów interfejsu strumieniowego i handlowego Wreszcie mamy ACCESSTOKEN i ACCOUNTID I wypełniłem dwa poniżej przy użyciu identyfikatorów fałszywych, musimy wykorzystać własne, które można uzyskać na stronie konta OANDA. Następnym krokiem jest zdefiniowanie zdarzeń, które kolejka będzie używana, aby pomóc wszystkimi poszczególnym komponentom komunikować się. Potrzebujemy dwóch TickEvent i OrderEvent Pierwszy przechowuje informacje o instrumencie dane rynkowe, takie jak najlepsza oferta zlecenia i czas wymiany transakcji Druga jest wykorzystywana do przesyłania zamówień do operatora obsługi, a zatem zawiera instrument, liczba jednostek handlowych, rynek lub limit typu zamówienia, a strona tj. kupno i sprzedaŜ. W celu udowodnienia w przyszłości naszego kodu zdarzeń, utworzymy klasę bazową o nazwie Wydarzenie i wszystkie dziedziny zostaną odziedziczone. Kod jest podany poniżej in. Następna klasa, którą stworzymy, poradzi sobie z strategią handlową W tym demo stworzymy raczej nonsensowną strategię, która po prostu otrzyma wszystkie kleszcze rynkowe, a co 5-krotki losowo kupuje lub sprzedaje 10.000 jednostek EUR. Oczywiście jest to śmieszna strategia Ale to jest fantastyczne dla celów testowych, ponieważ jest to łatwe do kodeksowania i zrozumienia W przyszłych pamiętnikach będziemy zastąpić to coś znacznie bardziej ekscytujące, które mają nadzieję obrócić zysk. Plik można znaleźć poniżej Let s pracuje przez to i zobaczyć, co się dzieje Po pierwsze importujemy losową bibliotekę i obiekt OrderEvent z Potrzebujemy losowego lib w celu wybrania losowego zamówienia lub zlecenia sprzedaży Potrzebujemy OrderEvent, jak to jest obiekt strategii wysyła zlecenia do kolejki zdarzeń, która później będzie wykonywana przez operatora obsługi. Klasa TestRandomStrategy po prostu przyjmuje instrument w tym przypadku: EUR USD, liczba jednostek i kolejka zdarzeń jako zestaw parametrów. Następnie tworzy on licznik kleszczy, który służy do określenia liczby wystąpień programu TickEvent. Większość prac powstaje w metodzie calculatesignals, która po prostu bierze zdarzenie, określa, czy jest to TickEvent w inny sposób ignorowany i zwiększany przez licznik kleszczy. Następnie sprawdza, czy jeśli liczba ta jest podzielna na 5, a następnie losowo kupuje lub sprzedaje, z zamówieniem na rynek, określona liczba jednostek Z pewnością nie jest to największa strategia handlowa na świecie, ale będzie to bardziej nadaje się do naszych celów testowych API dla pośredników OANDA. Następnym składnikiem jest obsługi wykonawczej Ta klasa ma zadanie działać na instancje OrderEvent i składać wnioski do brokera w tym przypadku OANDA w głupie to oznacza, że nie ma mana ryzyka pokrywanie konstrukcji gement lub potfolio Obsługa obsługi będzie po prostu wykonywała każde zlecenie, które zostało przekazane. Musimy przekazać wszystkie informacje uwierzytelniające do klasy Wykonanie, w tym praktykę domeny, prawdziwą lub sandbox, identyfikator dostępu i identyfikator konta. Następnie tworzymy bezpieczne połączenie z jednym z Pythonów wbudowanych w bibliotekach. Większa część pracy występuje w wykonaniu Sposób wymaga zdarzenia jako parametru Następnie konstruuje dwa słowniki - nagłówki i params Te słowniki będą następnie prawidłowo zakodowane częściowo przez urllib kolejną bibliotekę Pythona do wysłania jako żądanie POST do interfejsu API firmy OANDA. Przepuszczamy parametry nagłówka Content-Type i Authorization, które zawierają nasze informacje uwierzytelniające. Dodatkowo kodujemy parametry, w tym instrument EUR USD, jednostki, typ zlecenia i buy-in na bok , składamy wniosek i zapisujemy odpowiedź. Najbardziej skomplikowanym elementem systemu handlowego jest obiekt StreamingForexPrices, który obsługuje aktualizacje cen rynkowych z OANDA Istnieją dwie metody connecttostream i streamtoqueue. Pierwsza metoda wykorzystuje bibliotekę zapytań Pythona do łączenia się z gniazdem transmisji strumieniowej z odpowiednimi nagłówkami i parametrami. Parametry zawierają identyfikator konta i niezbędną listę instrumentów, które powinny być wysłuchane w przypadku aktualizacji w tym przypadku jest tylko dolar EUR Zanotuj następującą linię. Powiada, że połączenie ma być przesyłane strumieniowo, a tym samym pozostawione otwarte w długotrwały sposób. Drugi sposób, streamtoqueue rzeczywiście próbuje połączyć się z strumieniem Jeśli odpowiedź nie jest udany np. kod odpowiedzi nie jest 200, po prostu zwracamy i kończymy Jeśli uda się spróbować załadować pakiet JSON zwrócony do słownika Python Wreszcie, konwertujemy słownik z Pythona na instrument, zapytaj o cenę i znacznik czasowy w TickEvent, jest wysyłany do kolejki zdarzeń. Teraz mamy wszystkie najważniejsze składniki w miejscu Ostatnim krokiem jest zawinięcie wszystkiego, co dotychczas napisaliśmy do głównego programu Celem tego pliku jest utworzenie dwóch oddzielnych wątków, z których jedna uruchamia procedurę ustalania cen, a druga uruchamia handler transakcji. Dlaczego potrzebujemy dwóch oddzielnych wątków? Po prostu wykonujemy dwa osobne fragmenty kodu, zarówno z których ciągle działają Jeśli utworzymy program niegwintowany, to gniazdo transmisji strumieniowej używane do aktualizacji cen nigdy nigdy nie powróci do głównej ścieżki kodu, a zatem nigdy byśmy nigdy nie prowadzili żadnego obrotu Podobnie, pętli handlowej poniżej, nigdy byśmy nie zawrócili ścieżki przepływu do gniazda transmisji strumieniowej. W związku z tym potrzebujemy wielu wątków, po jednym dla każdego składnika, dzięki czemu mogą one być przeprowadzane niezależnie. Obydwie komunikują się ze sobą za pośrednictwem kolejki zdarzeń. Przyjrzyjmy się temu trochę dalej Tworzymy dwa osobne wątki z następującymi wierszami. Przepuszczamy nazwę funkcji lub metody do docelowego słowa kluczowego, a następnie przekazujemy iterable takie jak lista lub krotka do args keywor d argument, który następnie przekazuje te argumenty do rzeczywistej funkcji metody. Wreszcie zaczynamy oba wątki z następującymi wierszami. Jeśli jesteśmy w stanie uruchomić dwa, skutecznie nieskończone pętlowanie, segmenty kodu niezależnie, które komunikują się za pośrednictwem kolejki zdarzeń Należy zauważyć, że Biblioteka wątków Pythona nie generuje prawdziwego wielowątkowego środowiska wielordzeniowego z powodu wdrożenia Python i CPython Global Głębokość interpretera. Jeśli chcesz przeczytać więcej o wielowątkowości w Pythonie, zapoznaj się z tym artykułem. Reszta kodu szczegółowo Po pierwsze, importujemy wszystkie potrzebne biblioteki, w tym kolejkowanie wątków i czas Następnie importujemy wszystkie powyższe pliki kodów, które osobiście wolę wykorzystać wszelkie ustawienia konfiguracyjne, co jest zwyczajem, który podjąłem z pracy z Django. że definiujemy funkcję handlową, która została wyjaśniona w Pythonie-pseudokodie powyżej Nieskończona pętla while jest wykonywana podczas gdy True, która ciągle sondaże z t kolejka zdarzeń i pomija tylko pętlę, jeśli zostanie znaleziona pusta Jeśli zdarzenie zostanie znalezione, to jest to TickEvent lub OrderEvent, a następnie wywoływany jest odpowiedni składnik. W takim przypadku jest to strategia lub program obsługi pętla następnie po prostu śpi na sekundę bicia serca w tym przypadku 0 5 sekund i kontynuuje. W końcu definiujemy główny punkt wejścia kodu w głównej funkcji Jest dobrze skomentowany poniżej, ale podsumuję tutaj W istocie budujemy kolejkę zdarzeń i definiujemy Jednostki instrumentów Następnie tworzymy klasę strumieni cenowych StreamingForexPrices, a następnie wykonaj wykonawcę wykonawstwa Obydwa dane niezbędne do uwierzytelnienia podane przez firmę OANDA są tworzone przy tworzeniu konta. Następnie tworzymy instancję TestRandomStrategy Wreszcie definiujemy dwa wątki, a następnie uruchamiamy je Aby uruchomić kod, wystarczy umieścić wszystkie pliki w tym samym katalogu i zadzwonić do poniższego terminalu. Zauważ, że aby zatrzymać kod w ten etap wymaga twardego zabicia procesu Pythona za pomocą Ctrl-Z lub odpowiednika Nie dodałem dodatkowego wątku do obsługi, szukającego tego, który byłby potrzebny do bezpiecznego zatrzymania kodu Potencjalnym sposobem na zatrzymanie kodu na maszynie Ubuntu Linux jest do typu. A następnie przekazać wynik tego numeru procesu do następnego. W przypadku, gdy PROCESSID musi być zastąpiony wyjściem pgrep Należy pamiętać, że nie jest to szczególnie dobra praktyka. W późniejszych artykułach będziemy tworzyć bardziej wyrafinowany mechanizm uruchamiania zatrzymania, korzysta z nadzoru nad procesem Ubuntu w celu uruchomienia systemu handlowego 24 7. Po powyższym kodzie podano wynik po 30 sekundach, w zależności od pory dnia w stosunku do głównych godzin handlowych EUR USD dla powyższego kodu . Pierwsze pięć wierszy przedstawia dane z kreską JSON zwracane z OANDA z cenami z ofertą zapytania. Następnie można zobaczyć wynik wyjściowy realizacji zamówienia oraz odpowiedź JSON z OANDA potwierdzającą otwarcie transakcji kupna na 10.000 jednostek EUR USD i cenę, którą osiągnięto. To będzie działać na czas nieokreślony do czasu zabicia programu przy użyciu polecenia Ctrl-Z lub podobnych. W późniejszych artykułach będziemy przeprowadzać wiele niezbędnych ulepszeń, w tym strategii prawych - prawidłowe strategie forex, generujące zyskowne sygnały. Infrastruktura produkcyjna - zdalna implementacja serwera i system monitorowania z 24-miesięcznym monitoringiem, z możliwością zatrzymania. Zarządzanie portfelem i ryzykiem - Portfolio i nakładki ryzyka dla wszystkich sugerowanych zamówień z tej strategii. które integrują się z warstwą zarządzania ryzykiem. W przypadku backtesteru zdarzeń opartego na zdarzeniach, musimy utworzyć moduł testów forex, który umożliwi nam szybkie badania i ułatwi wdrażanie strategii. pamiętaj, aby zmienić ACCOUNTID i ACCESSTOKEN. Just zacząć z Quantitative Trading. Making pieniądze z Python. Making pieniądze z Python. A podczas gdy z powrotem przyjaciel powiedział mi o czymś zwanym wspólnocie waluty znany również jako Local Exchange Trading System Podstawową ideą jest, ludzie w obrębie obszaru geograficznego mogą wymieniać towary i usługi z zamówioną jednostką wymiany raczej tradycyjnymi środkami pieniężnymi Więc na przykład można było kosić kilka trawników w zamian za naukę gitary, nawet jeśli nie jest to trawnik nauczyciela g trawnika There s nie ma fizycznej waluty jako takiej, członkowie wspólnoty waluty polegają na ochotników, aby śledzić ile ich waluty sądzę, że jest to cudowny pomysł promuje zdrową wymianę bez konieczności błotniste rzeczy z czymś tak wulgarnym jak gotówka Ale co uderzyło mnie po trochę badań jest to, jak cały system jest pilnie potrzebuje mechanizacji Nie ma scentralizowanego miejsca do przeglądania konta lub sposobu dokonywania transakcji online, a Pomyślałem, że powinno być Więc to było moje hobby przez ostatnie kilka miesięcy, budowałem taką witrynę, która niedawno się spotkała do punktu, w którym chciałbym ocenić, ile zainteresowań jest tam, gdzie się nawet nie przychodzę z nazwiskiem jeszcze, więc nazywałam to raczej niewrażliwym monikerem strony Waluta. Apologie za mylący tytuł tego postu bez uszczerbku. Użytkownicy Waluty mogą tworzyć walutę, którą mogą wykorzystać do śledzenia dowolny rodzaj długu Kreator walut lub dostawca określa politykę tworzenia i zarządzania nowymi pieniędzmi Po utworzeniu pieniądze można wysyłać bezpośrednio innym użytkownikowi bezpośrednio do nazwy użytkownika lub pośrednio za pośrednictwem adresu e-mail, a użytkownicy mogą zarządzać swoimi funduszami, tworząc różne konta Po przekazaniu środków do użytkownika dostawca nie ma żadnej kontroli, ponieważ każdy użytkownik ma możliwość zapisywania swoich środków lub przesłania ich innym W każdej intencji i celach witryna Waluta jest jak bankowość internetowa, chociaż z dużo ładniejszym użytkownikiem interfejs niż każdy system bankowości elektronicznej, jaki kiedykolwiek używałem, które wydają się być użyteczną kopalnią Użytkownicy mogą też zobaczyć, ile pieniędzy zostało wybity i ile jest obecnie w obiegu, tzn. nie jest przechowywane przez usługodawcę, co pomaga utrzymać zaufanie do systemu. Być może myślisz, że to brzmi dobrze, jeśli kiedykolwiek natkniesz się na projekt Bitcoin, ale istnieje kilka istotnych różnic Największą różnicą jest to, że strona Waluta nadal wymaga zaufania do jednostki lub organizacji, która zarządza walutą, tj. Dostawcą, a tam nie jest egzekwowane niedobór nowych dostawców walut może miętowych nowych pieniędzy, jak uważają za stosowne Jest trochę pokrywające się, ale przypadki użycia w witrynie Waluta są potencjalnie szersze, choć ograniczone w skali w porównaniu do projektów Bitcoin Community waluty są to, co miałem na myśli podczas pracy na ten temat, ale ma to równieŜ zastosowanie do wielu innych zastosowań Na przykład, powiedzmy, że rodzina, którą nazwiemy Smiths ma kilka dzieci, które nie lubią robi eir chores, więc rodzice utworzyć walutę o nazwie Smith Dollars Kiedy małe Bobby Smith odrabia pracę domową lub czyści pokój, rodzice go wysyłają 10 dolarów Smitha Kiedy Bobby ma 100 dolarów Smith Dollars, może on zarobić na nową grę wideo lub spędzić 15 lat, aby pozostać na dodatkowej godzinie Ale jeśli chciałby, mógłby również wysłać swoją siostrę 5 dolarów za robienie zakupów w zamian za pożyczkę swojego laptopa Inne zastosowania mogą być pracownikami śledzącymi, kto idzie o pączki lub wymienić dobrodziejstwa wykorzystania Twoja wyobraźnia dla tej strony z jedną stroną jest zbudowana z Django i używałem doskonałą bibliotekę Bootstrap dla tematu Witryna jest obecnie użyteczna, ale nadal mam kilka rzeczy, które chcę to zrobić, zanim będę popchnąć ją na żywo Po to, aby udowodnić, że nie jest parownikiem, oto kilka zrzutów ekranu. Będę szukał kilku odważnych dusz, które pomogą mi przetestować to, planuję zrobić prywatną wersję beta, w której baza danych zostanie całkowicie wymazana, zanim wyda się na żywo przez jakiś czas. da mi możliwość rea Wyeliminuj problemy, nie martwiąc się o to, że robimy bałagan z bazy danych. Jeśli jesteś zainteresowany pomocą, zaloguj się, lub 1 jeśli czytasz w Google, również zainteresuję się propozycjami dobrego imienia ten projekt Wydaje się, że każda domena z jakimkolwiek odniesieniem do pieniądza lub waluty nie jest zaskakująca Myślę, że przypuszczam, że jestem zmęczona pomaganiem testom Miłuj ten pomysł x. Reply to Jean Paldan. Did masz patrzeć na tętnienie na drodze do Skorzystaj z tej skali. Jeśli masz jakieś dodatkowe pieniądze, otrzymasz dodatkowy dodatek, a jeśli chcesz handlować z kimś, kto nie przyznał Ci świadczeń, system próbuje znaleźć sposób na przesunięcie pieniędzy na inne ludzie, tak więc oboje mają jakieś dodatki na końcu tego łańcucha. Zależnie od Arne Babenhauserheide. Value Funkcja RLDirect RL. Wartość Funkcja RL Q-learning Q-learning5. Bezpośredni RL Kurs szkoleniowy Q-learningQ Odnowienie zbrojenia Nauka RRL RRL5 RRL. RRL Ramy finansowe Trading. Agent RRL-trader. State. Reward tt 1.Wynik obrotu handlowego buy sell krótki długo neutralny hold. Diffferential Sharpe Ratio Ciężar DSR. t długie lub krótkie. Ft znak sum w r F Ft -1,1 krótki -1, długi 1 gram wagi wektor progowy vt sieci neuronowej pt - p .1 vt wektor wagi. Suma Pt Rt Rt F rt Ft-F koszt transakcji 1. Różnicowy współczynnik Sharpe'a Współczynnik DSR Sharpe'a DSR kapelusz 0 Dt frac.
No comments:
Post a Comment