Başlarken
PineBag'i bir kez kurun, ardından birkaç dakika içinde ilk testinizi hazırlayın.
Üç şeye ihtiyacınız var
- Google Chrome 116 veya daha yenisi.
- Test etmek istediğiniz sembollere erişimi olan, oturum açmış bir TradingView hesabı.
- Bildiren bir Pine Script dosyası
strategy(), yalnızcaindicator().
PineBag'i kurun ve açın
-
Uzantıyı yükleyin.
PineBag yükleme düğmesini kullanın. Hızlı erişim istiyorsanız uzantıyı sabitleyin. -
Bir TradingView grafiği açın.
Önce oturum açın, ardından desteklenen herhangi bir piyasayı ve zaman dilimini açın. -
Grafik sekmesini yeniden yükleyin.
Grafiğin bağlanabilmesi için PineBag'i kurduktan veya güncelledikten sonra bunu yapın. -
PineBag'i açın.
PineBag simgesini seçin. Grafik hazır olduğunda bağlantı göstergesi yeşile döner.
Yan panel, kontrol ile kontrol
Gerçek arayüzdeki rakamlar açıklamalarla örtüşmektedir. Bu görseldeki hiçbir şey maket değildir.
1
2
3
4
5
6
7
8
9
10
11
- 1Strateji
Yüklenen strateji. Düzenleyicide açmak için karta tıklayın; bölüm başlığındaki çöp kutusu onu kaldırır.
- 2Çalıştırma özeti
Kullanılacak zaman dilimi, sermaye, emir büyüklüğü ve komisyon.
- 3Ara
TradingView sembol aramasını açar, böylece borsaya uygun bir hisse senedi ekleyebilirsiniz.
- 4Kopyalama çantası
Her bir onay işaretini kopyalar, bir tane
EXCHANGE:SYMBOLsatır başına. - 5Yapıştırma torbası
Satırları, virgülleri, noktalı virgülleri veya boşlukları kabul eder ve kopyaları yok sayar.
- 6Temizle
İkinci bir tıklama ister, sembolleri kopyalar ve ardından listeyi temizler; «Sembolleri yapıştır» listeyi geri getirir.
- 7Ticker etiketleri
Mevcut çantayı gösterir. Bir sembolü kaldırmak için × tuşunu kullanın; 500'e kadar ekleyin.
- 8Backtest başlat
Kurulumu doğrular ve sıralı portföy çalışmasını başlatır.
- 9Raporlar
En son 50 raporu yerel olarak kaydedin ve JSON veya CSV'yi dışa aktarın.
- 10Kalan gün sayısı
Active days: 05— Kalan gün sayısı. - 11Destek
Teknik, faturalandırma, lisanslama ve gizlilik talepleri için destek mevcuttur.
Bir strateji yükleyin
- Kaynağı seçin.
Bir bırakın.pinedosyasını Strateji'ye ekleyin veya Editör'ü açıp kodu yapıştırın. - Herhangi bir doğrulama mesajını düzeltin.
Komut dosyası şunları içermelidir:strategy(). PineBag kullanılamıyorsa açık bir hata gösterir. - Özeti kontrol edin.
Çalıştır'ın üzerinde gösterilen komut dosyası adını, zaman dilimini, sermayeyi ve emir boyutunu onaylayın.
indicator(), PineBag'i çalıştırmadan önce bunu bir stratejiye dönüştürün.Strateji şablonu
TradingView Properties sekmesindeki her alan bir strategy() argümanına karşılık gelir. Değerleri komut dosyasının başında adlandırılmış sabitler olarak tutun: komut dosyası önceliğiyle her hisse aynı varsayımlarla test edilir.
TIMEFRAMEZaman dilimi
INITIAL_CAPITAL · CURRENCYBaşlangıç sermayesi
ORDER_SIZE · ORDER_SIZE_TYPEVarsayılan emir büyüklüğü
PYRAMIDINGPiramitleme
BAR_MAGNIFIERBar detayı
CALC_EVERY_TICK · CALC_ON_FILLSKomut dosyası yürütme
COMMISSION · COMMISSION_TYPEKomisyon
MARGIN_LONG · MARGIN_SHORTLong ve short kaldıraç
SLIPPAGEKayma
LIMIT_FILL_TICKSLimit emir gerçekleşmesi
FILL_ON_BAR_CLOSEEmir gerçekleşme gecikmesi
runtime.error()Başka herhangi bir zaman diliminde komut dosyasını durdurur.
//@version=6
// ============================================================================
// Trend breakout · ATR risk — PineBag strategy template
// ============================================================================
// ----------------------------------------------------------------------------
// STRATEGY PROPERTIES (TradingView: Settings → Properties)
// ----------------------------------------------------------------------------
// TIMEFRAME takes a standard TradingView interval. Paste one of these, by the
// lowest TradingView plan that has it (tradingview.com/pricing, Charts):
// Basic days "1D" "1W" "1M" "3M" "6M" "12M"
// Essential minutes "1" "3" "5" "15" "30" "45"
// hours "60" "120" "180" "240"
// ranges "1R" "10R" "100R" "1000R"
// Premium seconds "1S" "5S" "10S" "15S" "30S" "45S"
// Ultimate ticks "1T" "10T" "100T" "1000T"
// Other intervals are custom and not used: a week is "1W", not "7D".
const string TIMEFRAME = "1D" // Chart timeframe
const float INITIAL_CAPITAL = 100000 // Initial capital
const string CURRENCY = currency.USD // Initial capital currency
const float ORDER_SIZE = 100 // Default order size
const string ORDER_SIZE_TYPE = strategy.percent_of_equity // Order size: % of equity
const int PYRAMIDING = 1 // Pyramiding
const bool BAR_MAGNIFIER = false // Bar detalization: Default (4 ticks per bar)
const bool CALC_EVERY_TICK = false // Script execution: On bar close
const bool CALC_ON_FILLS = false // Script execution: no recalculation after fills
const float COMMISSION = 0 // Commission
const string COMMISSION_TYPE = strategy.commission.percent // Commission: Percent
const float MARGIN_LONG = 100 // Long leverage 1x (leverage = 100 / margin)
const float MARGIN_SHORT = 100 // Short leverage 1x
const int SLIPPAGE = 0 // Slippage, ticks
const int LIMIT_FILL_TICKS = 0 // Limit order execution: Requested price
const bool FILL_ON_BAR_CLOSE = false // Order execution delay: One tick
strategy("Trend breakout · ATR risk", overlay = true,
initial_capital = INITIAL_CAPITAL,
currency = CURRENCY,
default_qty_type = ORDER_SIZE_TYPE,
default_qty_value = ORDER_SIZE,
pyramiding = PYRAMIDING,
use_bar_magnifier = BAR_MAGNIFIER,
calc_on_every_tick = CALC_EVERY_TICK,
calc_on_order_fills = CALC_ON_FILLS,
commission_type = COMMISSION_TYPE,
commission_value = COMMISSION,
margin_long = MARGIN_LONG,
margin_short = MARGIN_SHORT,
slippage = SLIPPAGE,
backtest_fill_limits_assumption = LIMIT_FILL_TICKS,
process_orders_on_close = FILL_ON_BAR_CLOSE)
// Stops with a clear message on any other timeframe; PineBag reads TIMEFRAME
// and selects it for the run.
if timeframe.period != TIMEFRAME
runtime.error("Switch the chart to the " + TIMEFRAME + " timeframe.")
// ----------------------------------------------------------------------------
// INPUT SETTINGS (TradingView: Settings → Inputs)
// ----------------------------------------------------------------------------
fastLength = input.int(20, "Fast EMA", minval = 1)
slowLength = input.int(50, "Slow EMA", minval = 2)
breakoutLength = input.int(20, "Breakout lookback", minval = 2)
atrLength = input.int(14, "ATR length", minval = 1)
atrStop = input.float(2.0, "ATR stop multiplier", minval = 0.1, step = 0.1)
// ----------------------------------------------------------------------------
// CALCULATIONS
// ----------------------------------------------------------------------------
fast = ta.ema(close, fastLength)
slow = ta.ema(close, slowLength)
atr = ta.atr(atrLength)
highestBefore = ta.highest(high, breakoutLength)[1]
// ----------------------------------------------------------------------------
// ENTRIES AND EXITS
// ----------------------------------------------------------------------------
longSignal = fast > slow and close > highestBefore
if longSignal and strategy.position_size == 0
strategy.entry("Long", strategy.long)
stopPrice = strategy.position_avg_price - atr * atrStop
strategy.exit("ATR stop", "Long", stop = stopPrice)
// ----------------------------------------------------------------------------
// PLOTS
// ----------------------------------------------------------------------------
plot(fast, "Fast EMA", color = color.rgb(0, 153, 255))
plot(slow, "Slow EMA", color = color.rgb(123, 97, 255))
TIMEFRAME değerleri
TradingView'in standart aralıklarından birini tırnak içinde yazın. Hangilerinin yükleneceği, tradingview.com/pricing sayfasında belirtildiği gibi TradingView planınıza bağlıdır.
Günler, haftalar ve aylar.
"1D" "1W" "1M" "3M" "6M" "12M"
Dakikalar, saatler ve aralık çubukları. Dakikaların harfi yoktur; bir saat 60'tır.
"1" "3" "5" "15" "30" "45""60" "120" "180" "240""1R" "10R" "100R" "1000R"
Saniye bazlı aralıklar.
"1S" "5S" "10S" "15S" "30S" "45S"
Tik bazlı aralıklar.
"1T" "10T" "100T" "1000T"
const string TIMEFRAME = "1D" // 1 day
// const string TIMEFRAME = "1W" // 1 week
// const string TIMEFRAME = "240" // 4 hours
// const string TIMEFRAME = "15" // 15 minutes
// const string TIMEFRAME = "30S" // 30 seconds, Premium and higher
Emir büyüklüğü: yüzde, tutar veya miktar
ORDER_SIZE sayıyı, ORDER_SIZE_TYPE ise bu sayının ne anlama geldiğini belirtir. İkisi birlikte TradingView Properties sekmesindeki Order size alanını doldurur.
strategy.percent_of_equity
Mevcut sermayenin yüzdesi. 10, işlem başına sermayenin %10'u demektir.
strategy.cash
Strateji para birimi cinsinden bir tutar. 1000, işlem başına 1.000 USD demektir.
strategy.fixed
Kontrat, hisse veya coin sayısı. 0.5, işlem başına 0,5 BTC demektir.
qty = …
Varsayılan büyüklük yalnızca kendi qty değeri olmayan emirlere uygulanır. qty = … içeren bir giriş bunun yerine o değeri kullanır.
// 10% of equity per trade
const float ORDER_SIZE = 10
const string ORDER_SIZE_TYPE = strategy.percent_of_equity
// 1,000 USD per trade (CURRENCY = currency.USD)
// const float ORDER_SIZE = 1000
// const string ORDER_SIZE_TYPE = strategy.cash
// 0.5 contracts, shares or coins per trade
// const float ORDER_SIZE = 0.5
// const string ORDER_SIZE_TYPE = strategy.fixed
Kendi değişkenleriniz
Kendi strateji mantığınızın ayarlarını ayrı bir INPUT SETTINGS bloğunda tutun. Her input.int(), input.float() veya input.bool() çağrısı TradingView Inputs sekmesinde bir alana dönüşür; böylece kodu düzenlemeden ayarlayabilirsiniz.
// ----------------------------------------------------------------------------
// INPUT SETTINGS (TradingView: Settings → Inputs)
// ----------------------------------------------------------------------------
fastLength = input.int(20, "Fast EMA", minval = 1)
slowLength = input.int(50, "Slow EMA", minval = 2)
breakoutLength = input.int(20, "Breakout lookback", minval = 2)
atrLength = input.int(14, "ATR length", minval = 1)
atrStop = input.float(2.0, "ATR stop multiplier", minval = 0.1, step = 0.1)