Come creare un cBot tramite ChatGPT
L'IA generativa è in crescita e creare un cBot senza dover scrivere una sola riga di codice non è più un sogno, è realtà. In questo articolo e nel video corrispondente ti mostreremo come puoi creare un cBot utilizzando ChatGPT. Dimostreremo anche come puoi valutare il codice del cBot fornito da ChatGPT e assicurarti che il tuo bot generato dall'IA sia operativo in pochi minuti.
Creare il prompt corretto
Ai fini di questo video utilizzeremo il modello GPT-3.5. È gratuito per tutti e, nonostante manchi di funzionalità rispetto ai modelli GPT più recenti, produce ottimi risultati.
La prima parte della creazione di un ottimo cBot con ChatGPT consiste nel digitare il prompt corretto. Ecco alcune regole per creare un buon prompt:
1. Incoraggia ChatGPT a recitare la parte di uno sviluppatore di cBot professionista.
Puoi farlo digitando un prompt iniziale con le parole "Giochiamo a un gioco in cui sei uno sviluppatore di algoritmi qualificato per cTrader..." o qualcosa come "Fingi di essere uno sviluppatore professionista di cBot per cTrader..."
2. Sii specifico.
Più dettagli fornisci a ChatGPT, meglio è. Prompt come "Crea un cBot redditizio per me..." porterebbero a molta confusione da parte dell'IA.
Ti consigliamo di specificare ogni parte del tuo cBot nel modo più preciso possibile. Considera quali parametri dovrebbe avere, a quali condizioni dovrebbe reagire e quali operazioni di trading dovrebbe eseguire. Se stai creando un pannello di trading personalizzato, considera quali elementi dell'interfaccia utente dovrebbe avere e dove dovrebbero essere posizionati.
3. Sii educato e rispettoso.
Potrebbe sembrare sorprendente ma la ricerca ha dimostrato che essere educati con ChatGPT migliora effettivamente la qualità dell'output. Includi frasi come "Apprezzerei se...", "Sarebbe bello se..." o qualcosa di simile.
Creare un cBot di trading basato sui colori
Per iniziare vogliamo semplicemente creare un semplice cBot che piazza un nuovo ordine di mercato all'apertura di ogni barra. La direzione dell'ordine dipende dal fatto che la barra precedente fosse verde o rossa. Se la barra era rossa vogliamo piazzare un ordine di vendita e se era verde vogliamo piazzare un ordine di acquisto.
Ecco come possiamo farlo fornendo i prompt corretti.
- Frase iniziale: "Fingi di essere uno sviluppatore professionista di cBot per cTrader, scrivi codice molto semplice e comprensibile."
- Requisiti specifici: "Crea un cBot. Su ogni barra dovrebbe piazzare un nuovo ordine di mercato senza meccanismi di protezione. Il volume dell'ordine (in unità) dovrebbe essere un parametro personalizzabile. Un ordine di acquisto dovrebbe essere piazzato se la barra precedente era verde. Un ordine di vendita dovrebbe essere piazzato se la barra precedente era rossa."
- Cortesia: "Apprezzerei davvero se svolgessi questo compito, grazie!"
Il codice esatto prodotto da ChatGPT può variare ma in ogni caso possiamo semplicemente copiarlo e incollarlo nella finestra dell'editor di codice per vedere se è corretto e se implementa la logica desiderata.
Di solito ci sono solo un paio di errori non critici che devono essere corretti. Nel nostro caso l'unica cosa che ha richiesto una correzione è stata la modifica dell'oggetto Symbol nel metodo ExecuteMarketOrder con la stringa SymbolName. Ecco il codice finale che abbiamo ottenuto dopo aver fatto tutto questo.
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 | |
Come al solito salviamo e compiliamo il bot. Nell'applicazione Trade colleghiamo l'istanza del bot a un grafico e vediamo se funziona come previsto. Il bot funziona perfettamente e reagisce al colore delle barre passate piazzando nuovi ordini. Anche il volume dell'ordine è un parametro personalizzabile.
Nota
Nota che non abbiamo nemmeno dovuto leggere il codice prodotto da ChatGPT. Abbiamo semplicemente corretto ogni avviso visualizzato nell'editor di codice e poi avviato il bot.
Creare un cBot di trend trading
Sebbene il cBot precedente funzionasse benissimo, utilizzava una logica semplice e non prestava attenzione ai trend di mercato. Proveremo a creare qualcosa di più complesso utilizzando lo stesso approccio al prompting di prima.
- Frase iniziale: "Immaginiamo che tu sia uno sviluppatore di cBot esperto per cTrader. Sarò il tuo cliente."
- Requisiti specifici: "Crea un cBot. Su ogni barra dovrebbe verificare se la media mobile a 50 giorni è sopra o sotto la media mobile a 200 giorni. Se è sopra, il bot dovrebbe piazzare un ordine di acquisto. Se è sotto, il bot dovrebbe piazzare un ordine di vendita. Il bot non dovrebbe piazzare un ordine se esiste già una posizione aperta nella stessa direzione. Il volume dell'ordine dovrebbe essere un parametro personalizzabile."
- Cortesia: "Grazie per l'aiuto!"
Ancora una volta copieremo e incolleremo semplicemente il codice fornito da ChatGPT nella finestra dell'editor di codice e proveremo a compilare il bot. Ecco tutti gli errori di compilazione che otteniamo:
- Il codice sta utilizzando il membro API obsoleto
MarketSeries. Possiamo sostituirlo con la raccoltaBars.ClosePrices. - Dobbiamo ancora una volta sostituire l'argomento
SymbolconSymbolName. - Dovremmo anche eliminare alcuni argomenti non necessari dai metodi
ExecuteMarketOrderpoiché non corrispondono a nessuno degli overload di metodo disponibili.
Possiamo anche dare un'occhiata a come è stata realizzata la nostra logica. Nel metodo OnStart() inizializziamo le nostre medie mobili. ChatGPT ha reso i periodi delle medie mobili parametri personalizzabili anche se non glielo avevamo chiesto. Possiamo lasciarlo così com'è senza influenzare la logica principale.
Tuttavia, nel metodo OnBar(), possiamo vedere che il bot inserisce nuovi ordini solo quando non ci sono posizioni aperte (Positions.Count ==0). Questo non è ciò che vogliamo, poiché vogliamo anche verificare la direzione della posizione. Possiamo modificare leggermente il codice in modo da ottenere il seguente bot.
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 | |
Abbiamo utilizzato il metodo Positions.FindAll(string label) per ottenere tutte le posizioni con una determinata etichetta e calcolarne il conteggio.
Quando creiamo il bot, possiamo aggiungerlo a un grafico. Aggiungeremo anche le medie mobili a 50 e 200 giorni in modo da poter valutare i comportamenti del cBot. Dopo aver atteso un po', possiamo vedere che il bot funziona come previsto. Vengono inseriti nuovi ordini quando necessario, ma non esiste più di una posizione aperta in una determinata direzione.
Crea un cBot utilizzando altre AI
Riepilogo
ChatGPT può essere uno strumento prezioso quando devi creare rapidamente un cBot con una logica definita con precisione. Sebbene ChatGPT produca alcuni errori, di solito sono insignificanti e possono essere corretti rapidamente.
