Welcome Contributors!
Thank you for your interest in contributing to the XAUUSD Trading Assistant AI project! We welcome contributions from the community to help improve this educational trading tool.This is an open-source educational project. All contributions should align with the goal of helping others learn about algorithmic trading and AI integration.
Ways to Contribute
There are many ways you can contribute to this project:Report Bugs
Found an issue? Report it on GitHub with detailed information to help us fix it.
Suggest Features
Have ideas for improvements? Share your feature requests and enhancement ideas.
Improve Documentation
Help make the documentation clearer, more comprehensive, and easier to understand.
Submit Code
Fix bugs, add features, or improve existing functionality with code contributions.
Getting Started
1. Fork and Clone the Repository
2. Set Up Development Environment
3. Create a Branch
Use descriptive branch names:
feature/add-new-indicator, fix/mt5-connection-error, docs/update-installation-guideContribution Guidelines
Code Standards
Python Style Guide
Python Style Guide
Follow PEP 8 style guidelines:
- Use 4 spaces for indentation (no tabs)
- Maximum line length of 88 characters (Black formatter standard)
- Use descriptive variable and function names
- Add docstrings to functions and classes
Code Quality
Code Quality
Ensure your code is:
- Clean: Remove unnecessary comments and debug code
- Efficient: Optimize for performance where possible
- Readable: Use clear variable names and structure
- Documented: Add comments for complex logic
- Type-hinted: Use Python type hints where applicable
Consider using tools like
black for formatting and pylint for linting.Error Handling
Error Handling
Implement proper error handling:
- Use try-except blocks for external dependencies
- Log errors with appropriate severity levels
- Provide meaningful error messages
- Fail gracefully when possible
Dependencies
Dependencies
When adding new dependencies:
- Justify why the dependency is needed
- Use well-maintained, reputable packages
- Update
requirements.txtwith pinned versions - Document any special installation steps
requirements.txt entry:Testing Requirements
Testing Checklist
Testing Checklist
Before submitting your contribution:
- Test on a demo MT5 account
- Verify existing functionality still works
- Test edge cases and error conditions
- Check with different timeframes
- Verify Streamlit dashboard still loads
- Test with various market conditions (if possible)
- Ensure no hardcoded credentials or API keys
Unit Tests (Optional but Recommended)
Unit Tests (Optional but Recommended)
If adding unit tests:
Manual Testing
Manual Testing
Document your testing process:
- Test Environment:
- OS: Windows 10
- Python: 3.10.5
- MT5: Build 3650
- Test Scenarios:
- Connected to demo account
- Ran analysis on XAUUSD
- Checked all timeframes
- Verified AI signal generation
- Results:
- All features working as expected
- No errors in console
- Dashboard displays correctly
Documentation Standards
Code Documentation
Code Documentation
Document your code appropriately:
- Docstrings: Add to all functions and classes
- Comments: Explain complex logic, not obvious code
- Type hints: Use Python type annotations
- Examples: Provide usage examples for new features
README Updates
README Updates
Update README.md if you:
- Add new features
- Change installation steps
- Modify configuration requirements
- Add new dependencies
- Change usage instructions
- Clear and concise
- Up-to-date with latest changes
- Beginner-friendly
- Well-formatted
Changelog
Changelog
If a CHANGELOG.md exists, add your changes:
Submitting Contributions
Pull Request Process
Commit Your Changes
Make clean, logical commits:Commit Message Format:
Add:for new featuresFix:for bug fixesUpdate:for improvements to existing featuresDocs:for documentation changesRefactor:for code refactoringTest:for adding tests
Write clear, descriptive commit messages that explain what and why, not just what.
Create Pull Request
- Go to the original repository on GitHub
- Click “New Pull Request”
- Select your fork and branch
- Fill out the PR template (if available)
- Submit the pull request
PR Review Process
Be patient during the review process. Maintainers review PRs as time permits.
- Initial Review: Maintainer checks PR description and changes
- Code Review: Detailed review of code quality and functionality
- Feedback: You may receive requests for changes
- Revisions: Make requested changes and push updates
- Approval: Once approved, your PR will be merged
- Be open to suggestions and constructive criticism
- Ask questions if feedback is unclear
- Make requested changes promptly
- Update your PR branch as needed
Types of Contributions
Bug Fixes
Reporting Bugs
Reporting Bugs
When reporting a bug, include:
- Clear title: Summarize the issue
- Description: Detailed explanation of the bug
- Steps to reproduce: How to trigger the bug
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Environment: OS, Python version, MT5 version
- Error messages: Complete error logs
- Screenshots: If applicable
Use the GitHub issue template if available to ensure all necessary information is provided.
Fixing Bugs
Fixing Bugs
When fixing a bug:
- Reference the issue number in your PR
- Explain the root cause
- Describe your solution
- Test thoroughly to ensure the fix works
- Verify no new bugs are introduced
Fix: MT5 connection timeout issue (#42)Feature Requests
Suggesting Features
Suggesting Features
Before suggesting a feature:
- Check if it already exists
- Search existing issues/PRs
- Consider if it aligns with project goals
- Think about implementation complexity
- Explain the problem it solves
- Describe proposed solution
- Provide use cases
- Consider alternatives
- Note any potential drawbacks
Implementing Features
Implementing Features
Before implementing a major feature:
- Discuss first: Open an issue to discuss the feature
- Get feedback: Ensure maintainers agree it’s a good fit
- Plan implementation: Outline your approach
- Start development: Once approved, begin coding
Documentation Improvements
Documentation contributions are highly valued:- Fix typos and grammar errors
- Clarify confusing sections
- Add examples and tutorials
- Improve formatting and structure
- Translate documentation (if applicable)
- Add diagrams or screenshots
Good documentation helps onboard new users and reduces support burden. Don’t underestimate its importance!
Community Guidelines
Code of Conduct
Be Respectful
Be Respectful
- Treat all contributors with respect
- Welcome newcomers and help them learn
- Accept constructive criticism gracefully
- Focus on the issue, not the person
- Respect different opinions and approaches
Be Professional
Be Professional
- Use clear, professional language
- Avoid offensive or inflammatory content
- Stay on topic in discussions
- Give credit where credit is due
- Acknowledge your mistakes
Be Collaborative
Be Collaborative
- Share knowledge and help others
- Provide constructive feedback
- Be open to learning from others
- Work together to solve problems
- Celebrate community successes
Communication Channels
- GitHub Issues: Bug reports, feature requests
- GitHub Discussions: Questions, ideas, general discussion
- Pull Requests: Code contributions and reviews
When asking questions, provide context and show what you’ve tried. This helps others help you more effectively.
Recognition
Contributors
All contributors will be:- Listed in the project’s contributors page
- Acknowledged in release notes (for significant contributions)
- Credited in documentation (for documentation contributions)
We value all contributions, whether it’s fixing a typo or adding a major feature. Every contribution helps improve the project!
Advanced Topics
Adding New Indicators
When adding technical indicators:- Research: Ensure accurate implementation
- Function: Create a clean, reusable function
- Integration: Add to analysis pipeline
- Dashboard: Update Streamlit UI if needed
- AI: Update AI prompt to consider new indicator
- Documentation: Explain the indicator and its use
Platform Integrations
Interested in adding support for other platforms (TradingView, cTrader, etc.)?- Abstract data layer: Separate data fetching from analysis
- Platform adapter: Create adapter for new platform
- Configuration: Add platform selection option
- Testing: Test thoroughly with the new platform
- Documentation: Update docs with new platform setup
AI Model Improvements
Contributing to the AI component:- Improve prompt engineering
- Add support for different LLM providers
- Enhance context provided to AI
- Improve signal formatting and clarity
- Add confidence scoring
Questions?
Need help with contributing?- Check the FAQ
- Review Troubleshooting
- Search existing GitHub issues
- Open a new discussion on GitHub
Don’t hesitate to ask questions! The community is here to help, and asking questions helps improve documentation for future contributors.
Thank You!
Thank you for contributing to the XAUUSD Trading Assistant AI! Your efforts help make this educational tool better for everyone.
- Start small if you’re new to contributing
- Ask questions when needed
- Be patient with the review process
- Learn from feedback
- Have fun and learn!