Contributing to Pine Script Library
Thank you for your interest in contributing to our Pine Script Library! This document provides comprehensive guidelines for contributing high-quality indicators, strategies, and improvements to our professional library.
🎯 Contribution Overview
We welcome contributions that:
- Add new indicators or strategies
- Improve existing code quality
- Enhance documentation
- Fix bugs or performance issues
- Add utility libraries or templates
📋 Contribution Standards
Code Quality Requirements
All contributions must meet our professional standards:
- ✅ Follow Formatting Guidelines: Adhere to our Pine Script Formatting Guidelines
- ✅ Include Comprehensive Documentation: Every script needs detailed README and inline comments
- ✅ Provide Version History: Maintain changelog with semantic versioning
- ✅ Pass Quality Validation: Code must compile without errors and warnings
- ✅ Include Usage Examples: Demonstrate practical implementation
File Structure Requirements
Each contribution must include:
your-indicator/
├── README.md # Comprehensive documentation
├── changelog.md # Version history
├── your-indicator.pine # Main Pine script
├── examples/ # Usage examples (optional)
└── screenshots/ # Visual examples (optional)
🚀 Getting Started
1. Fork and Clone
# Fork the repository on GitHub
git clone https://github.com/yourusername/PineScript.git
cd PineScript
# Add upstream remote
git remote add upstream https://github.com/original/PineScript.git
2. Create Feature Branch
# Create and switch to feature branch
git checkout -b feature/your-indicator-name
# Keep your branch updated
git fetch upstream
git rebase upstream/dev
3. Development Environment
- Use VSCode or your preferred editor
- Enable Pine Script syntax highlighting
- Configure 4-space indentation
- Enable visible whitespace
📝 Contribution Types
New Indicators
Location: indicators/{category}/{indicator-name}/
Categories:
trend/- Trend analysis indicatorsmomentum/- Momentum and oscillatorsvolume/- Volume-based indicatorsvolatility/- Volatility measuressupport-resistance/- Key level identification
Requirements:
- Professional-grade implementation
- Multi-timeframe support (where applicable)
- Comprehensive alert system
- Configurable display options
- Performance optimization
New Strategies
Location: strategies/{category}/{strategy-name}/
Categories:
trend-following/- Trend-based systemsmomentum-based/- Momentum strategiesbreakout/- Breakout systems
Requirements:
- Complete entry/exit logic
- Risk management parameters
- Backtesting compatibility
- Performance metrics
- Strategy documentation
Utility Libraries
Location: libraries/{category}/
Categories:
utils/- General utilitiesmath/- Mathematical functionsdisplay/- Visual elementstime/- Time/timeframe helpersalert/- Alert systemsvalidation/- Input validation
Requirements:
- Reusable functions
- Clear documentation
- Parameter validation
- Error handling
- Usage examples
🎨 Code Standards
Pine Script Requirements
//@version=6
indicator("Your Indicator [YourInitials]",
shorttitle="YI[YI]",
overlay=false,
precision=2,
max_labels_count=500)
// Professional header with copyright and description
// =====================================================
// Your Indicator Name [Your Initials]
// =====================================================
// Copyright 2025 Your Name. All rights reserved.
// Educational use only. Private modifications allowed.
// Contact: your.email@domain.com
// =====================================================
Function Documentation
//@function Calculate moving average with validation
//@param source Price series for calculation
//@param length Number of periods
//@param method MA type ('sma', 'ema', 'wma')
//@returns Calculated moving average or na if invalid
f_calculateMA(series float source, simple int length, simple string method) =>
// Implementation with proper validation
Constants and Configuration
// =====================================================
// CONSTANTS AND CONFIGURATION
// =====================================================
// Indicator Configuration
INDICATOR_DEFAULT_LENGTH = 14
INDICATOR_MIN_LENGTH = 1
INDICATOR_MAX_LENGTH = 500
// Display Configuration
MAX_LABELS = 500
MAX_LINES = 500
📚 Documentation Requirements
README.md Template
# Your Indicator Name
**Brief description of functionality**


## Overview
Detailed description of what the indicator does...
## Key Features
- Feature 1
- Feature 2
- Feature 3
## Technical Specifications
Parameter details, calculations, etc...
## Usage Guide
How to use the indicator...
## Configuration Examples
Practical setup examples...
## Version History
Link to changelog...
## License
Reference to library license...
Changelog Format
# Your Indicator Changelog
## [1.0.0] - 2025-MM-DD
### Added
- Initial release
- Core functionality
- Basic features
### Technical Details
- Parameter specifications
- Performance characteristics
✅ Quality Checklist
Before submitting your contribution:
Code Quality
- Follows Pine Script formatting guidelines
- Uses consistent naming conventions
- Includes comprehensive error handling
- Implements input validation
- Optimized for performance
- No compilation errors or warnings
Documentation
- README.md with complete documentation
- Inline code comments for complex logic
- Function documentation with JSDoc format
- Changelog with version history
- Usage examples provided
Testing
- Tested across multiple timeframes
- Validated with different symbols
- Edge cases handled appropriately
- Performance tested with historical data
- Alert functionality verified
File Organization
- Proper directory structure
- Consistent file naming
- Required files included
- No unnecessary files
🔄 Submission Process
1. Pre-submission Testing
# Test your indicator thoroughly
# Ensure it compiles without errors
# Verify all features work as expected
# Check performance with large datasets
2. Create Pull Request
Target Branch: dev (not main)
PR Title Format: [Category] Add/Fix/Update: Indicator Name
Examples:
[Trend] Add: Advanced MACD Divergence Indicator[Momentum] Fix: RSI calculation edge case[Volume] Update: Enhanced volume profile display
3. PR Description Template
## Description
Brief description of changes...
## Type of Change
- [ ] New indicator
- [ ] New strategy
- [ ] New utility library
- [ ] Bug fix
- [ ] Documentation update
- [ ] Performance improvement
## Category
- [ ] Trend
- [ ] Momentum
- [ ] Volume
- [ ] Volatility
- [ ] Support/Resistance
## Testing
- [ ] Tested on multiple timeframes
- [ ] Tested with different symbols
- [ ] Performance validated
- [ ] Documentation reviewed
## Checklist
- [ ] Follows formatting guidelines
- [ ] Includes comprehensive documentation
- [ ] Changelog updated
- [ ] No compilation errors
- [ ] Ready for review
🔍 Review Process
Review Criteria
Your contribution will be evaluated on:
-
Code Quality (40%)
- Adherence to formatting standards
- Error handling and validation
- Performance optimization
- Code organization
-
Documentation (30%)
- Completeness and clarity
- Usage examples
- Technical specifications
- Version tracking
-
Functionality (20%)
- Feature completeness
- Reliability and accuracy
- User experience
- Professional appearance
-
Testing (10%)
- Comprehensive testing
- Edge case handling
- Performance validation
- Cross-platform compatibility
Review Timeline
- Initial Review: 3-5 business days
- Feedback Cycle: 2-3 days per iteration
- Final Approval: 1-2 business days
- Merge to Dev: Immediate after approval
- Release Planning: Monthly dev → main merges
🎨 Style Guidelines
Visual Standards
- Professional Appearance: Clean, modern design
- Color Consistency: Use established color themes
- Typography: Clear, readable text elements
- Spacing: Appropriate visual hierarchy
- Performance: Efficient rendering
User Experience
- Intuitive Controls: Logical parameter organization
- Clear Feedback: Obvious visual indicators
- Flexible Display: Multiple viewing options
- Reliable Alerts: Consistent notification system
- Documentation: In-line help and tooltips
🛠️ Development Tools
Recommended Setup
Editor: Visual Studio Code Extensions:
- Pine Script syntax highlighting
- Bracket pair colorization
- Indent rainbow
- Error lens
Configuration:
{
"editor.tabSize": 4,
"editor.insertSpaces": true,
"editor.renderWhitespace": "all",
"editor.wordWrap": "off"
}
Validation Tools
Use our development tools in tools/validation/:
- Code formatting checker
- Documentation validator
- Performance analyzer
- Compilation tester
📞 Support and Questions
Getting Help
- Documentation: Check existing docs first
- Issues: Search GitHub issues
- Discussions: Use GitHub discussions
- Direct Contact: paul@pinescriptstrategy.com
Community
- Follow library coding standards
- Respect contributor guidelines
- Participate constructively in reviews
- Help maintain library quality
🏆 Recognition
Contributor Benefits
- Attribution: Your name in contributor list
- Documentation: Link to your profile/website
- Expertise: Recognition for quality contributions
- Community: Part of professional Pine Script community
Quality Awards
- Gold Contributor: 5+ high-quality contributions
- Expert Developer: Advanced technical contributions
- Documentation Master: Exceptional documentation
- Community Helper: Active in reviews and support
🔒 Legal and Licensing
Contribution License
By contributing, you agree:
- Your contribution follows library license terms
- You have rights to submit the contribution
- Your work can be used under library license
- You retain credit for your contribution
Copyright
- Library License: Educational use encouraged
- Attribution Required: For commercial use
- Original Authors: Maintain copyright notices
- Professional Standards: Commercial-grade quality
🎉 Thank You!
Your contributions help build a world-class Pine Script library. We appreciate your effort to maintain high standards and create valuable tools for the trading community.
Questions? Contact paul@pinescriptstrategy.com
Last Updated: June 30, 2025
Part of: Pine Script Library