בחלק הזה wרוצה להתקין Backtrader ובדוק אחורה כמה מודלים למסחר מול נתוני Binance שאספנו בסעיף הקודם.
ישנם מאמרים וסרטונים רבים על Backtrader וההגדרה שלו. ספריית פייתון פופולרית זו מאפשרת את העבודה הקוואנטית של בדיקת אסטרטגיות מסחר עם נתונים היסטוריים, ועונה על השאלה המהותית "כמה רווחי היה לסחור באמצעות אסטרטגיות קנייה/מכירה נתונות". זה מרגיש כמו אלכימיה מתמטית בהתחלה, אבל צריך לזכור שהנתונים ההיסטוריים הם, ובכן, היסטוריים! אסטרטגיית מסחר שעבדה אתמול לא סביר שתעבוד היום... אבל נחזור לזה בקרוב.
אסטרטגיית המסחר הרווחית של אתמול היא כנראה מפסידה היום.
הוראות ההתקנה של Backtrader ('bt') הן כאן. הערה: ישנן בעיות ידועות עם גרסאות mapplotlib מעל 3.2.0 אז היזהרו מכך.
מדריך התחלה מהירה כדאי לקרוא, מצא אותו כאן.
RSI
מה שננסה עם Backtrader כאן הוא בדיקה לאחור RSI (אינדיקטור חוזק יחסי) אסטרטגיית מסחר על נתוני קריפטו היסטוריים (עבור BTC) מתחילת השנה.
מחוון מומנטום RSI מוסבר כאן. הוא מודד תנאים יחסיים של מכירת יתר וקניית יתר עבור נכס מסחר נתון ופרמטר של 'תקופה' שהוא מספר הטיקים (מרווחי מסחר) לאחור.
ברירת המחדל של פרמטר התקופה הוא 14, כך שאם המרווח הוא דקות אז הנוסחה תכלול 14 תווי מרווחים של נתונים. כפי שנחקור בהמשך, לכל אינדיקטור טכני יש פרמטרים שהם הדרך שלנו 'להתכוונן' לתנאי השוק; לפרמטרים אלו יש השפעה עצומה על הרווחיות של כל אינדיקטור נתון באסטרטגיה.
לדברים קטנים לרוב יש השפעה עצומה.
Backtest.py
הגדרת הבדיקה האחורית שלנו: backtest.py משותף כאן. זה יספק את מבנה המבחן האחורי עבור ריצת המבחן האחורי שלנו, שיוגדר בהמשך. זוהי הגדרת 'bt' סטנדרטית למדי. בואו נסקור חלק מהקוד הזה, שים לב שיש הרבה דוגמאות ומדריכי וידאו מקוונים ב-Python backtest שאפשר ללמוד מהן.
כאן בהגדרת המחלקה אנו קובעים פרמטרים לאסטרטגיית ה-RSI שלנו.
- מִלוּלִי: אם ברצוננו להוציא נתוני יומן במהלך הבדיקה האחורית
- מאperiod: תקופת ממוצע נע, מספר התיקים שיש לקחת בחשבון
- כמות: # המניות לקנייה/מכירה
- העליון: הסף העליון של המחוון לקניית יתר
- להוריד: הסף התחתון של המחוון למכירת יתר
- stopLoss: הגדרת הפסקת הפסקה למכירה
השמיים הבא () הפונקציה במחלקה של אסטרטגיית Backtrader היא מה שקורה לאחר כל 'תקתק' מרווח של נתונים. הנה buy() או sell() לפי הנתונים, במקרה זה מחוון RSI והסף שלנו.
כאן אנו מגדירים את runbacktest() פונקציה שתיקרא על ידי הקוד שלנו. פונקציית אסטרטגיית RSI שהוזכרה לעיל מתווספת ל- מוח גדול למשל.
כל הדברים הסטנדרטיים למדי של Backtrader. בוא נראה איך להפעיל את זה מול הנתונים שלנו.
בדיקה חוזרת של הנתונים שלנו
הקפד לקבל נתונים (באמצעות השלבים של הסעיף האחרון) עבור 1 בינואר עד 2 בינואר 2021, זה יהיה בקובץ בשם: BTCUSDT-20210101–20210102–1m.csv עם 1440 שורות CSV, אחת לכל דקה ביום.
כאן הוא הקוד והפלט ליום מסחר זה של יום מסחר דקה אחר דקה עבור ביטקוין (BTC):
מבט מקרוב:
הפרמטרים פשוטים, אנו רוצים לנתח יום מסחר אחד, באמצעות אינדיקטור RSI עם תקופה של 12 תקתוקים, ללא סטופ-לוס ומגבלות ברירת מחדל של 70,30 עבור הטריגרים של קניית יתר ומכירת יתר.
שורת הפלט האחרונה מסכמת את התוצאות של מבחן אחורי זה:
/BTCUSDT-20210101-20210102-1m.csv, RSI (Pd 12) (SL 0.0%) (U70 L30) נטו $777.78 (0.78%) WL 18/7 SQN 1.76
תקופת RSI 12, 0 (לא) סטופ-לוס, גבול (מעלה) של 70 (L) מגבלה תחתונה של 30, רווח נקי (ביום אחד) של $777.78 עם 18 עסקאות מנצחות ו-7 עסקאות מפסידות.
הנתון האחרון הוא SQN, 'מספר איכות מערכת' (SQN) שנועד לסייע לסוחרים בקביעת החוזקות, הרצויות והאיכות של מערכת מסחר. אסטרטגיה באיכות טובה נתפסת כאחת שניתנת לסחירה וגם יעילה.*
ערכי SQN הבאים מציעים את ה"איכויות" הבאות:
- 1.6–1.9 מתחת לממוצע
- 2.0–2.4 ממוצע
- 2.5–2.9 טוב
- 3.0-5.0 מצוין
- 5.1–6.9 מעולה
- 7.0 - הגביע הקדוש
נוסחת SQN:
SquareRoot(NumberTrades) * Average(TradesProfit) / StdDev(TradesProfit)
בדרך כלל היינו מתעקשים על לפחות 30 עסקאות כדי שהמדד הזה יהיה מובהק סטטיסטית, אבל נתעלם מזה לעת עתה, מכיוון שאנו בודקים את ה-backtest שלנו בפרק זמן קצר.
אתה יכול להתקרב לקטעים של העלילה, למשל:
כאן אנו רואים אות קנייה (חץ ירוק למעלה) כאשר ערך ה-RSI צונח מתחת ל-30 ולאחר מכן אות מכירה רווחי כמו וסמן רווח (עיגול כחול) כאשר RSI מגיע אל מעל 70. ראה את הערכים עבור RSI בפינה הימנית התחתונה .
רווח (ביום אחד) של 777.78$ עם 18 עסקאות מנצחות ו-7 עסקאות מפסידות הוא די טוב, במיוחד ליום מסחר של פעולה רדודה יחסית (+1.42%). תארו לעצמכם מה נוכל להשיג ביום שורי עם נפח גבוה!
פרמטרים של מודל
אתה מריץ get_data לימים שונים ומנתח אותם בנפרד. שימו לב כיצד לפרמטרים שונים של RSI יש השפעה על הרווחיות מהיום למחר.
אקסיומה של מסחר כמותי: נסה הרבה דברים שונים ומדוד תוצאות.
מקרה לדוגמא, באותו יום של מסחר ב-BTC אך עם תקופת RSI של 20 ולא 12, ניצחון-הפסד של 2/3 ו- רווח נקי של -21.51 דולר (כולל עמלות מסחר). זה הבדל גדול מהמבחן האחורי האחרון!
אתה יכול גם להתנסות עם מגבלות RSI שונות (מלבד ברירת המחדל 70/30) ופרמטרים של stop-loss. Stop-loss היא הוראת מכירה אוטומטית ברגע שהמחיר יורד מתחת לרמה מסוימת ביחס להוראת הקנייה שבוצעה. כפי שהשם מרמז, זה יכול לשמש ל"עצירת הפסד" לאחר הגעה למצב של תנודתיות.
עצירת הפסד
הדרך בה הגדרנו את הפסקת הפסקה היא כדלקמן:
- 0 : אין הגדרת הפסקת הפסד, המתן עד שהמחוון יפעיל פקודת מכירה
- 0.00x : Stop-loss ב-% ערך מתחת למחיר הרכישה, 0.001 הוא 0.1% מתחת
- -0.0x : הפסקת הפסקה נגררת יעקוב אחר המסחר כשהמחיר יעלה, 0.01 הוא הפסקת הפסקה נגררת 1% מתחת למחיר הרכישה
הסטופ-לוס הזה הוא פרמטר חשוב לכל מסחר ויכול להיות בעל יבוא משמעותי, לא מפתיע, בביצועים. למידע נוסף על אסטרטגיות סטופ-לוס ראה כאן.
כאן ב-backtest.py שלנו הוא המקום שבו אנו מגדירים זאת באמצעות backtrader:
הנה אותה ריצה כפי שניתחנו זה עתה, אבל עם 0.1% הפסקת הפסקה
רווח נקי של $383.67 עם 12 ניצחונות ו-12 הפסדים, הרבה יותר טוב מההפסד שהיה לנו קודם. אתה יכול לראות בעלילה שהסטופ-לוס הנגרר הגן על רבים מהעסקאות מלגלוש להפסדים כאינדיקטור הממתין לאות מכירה (קניית יתר).
בתוך אינדיקטור יחיד, בהגדרה זו, יש לנו תמורות אפשריות רבות ושונות:
- טווח תקופה בין 10 ל-30 מרווחים (20 גרסאות)
- הגדרת הפסקת הפסד (בואו נדמיין 5 גרסאות מעשיות שונות)
- סף לקניית יתר/מכירת יתר (בואו נדמיין 5 גרסאות לעת עתה)
זה יהיה 20x5x5, או 500 וריאציות שונות לכל יום. לבחון את אלה אחד לאחד ביד יהיה מגוחך ובכל זאת אנחנו רוצים לדעת אילו פרמטרים היו הכי רווחיים ובאיכות המסחר הגבוהה ביותר ואילו לא.
אלכימיה כמותית!
זה מביא אותנו לשלב הבא שלנו בחקר קריפטו קוואנט זה. אנחנו יכולים לקבוע בכוח את הפרמטרים הרווחיים והאיכותיים ביותר של אסטרטגיית המסחר לתקופת מסחר נתונה ולאחר מכן לראות כיצד אלה מתקדמים.
- 67
- 7
- 9
- פעולה
- מאמרים
- נכס
- Backtesting
- binance
- ביטקוין
- BTC
- סחר ב - BTC
- Bullish
- לִקְנוֹת
- מעגל
- קרוב יותר
- קוד
- קריפטו
- נתוני קריפטו
- CZ
- נתונים
- יְוֹם
- EU
- EV
- לְנַסוֹת
- חקירה
- אגרות
- תרשים
- ראשון
- לעקוב
- קדימה
- פונקציה
- טוב
- ירוק
- מדריך
- כאן
- גָבוֹהַ
- איך
- איך
- hr
- HTTPS
- עצום
- ia
- פְּגִיעָה
- כולל
- IP
- בעיות
- IT
- לִלמוֹד
- רמה
- סִפְרִיָה
- קו
- LP
- שוק
- למדוד
- בינוני
- מומנטום
- נטו
- באינטרנט
- להזמין
- אחר
- ביצועים
- שפע
- פופולרי
- מחיר
- להרוויח
- כדאיויות
- לִרְכּוֹשׁ
- איכות
- רכס
- תוצאות
- סקירה
- הפעלה
- למכור
- סט
- הצבה
- משותף
- שיתופים
- קצר
- פָּשׁוּט
- So
- אִסטרָטֶגִיָה
- מערכת
- טכני
- בדיקות
- זמן
- סחר
- סוחרים
- עסקות
- מסחר
- אסטרטגיות מסחר
- הדרכות
- us
- ערך
- וִידֵאוֹ
- וידאו
- נדיפות
- W
- לחכות
- בתוך
- תיק עבודות
- ראוי
- שנה
- זום