Προσομοίωση πρόκλησης prop-firm
Λιανικές prop φίρμες (FTMO-στυλ) πούλησαν αξιολόγησης λογαριασμούς: έμπορος πρέπει χτυπήστε κέρδος στόχο κατά
παραμονή εντός κινδύνου όρια (μέγιστο καθημερινή απώλεια, μέγιστο συνολό/trailing αναλήψεις, συνέπεια, χρόνο όρια) πριν
χρηματοδότηση. cMind αφήνει χρήστη δημιουργία προσαρμοσμένη πρόκληση κάθε βιομηχανία σχήμα, δεσμευμένη σε
TradingAccount, τρέχουν σαν αντιγραφή-διαπραγμάτευσης λειτουργία — ξεκίνησε/διακοπή, φιλοξενείς σε κόμβο,
ιχνηλατούμενο ζωντανό πάνω cTrader Open API. Aggregate αξιολογεί κάθε κανόνα ντερμινιστικό. σε
πέρασμα ή παραβίαση, τέλος πρόκληση, σημαρκό αυτό, ειδοποιώνει χρήστη.
Τομέας (φραγμένο περιεχόμενο: PropFirm)
PropFirmChallenge = aggregate ρίζα (λειτουργική μονάδα Core.PropFirm), αναφορές του TradingAccount κατά
ισχυρό αναγνωριστικό μόνο (χωρίς cross-aggregate FK). Κατέχει κανόνας αξιολόγηση, φάση/κατάσταση μηχανή, κόμβο
κάθιση.
Αντικείμενα αξιών & κανόνας σύνολο
Money(μη αρνητικό),MoneyAmount(υπογεγραμμένα),Percent(0–100],TradingDayRequirement(0–365).EquitySnapshot(ίδια κεφάλαια, ισοζύγιο)— διαβάστε τροφοδότηση σε aggregate.ActivitySnapshot(openPositions, openedInNewsWindow, holdingOverWeekend)— δεν ίδια κεφάλαια γεγονότα.DailyLossLimit(ποσοστό, βάση)— βάσηEquity(intraday, περιλαμβάνει πλέον P&L) ήBalance(διακοπή μόνο).DrawdownLimit—Static(από αρχική ισοζύγιο),TrailingPercent(από κορυφή ίδια κεφάλαια), ήTrailingThresholdDollar(αχνάρια ίδια κεφάλαια κορυφή κατά σταθερό δολάριο ποσοστό, στη συνέχεια κλειδώνει σε αρχική ισοζύγιο μόλις ίδια κεφάλαια φτάνει κατώφλι — futures-στυλ).ConsistencyRule(maxSingleDayShareOfProfit)— αποκλείει πέρασμα ενώ μία ημέρα κυριαρχεί συνολό κέρδος.ChallengeRulesφέρει παραπάνω συνMaxCalendarDays,MaxInactivityDays,MaxOpenPositions,AllowWeekendHolding,AllowNewsTrading,Kind,SingleStep. Κανόνας μαθηματικά ζουν σε VO (DrawdownLimit.IsBreached,DailyLossLimit.IsBreached,ConsistencyRule.IsSatisfied). aggregate ορχηστρώνεται.
Πρόκληση είδη & πρότυπα
ChallengeTemplates.For(kind) κτίζει έγκυρο προεπιλογή για OnePhase, TwoPhase, ThreePhase,
InstantFunding, ή Custom (πλήρης έλεγχος). UI προ-γεμίσματα πρότυπο. χρήστης μπορώ να προσαρμόστε κάθε πεδίο.
Φάσεις & κατάσταση
- Φάσεις:
Evaluation → Verification → Funded(ενιαίο-βήμα παραλήψεις Verification). - Κατάσταση:
Active,Passed,Failed, συν κύκλο ζωήςStopped(ιχνηλάτηση διακοπή) —Createαρχή πρόκλησηActive.Stop()/Resume()διακοπήActive↔Stopped. BreachReason:DailyLoss,MaxDrawdown,Consistency,TimeLimit,Inactivity,WeekendHolding,NewsTrading,MaxExposure.
Κανόνας αξιολόγηση
RecordEquity(EquitySnapshot, now)— κυλιέται διαπραγμάτευσης ημέρα σε ημέρα όρια (συλλαμβάνει προηγούμενο ημέρα κέρδος για συνέπεια κανόνας), ενημερώσεις κορυφή/καθημερινή κορυφή, στη συνέχεια αποτυγχάνει σε πρώτο παραβίαση (καθημερινή απώλεια → αναλήψεις → χρόνο όριο → αδράνεια, σε αριθμητική σειρά) ή προχωρά φάση όταν κέρδος στόχο, ελάχιστο-διαπραγμάτευσης-ημέρα, συνέπεια απαιτήσεις όλα πληροφοριακή. Έξω-σειράς στιγμιότυπα και αρχεία σε τερματικό πρόκληση ρίχτεDomainException.RecordActivity(ActivitySnapshot, now)— αξιολογεί συμπεριφορά κανόνα (μέγιστο ανοικτό θέσεις, σαββατοκύριακο δυνατότητα κράτησης, ειδήσεις διαπραγμάτευσης), σφραγίδες δραστηριότητα για αδράνεια κανόνας.- Mягкий
PropFirmDrawdownWarningπυρά μία φορά όταν ίδια κεφάλαια χρήση διασταυρώσεις ρύθμιση κατώφλι.
Τομέας συμβάντα: PropFirmChallengeStarted, PropFirmChallengeStopped, PropFirmPhasePassed,
PropFirmChallengePassed, PropFirmChallengeBreached, PropFirmDrawdownWarning.
Ζωντανό ιχνηλάτηση (Εκτέλεση) — κόμβο-φιλοξενείς, αυτο-θεραπείες
Ιχνηλάτηση κατοπτρίζει αντιγραφή-διαπραγμάτευσης φιλοξενείες στοίβα ακριβώς. prop ιχνηλάτης = διαβάστε-μόνο συγγενής του αντίγραφο κινητήρας.
PropFirmTrackingSupervisor(src/Nodes/PropFirm) —BackgroundServiceσε κάθε κόμβο, πύλη σεApp:PropFirm:Enabled. Κάθε κύκλο αξιώσεις ενεργό προκλήσεις σε αυτο-θεραπείες κάθιση (AssignedNode+LeaseExpiresAt. νεκρό κόμβο προκλήσεις ανακτημένα μόλις κάθιση lapses — ίδιο ατομικόExecuteUpdateαξίωση ως αντιγραφή διαπραγμάτευσης, έτσι δύο κόμβι ποτέ διπλό-ιχνηλάτηση), ανανεώνει κάθισης, ωθεί περιστροφή tokens σε θέση, σταματά κεντρικού host του οποίου πρόκληση αριστερόActive.PropFirmTrackingHost(src/Nodes/PropFirm) — ένα ανά πρόκληση. ΑνοίγειIOpenApiTradingSessionγια λογαριασμό και, σεApp:PropFirm:EquityPollInterval, recomputes ζωντανό ίδια κεφάλαια, τροφοδότης σε aggregate. Ανταλλαγές πρόσβαση token σε θέση σε περιστροφή (χωρίς συνοδος απόθεμα). Έξοδοι όταν πρόκληση όχι πλέονActive.PropFirmEquityCalculator(src/CTraderOpenApi/Client) — cTrader-πιστή ίδια κεφάλαια μαθηματικά. Ίδια κεφάλαια δεν παραδίδεται από Open API, έτσι προκύπτων:ίδια κεφάλαια = ισοζύγιο + Σ(ανακτάμενα P&L), όπου κάθε θέση P&L είναιpriceDifference × μονάδες × προσφορά→κατάθεση ποσοστό + ανταλλαγή + προμήθεια(μονάδες = σύρμα όγκο / 100. μακρύ revalues σε προσφορά, σύντομο σε ερώτηση). Ισοζύγιο απόProtoOATrader. θέσεις (εισόδου τιμή, ανταλλαγή, προμήθεια) από συμφωνία. ζωντανό προσφορά/ερώτηση από σημείο συνδρομές. Καθαρό και απομονώθηκε — νόμισμα-μετατροπή καυτό σημείο ενότητα-δοκιμάστηκε σε δικό του.
Ειδοποιήσεις
PropFirmAlertNotifier (src/Infrastructure/PropFirm) εγγραφή σε πέρασμα/παραβίαση/προειδοποίηση τομέας συμβάντα
(εγγραφή ως IDomainEventHandler<>, δρομολογούμενος μετά επιτυχής SaveChanges), ειδοποιώνει χρήστη
διαμέσου δομημένη ειδοποίηση/ελεγκτική λογιστική (LogMessages). Ζωντανό UI αντανακλά ίδιο κατάσταση αλλαγή. Αυτό
= cross-context αντίδρασης — ποτέ mutates πρόκληση aggregate.
API (/api/prop-firm, δυνατότητα PropFirm, ρόλο User+)
| Μέθοδος | Διαδρομή | Σκοπός |
|---|---|---|
| GET | /challenges | λίστα χρήστη προκλήσεις (είδος, φάση, κατάσταση, ζωντανό ίδια κεφάλαια, κάθιση) |
| GET | /challenges/{id} | ένα πρόκληση |
| GET | /templates | βιομηχανία προεπιλογή για δημιουργία διάλογος |
| POST | /challenges | δημιουργία από πρότυπο ή πλήρως προσαρμοσμένη κανόνας σύνολο |
| POST | /challenges/{id}/start | βιογραφικό ιχνηλάτηση (Stopped → Active) |
| POST | /challenges/{id}/stop | στάση ιχνηλάτηση (Active → Stopped, απελευθέρωση κάθιση) |
| POST | /challenges/{id}/equity | αρχείο ίδια κεφάλαια στιγμιότυπο → re-αξιολόγηση (χειροκίνητα/χωρίς-ζωντανό-τροφοδοσία διαδρομή) |
| DELETE | /challenges/{id} | mягкий-διαγραφή (αποκλειστικό ενώ Active) |
MCP: Mcp/Tools/PropFirmTools.cs εκθέση λίστα/δημιουργία(από πρότυπο)/αρχείο-ίδια κεφάλαια/έναρξη/σταματά, πύλη σε
PropFirm δυνατότητα.
UI: /prop-firm (nav Prop Firm, πύλη κατά PropFirm σημαία) λίστα προκλήσεις με Έναρξη/Διακοπή/Διαγραφή
σειρά ενέργειες (Έναρξη όταν Stopped, Διακοπή όταν Active, Διαγραφή απενεργοποιημένη ενώ Active), δημιουργία αυτά μέσα
NewPropFirmChallengeDialog (πρότυπο χόμπι + πλήρης κανόνας επεξεργαστής). Όλα δημιουργία/επεξεργασία μέσω MudBlazor διάλογος.
Ζωντανό ίδια κεφάλαια τροφοδοσία — επιλύθηκε
Νωρίτερα "χωρίς ζωντανό λογαριασμό P&L τροφοδοσία" κενό κλειστό: όταν App:PropFirm:Enabled ορίστηκε, κόμβι ιχνηλάτηση
λογαριασμό ζωντανό πάνω Open API, τροφοδοσία ίδια κεφάλαια αυτόματα. Χωρίς αυτό (προεπιλογή), τομέας και
χειροκίνητα-ίδια κεφάλαια διαδρομή (POST …/equity) τρέχουν αμετάβλητα — χωρίς cTrader διαπιστευτήρια που χρειάζονται για κτίριο/δοκιμή/E2E.
Δοκιμές
- Ενότητα —
UnitTests/PropFirm/:PropFirmChallengeTests(φάση προχώρηση, ελάχιστη-ημέρες, στατικό/trailing αναλήψεις, καθημερινή απώλεια, τερματικό/έξω-σειράς φρουροί).PropFirmChallengeRulesTests(ισοζύγιο κατά ίδια κεφάλαια καθημερινή-απώλεια βάση, trailing-κατώφλι-δολάριο trail+κλείδωμα, συνέπεια μπλοκ/επιτρέπουν, χρόνο-όριο, αδράνεια, μέγιστο-έκθεση, σαββατοκύριακο, ειδήσεις, στάση/βιογραφικό, κάθιση όριο, πέρασμα απελευθέρωση κάθιση, αναλήψεις προειδοποίηση).PropFirmValueObjectTests(VO κύκλι + κανόνας-VO μαθηματικά).PropFirmEquityCalculatorTests(μακρύ/σύντομο P&L, ανταλλαγή/προμήθεια, προσφορά→κατάθεση μετατροπή, λείπα τιμολόγηση).PropFirmTrackingHostTests(ζωντανό ίδια κεφάλαια μονάδες πέρασμα/αποτυχία κατά επέκταση ψεύτικα συνοδος).PropFirmAlertNotifierTests. Χρόνο ρητό /FakeTimeProvider— χωρίς wall-ρολόι διαβάζει. - Ολοκλήρωση —
IntegrationTests/:PropFirmChallengePersistenceTests(γύρω-τρίπλα + αρχείο-ίδια κεφάλαια + mягкой-διαγραφή, εμπλουτίστηκε-κανόνα + κάθιση γύρω-τρίπλα) καιPropFirmTrackingLeaseTests(αξίωση, διαφιλονικούμενο κάθιση, ανακτήστε μετά lapses διαμέσου δύο κόμβο ταυτότητες) σε πραγματικό Postgres. - E2E —
E2ETests/PropFirmTests.cs: δημιουργία + αρχείο-ίδια κεφάλαια σεPassed. σταματά→έναρξη→παραβίαση ροή. πρότυπα τελικό σημείο. - Stress / DST —
StressTests/PropFirm/PropFirmChallengeDstTests.cs: σπόρος ρυθμοποιημένα ίδια κεφάλαια/δραστηριότητα ρεύματα (ημέρα κυλιέται, αιχμές, συντριβές, διπλό + έξω-σειράς στιγμιότυπα, έκθεση/σαββατοκύριακο/ειδήσεις) διαμέσου πολλά μικτό-κανόνας προκλήσεις, επιβεβαίωση τσαμπί ακριβώς-μία φορά τερματικό κατάστασης, κορυφή-όρια-τρέχων αναλλοίωτο, λογισμένο αποτυχίες.
Ρύθμιση (App:PropFirm)
Enabled (από προεπιλογή), ReconcileInterval, EquityPollInterval, LeaseTtl,
DrawdownWarnThresholdPercent, NodeName.