Jak stworzyć cBota za pomocą ChatGPT
Generatywna sztuczna inteligencja jest na fali wznoszącej, a tworzenie cBota bez konieczności pisania ani jednej linijki kodu nie jest już marzeniem, lecz rzeczywistością. W tym artykule i odpowiadającym mu filmie pokażemy Ci, jak możesz stworzyć cBota za pomocą ChatGPT. Pokażemy również, jak możesz ocenić kod cBota dostarczony przez ChatGPT i upewnić się, że Twój bot wygenerowany przez AI działa w zaledwie kilka minut.
Stwórz prawidłowy prompt
Na potrzeby tego filmu będziemy używać modelu GPT-3.5. Jest on bezpłatny dla wszystkich i, pomimo braku funkcji w porównaniu z nowszymi modelami GPT, daje świetne rezultaty.
Pierwszą częścią tworzenia świetnego cBota za pomocą ChatGPT jest wpisanie prawidłowego promptu. Oto kilka zasad dotyczących tego, co stanowi dobry prompt:
1. Zachęć ChatGPT, aby spróbował wcielić się w rolę profesjonalnego programisty cBotów.
Możesz to osiągnąć, wpisując początkowy prompt ze słowami „Zagrajmy w grę, w której jesteś wykwalifikowanym programistą algorytmów dla cTrader..." lub coś w stylu „Udawaj, że jesteś profesjonalnym programistą cBotów dla cTrader..."
2. Bądź konkretny.
Im więcej szczegółów podasz ChatGPT, tym lepiej. Prompty takie jak „Stwórz dla mnie dochodowego cBota..." spowodowałyby wiele zamieszania po stronie AI.
Zalecamy określenie każdej części Twojego cBota tak precyzyjnie, jak to możliwe. Zastanów się, jakie parametry powinien mieć, na jakie warunki powinien reagować i jakie operacje handlowe powinien wykonywać. Jeśli tworzysz niestandardowy panel handlowy, zastanów się, jakie elementy interfejsu użytkownika powinien zawierać i gdzie powinny być umieszczone.
3. Bądź uprzejmy i pełen szacunku.
To może brzmieć zaskakująco, ale badania wykazały, że bycie uprzejmym wobec ChatGPT faktycznie poprawia jakość wyników. Uwzględnij zwroty takie jak „Byłbym wdzięczny, gdybyś...", „Byłoby miło, gdyby..." lub coś podobnego.
Stwórz cBota handlującego kolorami
Na początek chcemy po prostu stworzyć prostego cBota, który składa nowe zlecenie rynkowe przy otwarciu każdego słupka. Kierunek zlecenia zależy od tego, czy poprzedni słupek był zielony, czy czerwony. Jeśli słupek był czerwony, chcemy złożyć zlecenie sprzedaży, a jeśli był zielony, chcemy złożyć zlecenie kupna.
Oto jak możemy to zrobić, podając prawidłowe prompty.
- Zdanie początkowe: „Udawaj, że jesteś profesjonalnym programistą cBotów dla cTrader, pisz bardzo prosty i zrozumiały kod."
- Konkretne wymagania: „Stwórz cBota. Przy każdym słupku powinien składać nowe zlecenie rynkowe bez mechanizmów ochronnych. Wolumen zlecenia (w jednostkach) powinien być parametrem konfigurowalnym. Zlecenie kupna powinno zostać złożone, jeśli poprzedni słupek był zielony. Zlecenie sprzedaży powinno zostać złożone, jeśli poprzedni słupek był czerwony."
- Uprzejmość: „Byłbym bardzo wdzięczny, gdybyś wykonał to zadanie, dziękuję!"
Dokładny kod wygenerowany przez ChatGPT może się różnić, ale w każdym przypadku możemy po prostu skopiować i wkleić go do okna edytora kodu, aby sprawdzić, czy jest poprawny i czy implementuje naszą pożądaną logikę.
Zazwyczaj występuje tylko kilka niekrytycznych błędów, które wymagają naprawy. W naszym przypadku jedyną rzeczą wymagającą naprawy była zmiana obiektu Symbol w metodzie ExecuteMarketOrder na ciąg znaków SymbolName. Oto ostateczny kod, który otrzymaliśmy po wykonaniu wszystkich tych czynności.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Jak zwykle zapisujemy i budujemy bota. W aplikacji Trade dołączamy instancję bota do wykresu i sprawdzamy, czy działa zgodnie z zamierzeniami. Bot działa bezbłędnie i reaguje na kolor poprzednich słupków, składając nowe zlecenia. Wolumen zlecenia jest również parametrem konfigurowalnym.
Uwaga
Zauważ, że nawet nie musieliśmy czytać kodu wygenerowanego przez ChatGPT. Po prostu naprawiliśmy każde ostrzeżenie wyświetlane w edytorze kodu, a następnie uruchomiliśmy bota.
Stwórz cBota handlującego trendem
Chociaż wcześniejszy cBot działał świetnie, używał prostej logiki i nie zwracał uwagi na trendy rynkowe. Spróbujemy stworzyć coś bardziej złożonego, stosując to samo podejście do promptowania co wcześniej.
- Zdanie początkowe: „Wyobraźmy sobie, że jesteś wykwalifikowanym programistą cBotów dla cTrader. Będę Twoim klientem."
- Konkretne wymagania: „Stwórz cBota. Przy każdym słupku powinien sprawdzać, czy 50-dniowa średnia krocząca jest powyżej, czy poniżej 200-dniowej średniej kroczącej. Jeśli jest powyżej, bot powinien złożyć zlecenie kupna. Jeśli jest poniżej, bot powinien złożyć zlecenie sprzedaży. Bot nie powinien składać zlecenia, jeśli istnieje już otwarta pozycja w tym samym kierunku. Wolumen zlecenia powinien być parametrem konfigurowalnym."
- Uprzejmość: „Dziękuję za pomoc!"
Ponownie po prostu skopiujemy i wkleimy kod podany nam przez ChatGPT do okna edytora kodu i spróbujemy zbudować bota. Oto wszystkie błędy kompilacji, które otrzymujemy:
- Kod używa przestarzałego elementu API
MarketSeries. Możemy zastąpić go kolekcjąBars.ClosePrices. - Ponownie musimy zastąpić argument
SymbolargumentemSymbolName. - Powinniśmy również usunąć niektóre niepotrzebne argumenty z metod
ExecuteMarketOrder, ponieważ nie pasują one do żadnego z dostępnych przeciążeń metody.
Możemy również przyjrzeć się, jak została zrealizowana nasza logika. W metodzie OnStart() inicjalizujemy nasze średnie kroczące. ChatGPT uczynił okresy średnich kroczących parametrami konfigurowalnymi, mimo że o to nie prosiliśmy. Możemy to pozostawić bez wpływu na podstawową logikę.
Jednak w metodzie OnBar() widzimy, że bot składa nowe zlecenia tylko wtedy, gdy nie ma otwartych pozycji (Positions.Count ==0). To nie jest to, czego chcemy, ponieważ chcemy również sprawdzać kierunek pozycji. Możemy nieznacznie zmodyfikować kod, aby uzyskać następującego bota.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
Użyliśmy metody Positions.FindAll(string label), aby uzyskać wszystkie pozycje z daną etykietą i obliczyć ich liczbę.
Kiedy zbudujemy bota, możemy dodać go do wykresu. Dodamy również 50- i 200-dniowe średnie kroczące, abyśmy mogli ocenić zachowania cBota. Po odczekaniu chwili możemy zobaczyć, że bot funkcjonuje zgodnie z oczekiwaniami. Nowe zlecenia są składane w razie potrzeby, ale w danym kierunku istnieje nie więcej niż jedna otwarta pozycja.
Utwórz cBota za pomocą innej AI
Podsumowanie
ChatGPT może być cennym narzędziem, gdy musisz szybko utworzyć cBota z precyzyjnie zdefiniowaną logiką. Chociaż ChatGPT generuje pewne błędy, są one zazwyczaj nieznaczne i można je szybko naprawić.
