[TOC]
পাইনে কোডের সাধারণ কাঠামো অনুসরণ করেঃ
<version>
<declaration_statement>
<code>
FMZ এর পাইন ভাষার সমর্থিত টীকা চিহ্নঃ একক লাইন টীকা//
বহু-রেখা বিশদ বিবরণ/* */
উদাহরণস্বরূপ, নিম্নলিখিত উদাহরণগুলির মধ্যে মন্তব্যগুলি লিখুনঃ
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) // 计算MACD指标
/*
plot函数在图表上画出指标线
*/
plot(macdLine, color = color.blue, title='macdLine')
plot(signalLine, color = color.orange, title='signalLine')
plot(histLine, color = color.red, title='histLine')
নিম্নলিখিত ফর্মের কম্পাইলার নির্দেশাবলী কম্পাইলারকে বলে যে স্ক্রিপ্টটি কোন সংস্করণে পাইনে লেখা হয়েছেঃ
//@version=5
ডিফল্টরূপে v5 সংস্করণ, কোডে বাদ দেওয়া যেতে পারে//@version=5
。
indicator()
strategy()
বিবৃতি বিবৃতি স্ক্রিপ্টের ধরন নির্ধারণ করে, যা এর মধ্যে কি অনুমতি দেওয়া হয় এবং কিভাবে এটি ব্যবহার এবং সম্পাদন করা হয় তা নির্ধারণ করে; স্ক্রিপ্টের মূল বৈশিষ্ট্যগুলি সেট করে, যেমন এর নাম, যখন এটি চার্টে যুক্ত করা হয় তখন এটি কোথায় প্রদর্শিত হবে, এটি প্রদর্শিত মানগুলির নির্ভুলতা এবং বিন্যাস, এবং এটি চালানোর সময় এর আচরণের কিছু মান পরিচালনা করে, যেমন এটি চার্টে প্রদর্শিত সর্বাধিক সংখ্যক অঙ্কন বস্তুর সংখ্যা; কৌশলগুলির জন্য, বৈশিষ্ট্যগুলি পুনর্বিবেচনার নিয়ন্ত্রণের পরামিতিগুলি অন্তর্ভুক্ত করে, যেমন প্রাথমিক মূলধন, কমিশন, স্লাইড পয়েন্ট ইত্যাদি। FMZ এর পাইনের প্রয়োজন নেই যে একটি কৌশল কোডে অন্তর্ভুক্ত করা আবশ্যক।indicator()
অথবাstrategy()
এই ভিডিওটি ভিডিওতে দেখা যাচ্ছে।
স্ক্রিপ্টের যে লাইনটি মন্তব্য বা কম্পাইলার নির্দেশ নয় তা একটি বাক্য, যা স্ক্রিপ্টের অ্যালগরিদম বাস্তবায়ন করে। একটি বাক্য এইগুলির মধ্যে একটি হতে পারে।
if
,for
,while
অথবাswitch
ইত্যাদি গঠনবাক্যাংশ বিভিন্ন উপায়ে সাজানো যেতে পারে
空格
অথবা制表符
(tab কী) শুরু হয়. তাদের প্রথম অক্ষরটি অবশ্যই লাইনের প্রথম অক্ষর হতে হবে. লাইনের প্রথম অবস্থানের শুরু হওয়া লাইনটি সংজ্ঞা অনুসারে স্ক্রিপ্টের গ্লোবাল পরিসরের অংশ হয়ে ওঠে।local block
একটি স্থানীয় ব্লককে অবশ্যই একটি টেমপ্লেট বা চারটি স্পেসের মধ্যে সঙ্কুচিত করতে হবে (অন্যথায়, এটি পূর্ববর্তী লাইনের ক্রমিক কোড হিসাবে বিশ্লেষণ করা হবে, অর্থাৎ পূর্ববর্তী লাইনের কোডের ধারাবাহিকতা হিসাবে নির্ধারিত হবে) এবং প্রতিটি ব্লক একটি ভিন্ন স্থানীয় পরিসীমা সংজ্ঞায়িত করে।উদাহরণস্বরূপ, তিনটি লোগো অন্তর্ভুক্ত করা হয়েছে, একটি কাস্টম ফাংশন বিবৃতিতে, দুটি ভেরিয়েবল বিবৃতিতে যদি কাঠামো ব্যবহার করে, নিম্নলিখিত কোড সহঃ
indicator("", "", true) // 声明语句(全局范围),可以省略不写
barIsUp() => // 函数声明(全局范围)
close > open // 本地块(本地范围)
plotColor = if barIsUp() // 变量声明 (全局范围)
color.green // 本地块 (本地范围)
else
color.red // 本地块 (本地范围)
runtime.log("color", color = plotColor) // 调用一个内置函数输出日志 (全局范围)
দীর্ঘ সারিগুলি একাধিক সারিতে বিভক্ত হতে পারে, বা "বাড়ানো" হতে পারে। আবৃত সারিগুলিকে যে কোনও সংখ্যক স্পেসে সংকুচিত হতে হবে, যদি না এটি 4 এর গুণ হয় ((এই সীমানাগুলি স্থানীয় অংশগুলি সংকুচিত করার জন্য ব্যবহৃত হয়) ।) ।
a = open + high + low + close
এটি প্যাকেজ করা যেতে পারে ((নোট করুন যে প্রতি লাইনে সংকুচিত স্পেস সংখ্যা 4 এর গুণ নয়):
a = open +
high +
low +
close
একটি দীর্ঘ প্লট ((() কলটি প্যাকেজ করা যেতে পারে।
close1 = request.security(syminfo.tickerid, "D", close) // syminfo.tickerid 当前交易对的日线级别收盘价数据系列
close2 = request.security(syminfo.tickerid, "240", close) // syminfo.tickerid 当前交易对的240分钟级别收盘价数据系列
plot(ta.correlation(close, open, 100), // 一行长的plot()调用可以被包装
color = color.new(color.purple, 40),
style = plot.style_area,
trackprice = true)
ব্যবহারকারীর দ্বারা সংজ্ঞায়িত ফাংশন বিবৃতিতে থাকা একটি বিবৃতিও প্যাকেজ করা যেতে পারে। তবে, যেহেতু স্থানীয়করণগুলি সিনট্যাক্সিয়ালভাবে একটি সংকোচন দিয়ে শুরু হতে হবে ((৪ টি স্পেস বা ১ টি প্রতীক), তাই যখন এটিকে পরবর্তী লাইনে বিভক্ত করা হয়, তখন বিবৃতির ধারাবাহিক অংশটি এক বা একাধিক সংকোচনের সাথে শুরু হতে হবে ((৪ টি স্পেসের গুণের সমান নয়) । উদাহরণস্বরূপঃ
test(c, o) =>
ret = c > o ?
(c > o+5000 ?
1 :
0):
(c < o-5000 ?
-1 :
0)
a = test(close, open)
plot(a, title="a")
টাইম সিকোয়েন্স একটি ডেটা টাইপ বা ফরম্যাট নয়, টাইম সিকোয়েন্স হল একটি মৌলিক কাঠামো যা PINE ভাষায় ব্যবহৃত হয়। এটি সময়ের সাথে ধারাবাহিকভাবে পরিবর্তিত মান সংরক্ষণের জন্য ব্যবহৃত হয়, প্রতিটি মান একটি সময় পয়েন্টের সাথে সম্পর্কিত। টাইম সিকোয়েন্সের এই কাঠামোটি সময় পরিবর্তনের সাথে সাথে পরিবর্তিত ডেটা পরিচালনা এবং রেকর্ড করার জন্য উপযুক্ত।
অন্তর্নির্মিত ভেরিয়েবলopen
উদাহরণস্বরূপঃopen
একটি অন্তর্নির্মিত ভেরিয়েবল প্রতিটি K লাইন BAR এর ওপেন মূল্য রেকর্ড করে, যদি এইopen
এবং এটা 5 মিনিটের K-রেখা চক্রের তথ্য।open
ভেরিয়েবলের মধ্যে রেকর্ড করা হয় K লাইন BAR (কলাম) এর প্রতি 5 মিনিটের ওপেনিং মূল্য। যখন আপনার কৌশল প্রোগ্রামটি কার্যকর হয় তখন কোডে উদ্ধৃতি দেওয়া হয়।open
অর্থাৎ বর্তমান অবস্থানে K-রেখা BAR এর ওপেন-ড্রাইভ মূল্য উল্লেখ করা হয়। সময়ের ক্রমের আগের মান (পূর্বের মান) উল্লেখ করার জন্য আমরা ব্যবহার করি[]
ইতিহাস অপারেটর, যখন নীতিটি একটি K-line BAR এ কার্যকর হয়open[1]
এর অর্থ হল বর্তমান K-লাইন BAR এর পূর্ববর্তী K-লাইন BAR এর প্রারম্ভিক মূল্য উল্লেখ করা।
যদিওসময়সূচীএটি সহজেই "আরিয়ার" মত একটি ডেটা স্ট্রাকচার মনে করিয়ে দেয়, যদিও পাইন ভাষায় অ্যারিও টাইপ রয়েছে। কিন্তু তারা সময়ের ক্রম থেকে সম্পূর্ণ ভিন্ন ধারণা।
PINE ভাষায় এইভাবে টাইম সারি ডিজাইন করা হয়, যা কৌশল কোডে খুব সহজেই বন্ধের দামের সংযোজন গণনা করতে পারে, এবং for এর মতো লুপিং কাঠামো ব্যবহার করার প্রয়োজন নেই, শুধুমাত্র PINE ভাষা ব্যবহার করে অন্তর্নির্মিত ফাংশন ব্যবহার করে।ta.cum(close)
আরেকটি উদাহরণ হিসাবে, আমরা শেষ 14 টি K-লাইন BAR (যেমন কোডটি কার্যকর হওয়ার সময় বর্তমান মুহুর্তের নিকটতম 14 টি K-লাইন BAR) এর সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্যের পার্থক্যের গড় গণনা করতে চাই। এটি লিখতে পারেঃta.sma(high - low, 14)
সময়রেখায় ফাংশন কল করার ফলাফলগুলিও সময়রেখায় একটি চিহ্ন ফেলে দেয়, একইভাবে ব্যবহার করা যেতে পারে[]
ইতিহাস অপারেটর পূর্ববর্তী মান উল্লেখ করে। উদাহরণস্বরূপ, বর্তমান K-লাইন BAR-এর বন্ধের মূল্য সর্বশেষ 10টি K-লাইন BAR-এর মধ্যে সর্বোচ্চ মূল্যের সর্বোচ্চ মান অতিক্রম করে কিনা তা পরীক্ষা করার জন্য (বর্তমান K-লাইন BAR-কে বাদ দিয়ে) আমরা লিখতে পারিঃbreach = close > ta.highest(close, 10)[1]
এবং একইভাবে এটি লিখতে পারেনঃbreach = close > ta.highest(close[1], 10)
তাই।ta.highest(close, 10)[1]
এবংta.highest(close[1], 10)
আমি মনে করি, এটি একটি দুর্দান্ত কাজ।
আপনি নিম্নলিখিত কোড ব্যবহার করে যাচাই করতে পারেনঃ
strategy("test pine", "test", true)
a = ta.highest(close, 10)[1]
b = ta.highest(close[1], 10)
plotchar(true, title="a", char=str.tostring(a), location=location.abovebar, color=color.red)
plotchar(true, title="b", char=str.tostring(b), location=location.belowbar, color=color.green)
উপরের টেস্টিং কোডটি a এবং b এর মানগুলিকে প্রতিটি BAR এ তাদের সংশ্লিষ্ট সময়সূচির উপর আউটপুট দেয়, এবং আপনি দেখতে পারেন যে a এবং b এর মানগুলি সর্বদা সমান, তাই উভয় উপায়েই সমান।
PINE নীতির অন্তর্নির্মিত টেমপ্লেট "Pine Language Exchange Library" এর জন্য প্যারামিটার সেটিং নির্দেশাবলী।
定价货币精度
প্যারামিটার এবং এই প্যারামিটারটি অর্ডার দেওয়ার সময় স্লাইড মূল্য নির্ধারণ করে; উদাহরণস্বরূপ, মূল্য নির্ধারণের মুদ্রার নির্ভুলতা 2 সেট করা হয়, অর্থাৎ, ক্ষুদ্র সংখ্যার দ্বিতীয় স্থানে সঠিক, 0.01 পর্যন্ত সঠিক; তাহলে স্লাইড পয়েন্টের সংখ্যা প্রতিটি পয়েন্টের জন্য 0.01 মূল্য নির্ধারণের ইউনিটকে প্রতিনিধিত্ব করে। এই সময়ে স্লাইড পয়েন্টের সংখ্যা 5 সেট করা হয়, অর্ডার দেওয়ার সময় স্লাইড মূল্য 0.05 হয় ((স্লিড পয়েন্ট অর্ডার দেওয়ার সময় আরও ভালভাবে এবং অর্ডার সম্পন্ন করার জন্য অতিরিক্ত মূল্যের অংশটি খোলার জন্য) ।) ।javascript
কৌশলগতভাবে কল করুনSetMaxBarLen
ফাংশন একই কাজ করে।strategy(title = "open long example", pyramiding = 3) // pyramiding 允许的同方向下单的次数
strategy.entry("long1", strategy.long, 0.01) // 市价开多仓,指定分组标签为long1
strategy.entry("long2", strategy.long, 0.02, when = close > ta.ema(close, 10)) // 条件触发,执行下单,市价开多仓
strategy.entry("long3", strategy.long, 0.03, limit = 30000) // 指定(较低的)价格,计划下买单订单,等待成交开仓,限价开仓
strategy(title = "close long example", pyramiding = 2) // pyramiding 允许的同方向下单的次数
strategy.entry("long1", strategy.long, 0.1) // 市价开多仓,指定分组标签为long1
strategy.entry("long2", strategy.long, 0.1) // 市价开多仓,指定分组标签为long2
strategy.close("long1", when = strategy.position_size > 0.1, qty_percent = 50, comment = "close buy entry for 50%") // 平仓,指定平掉分组标签为long1的仓位的50%持仓
strategy.close("long2", when = strategy.position_size > 0.1, qty_percent = 80, comment = "close buy entry for 80%") // 平仓,指定平掉分组标签为long2的仓位的80%持仓
PINE ভাষার হোল্ডিং প্রক্রিয়াটি একমুখী হোল্ডিংয়ের অনুরূপ। উদাহরণস্বরূপ, যখন বহুমুখী অবস্থানগুলি ("মাল্টিহোল্ডিং") রাখা হয়, তখন যদি বিক্রয় অপারেশন অর্ডার, পরিকল্পনা তালিকা ইত্যাদি (ধারণের দিকের বিপরীত দিকের তুলনায়) অর্ডারগুলি কার্যকর করা হয় তবে প্রথমে বহুমুখী অবস্থানগুলি (সমস্ত বহুমুখী অবস্থানগুলি স্থির করা) স্থির করা হয় এবং তারপরে ট্রিগারটি কার্যকর করা হয় (ধারণের দিকের বিপরীত দিকের তুলনায় স্থির হওয়ার আগে) ।
যদি কোন মূল্য নির্দিষ্ট না করা হয়, তাহলে ডিফল্টরূপে বাজার মূল্য তালিকা ব্যবহার করা হয়। বাজার মূল্য তালিকা ব্যতীত, আপনি পরিকল্পনা তালিকা দিয়েও অর্ডার করতে পারেন, পরিকল্পনা তালিকা অবিলম্বে কাজ করে না। পরিকল্পনা তালিকা একটি প্রোগ্রামের পরিকল্পনা অর্ডার ক্যোয়ারে বিদ্যমান যখন এটি ট্রিগার করা হয় না।রিয়েল ডিস্ক / পুনরায় পরীক্ষাসময় অবস্থা তথ্য (অর্থাৎ নীতি চলাকালীন অবস্থা বার) "পরিকল্পিত অর্ডার" টেবিলের পাতা ভাগে দেখা যায়। যখন বাজারের বাস্তব সময় মূল্যের শর্ত পূরণ হয় তখন সিস্টেমটি প্রকৃত অর্ডারগুলি ট্রিগার করে। সুতরাং এই অর্ডারগুলির লেনদেনের মূল্যে সামান্য বিচ্যুতি রয়েছে।strategy.entry
আমরা ফাংশনটি অর্ডার করার সময় এটি উল্লেখ করতে পারিlimit
、stop
প্যারামিটার ।
var isTrade = false
if not barstate.ishistory and not isTrade
isTrade := true
strategy.entry("test 1", strategy.long, 0.1, stop=close*1.3, comment="test 1 order") // stop
strategy.entry("test 2", strategy.long, 0.2, limit=close*0.7, comment="test 2 order") // limit
strategy.entry("test 3", strategy.short, 0.3, stop=close*0.6, limit=close*1.4, comment="test 3 order") // stop-limit
সীমা অর্ডার
অর্ডারের সীমা নির্ধারণ করুন, যখন অর্ডারটি অর্থ প্রদানের জন্য হয় (যেমনdirection
প্যারামিটার হলstrategy.long
), অর্ডারটি কেবল তখনই ট্রিগার হয় যখন বাজারের বর্তমান মূল্য তার চেয়ে কম হয়।
যখন অর্ডার বিক্রয়ের জন্য হয় (যেমনdirection
প্যারামিটার হলstrategy.short
), অর্ডারটি কেবল তখনই ট্রিগার হয় যখন বাজারের বর্তমান মূল্য তার চেয়ে বেশি হয়।
স্টপ অর্ডার
অর্ডারের স্টপ লস দাম সেট করুন, যখন অর্ডারটি কিনতে হয়, তখন অর্ডারটি কেবল তখনই ট্রিগার হয় যখন বাজারের বর্তমান মূল্য তার চেয়ে বেশি হয়। যখন অর্ডারটি বিক্রয় হয়, তখন অর্ডারটি কেবল তখনই ট্রিগার হয় যখন বাজারের বর্তমান মূল্য তার চেয়ে কম হয়।
স্টপ-লিমিট
একই সময়ে সেট আপ করা যাবেlimit
、stop
প্যারামিটার, অর্ডারটি প্রথমে যে দামের সাথে সামঞ্জস্যপূর্ণ তা ট্রিগার করা হয়।
var হল একটি কীওয়ার্ড যা ভেরিয়েবলকে বরাদ্দ এবং এককালীন প্রারম্ভিকীকরণের জন্য ব্যবহৃত হয়। সাধারণত, কীওয়ার্ড var অন্তর্ভুক্ত না করা ভেরিয়েবল অ্যাসেম্বলিং সিনট্যাক্সের ফলস্বরূপ, প্রতিবার যখন ডেটা আপডেট করা হয় তখন ভেরিয়েবলের মানকে ওভাররাইড করা হয়। বিপরীতে, যখন কীওয়ার্ড var ব্যবহার করে ভেরিয়েবল বরাদ্দ করা হয়, তখন ডেটা আপডেট হওয়া সত্ত্বেও তারা স্থিতিশীল থাকতে পারে এবং কেবলমাত্র যদি if-expressions এর শর্তগুলি পূরণ করে তবে এটি পরিবর্তন করতে পারে।
var variable_name = expression
ব্যাখ্যাঃ
variable_name
- পাইন স্ক্রিপ্টে অনুমোদিত ব্যবহারকারী ভেরিয়েবলের যে কোনও নাম ((ল্যাটিন অক্ষর, সংখ্যা এবং আন্ডারলাইন উভয়ই বড় এবং ছোট হতে পারে, তবে সংখ্যা দিয়ে শুরু হতে পারে না)) ।expression
- যে কোন অ্যারিথম্যাটিক এক্সপ্রেশন, যেমন একটি নিয়মিত ভেরিয়েবলকে সংজ্ঞায়িত করা হয়।উদাহরণ
// Var keyword example
var a = close
var b = 0.0
var c = 0.0
var green_bars_count = 0
if close > open
var x = close
b := x
green_bars_count := green_bars_count + 1
if green_bars_count >= 10
var y = close
c := y
plot(a, title = "a")
plot(b, title = "b")
plot(c, title = "c")
ভেরিয়েবল
এফএমজেডে, রিয়েল-টাইম মূল্য মডেল, ক্লোজিং মূল্য মডেল,var
、varip
আমরা নিম্নলিখিত কোড ব্যবহার করে পরীক্ষা করেছি।
strategy("test pine", "test 1", true)
// 测试 var varip
var i = 0
varip ii = 0
// 将策略逻辑每轮改变的i、ii打印在图上
plotchar(true, title="ii", char=str.tostring(ii), location=location.abovebar, color=color.red)
plotchar(true, title="i", char=str.tostring(i), location=location.belowbar, color=color.green)
// 每轮逻辑执行都给i、ii递增1
if true
i := i + 1
ii := ii + 1
রিয়েল-টাইম মূল্য মডেল
উপরের পরীক্ষার কোডটি চালানোর সময় দুটি পর্যায়ে বিভক্তঃ ১, ইতিহাসের কে-লাইন পর্যায়ে; ২, রিয়েল-টাইম কে-লাইন পর্যায়ে। যখন রিয়েল-টাইম মূল্য মডেল, ইতিহাসের কে-লাইন পর্যায়ে,var
、varip
বিবৃতির ভেরিয়েবল i, ii নীতি কোডের প্রতিটি রান বাস্তবায়নের সময় ক্রমবর্ধমান ক্রিয়াকলাপ সম্পাদন করে ((কারণif true
সুতরাং অবশ্যই সংশ্লিষ্ট শর্তাদি কোড ব্লকটি কার্যকর করা হবে) । সুতরাং আপনি দেখতে পারেন যে পুনরুদ্ধারের ফলাফলের K-লাইন BAR-এ প্রদর্শিত সংখ্যাগুলি প্রতিটিতে 1 এর সাথে বৃদ্ধি পায় । যখন ইতিহাসের K-লাইন ধাপ শেষ হয়, তখন রিয়েল-টাইম K-লাইন ধাপ শুরু হয় ।var
、varip
বিবৃতির ভেরিয়েবলগুলি পরিবর্তিত হতে শুরু করে। কারণ এটি একটি রিয়েল-টাইম মূল্য মডেল, একটি কে-লাইন বারের মধ্যে প্রতিটি মূল্য পরিবর্তনের জন্য কৌশল কোডটি পুনরাবৃত্তি করা হয়।i := i + 1
এবংii := ii + 1
বিপরীতে, i প্রতিবার সংশোধন করা হয়। যদিও i প্রতিবার সংশোধন করা হয়, তবে পরবর্তী রাউন্ডে নীতিগত লজিক চালানোর সময় পূর্বের মানটি পুনরুদ্ধার করা হয়, তবে বর্তমান K-লাইন BAR শেষ না হওয়া পর্যন্ত i এর মানটি পুনর্নির্ধারণ করা হয় না ((যেমন, পরবর্তী রাউন্ডে নীতিগত লজিক চালানোর সময় পূর্বের মানটি পুনরুদ্ধার করা হয় না) । সুতরাং আপনি দেখতে পারেন যে পরিবর্তনশীল i এখনও প্রতিটি রুটের সাথে BAR1 যোগ করা হয়; তবে পরিবর্তনশীল ii প্রতি বার একাধিকবার যোগ করা হয়।
বন্ধ মূল্য মডেল
যেহেতু ক্লোজিং প্রাইস মডেলটি প্রতিটি K লাইন BAR শেষ হওয়ার পরে একবার কৌশলগত যুক্তি সম্পাদন করে। সুতরাং, ক্লোজিং প্রাইস মডেলটিতে, ইতিহাস K লাইন পর্যায়ে এবং রিয়েল-টাইম K লাইন পর্যায়ে, একটি নির্দিষ্ট সময়সীমার মধ্যে একটি নির্দিষ্ট সময়সীমা থাকে।var
、varip
বিবৃতির ভেরিয়েবলগুলি উপরের উদাহরণে ক্রমবর্ধমানভাবে প্রদর্শিত হয়, প্রতিটি K-রেখা BAR এর জন্য 1 ক্রমবর্ধমান।
varip (var intrabar persist) হল একটি কীওয়ার্ড যা ভেরিয়েবলকে বরাদ্দ এবং একবারে ইনস্টল করার জন্য ব্যবহৃত হয়। এটি var কীওয়ার্ডের মতোই, তবে ভেরিয়েবলটি রিয়েল-টাইম কে-লাইন আপডেটের মধ্যে তার মান সংরক্ষণ করে।
varip variable_name = expression
ব্যাখ্যাঃ
variable_name
- পাইন স্ক্রিপ্টে ব্যবহারকারীর ভেরিয়েবলের যে কোনও নাম অনুমোদিত ((ল্যাটিন অক্ষর, সংখ্যা এবং আন্ডারলাইন উভয়ই বড় এবং ছোট হতে পারে, তবে সংখ্যা দিয়ে শুরু হতে পারে না)) ।expression
- যে কোন অ্যারিট্রিক্যাল এক্সপ্রেশন, যেমন একটি নিয়মিত ভেরিয়েবল সংজ্ঞায়িত করা হয়। প্রথম K-লাইনে, এক্সপ্রেশনটি শুধুমাত্র একবার গণনা করে এবং ভেরিয়েবলকে একবার বরাদ্দ করে।উদাহরণ
// varip
varip int v = -1
v := v + 1
plot(v)
যখন var ব্যবহার করা হয়, তখন গ্রাফটি bar_index এর মান ফেরত দেয়; যখন varip ব্যবহার করা হয়, তখন একই আচরণটি ইতিহাসের K-লাইনে ঘটে, কিন্তু রিয়েল-টাইম K-লাইনে, গ্রাফটি একটি মান ফেরত দেয়, যা প্রতিটি টিকের জন্য একটি বৃদ্ধি পায়।
নোটএটি শুধুমাত্র float, int, boolean, string এবং এই ধরনের অ্যারেগুলির সাথে ব্যবহার করা যেতে পারে।
একটি Boolean টাইপ ভেরিয়েবলের মান বা যখন একটি অভিব্যক্তি ব্যবহার করা হয়তুলনাঅথবাযুক্তিঅপারেটরের সময় গণনা করা যায় এমন মান।
নোটআরও দেখুনতুলনাঅপারেটর এবংযুক্তিঅপারেটরের বর্ণনা ।
দেখা হবে
bool
একটি বুল টাইপ ভেরিয়েবলের মান এবং তুলনা অপারেশন, লজিক অপারেশন এর ফলাফল নির্দেশ করে।
নোটআরও দেখুনতুলনাঅপারেটর এবংযুক্তিঅপারেটরের বর্ণনা ।
দেখা হবে
bool
If স্ট্রিংগুলি এমন একটি স্ট্রিং ব্লককে সংজ্ঞায়িত করে যা একটি অভিব্যক্তির শর্ত পূরণের সময় সম্পাদন করা আবশ্যক। ৪র্থ সংস্করণ পাইন স্ক্রিপ্ট ল্যাঙ্গুয়েজ আপনাকে
সাধারণ কোডগুলি এসেছেঃ
var_declarationX = if condition
var_decl_then0
var_decl_then1
...
var_decl_thenN
return_expression_then
else if [optional block]
var_decl_else0
var_decl_else1
...
var_decl_elseN
return_expression_else
else
var_decl_else0
var_decl_else1
...
var_decl_elseN
return_expression_else
নোট
var_declarationX
- এই ভেরিয়েবলটি if স্ট্রিং এর মান পায়condition
- যদি শর্তটি সত্য হয়, তাহলে স্ট্যাটাস ব্লক ব্যবহার করুনthen
লজিক ())var_decl_then0
,var_decl_then1
ইত্যাদি) ⇒ যদি শর্ত false হয় তবে বাক্যাংশ ব্লক ব্যবহার করুনelse if
অথবাelse
লজিক ())var_decl_else0
,var_decl_else1
ইত্যাদি) ।return_expression_then , return_expression_else
- মডিউলের শেষ অভিব্যক্তি বা ব্লকelse থেকে আসা অভিব্যক্তিটি স্ট্রিংয়ের শেষ মান প্রদান করবে।
if স্ট্রিং এর রিটার্ন ভ্যালুর ধরন নির্ভর করেreturn_expression_then
এবংreturn_expression_else
টাইপ ⇒ ট্রেডিং ভিউতে কাজ করার সময়, তাদের টাইপগুলি অবশ্যই মেলেঃ যখন আপনি অন্য ব্লকে একটি স্ট্রিং ভ্যালু রাখেন, তখন then স্ট্রিং ব্লক থেকে একটি পূর্ণসংখ্যা মান ফেরত দেওয়া অসম্ভব। ⇒ FMZ-এ কাজ করার সময়, নিম্নলিখিত উদাহরণগুলি ভুল রিটার্ন করে না, যখন y-ভ্যালুটি "open" হিসাবে নেওয়া হয়, তখন প্লট অঙ্কনের সময় মানটি n/a হয়।
উদাহরণ
// This code compiles
x = if close > open
close
else
open
// This code doesn’t compile by trading view
// y = if close > open
// close
// else
// "open"
plot(x)
বাদ দিতে পারেনelse
ব্লক. এই ক্ষেত্রে, যদি শর্ত false হয়, তাহলে var_declarationX ভেরিয়েবলের জন্য একটি
উদাহরণ
// if
x = if close > open
close
// If current close > current open, then x = close.
// Otherwise the x = na.
plot(x)
আপনি একাধিক
উদাহরণ
// if
x = if open > close
5
else if high > low
close
else
open
plot(x)
উপেক্ষা করা যায়if
বিবৃতির ফলাফলের মান ((
উদাহরণ
if (ta.crossover(high, low))
strategy.entry("BBandLE", strategy.long, stop=low)
else
strategy.cancel(id="BBandLE")
If বাক্যগুলি একে অপরের সাথে যুক্ত হতে পারেঃ
উদাহরণ
// if
float x = na
if close > open
if close > close[1]
x := close
else
x := close[1]
else
x := open
plot(x)
'for' স্ট্রাকচারটি একাধিক স্ট্রিং পুনরাবৃত্তি করার অনুমতি দেয়ঃ
[var_declaration =] for counter = from_num to to_num [by step_num]
statements | continue | break
return_expression
var_declaration
- একটি ঐচ্ছিক ভেরিয়েবল ঘোষণা, যা return_expression এর মান হিসাবে নির্ধারিত হবে।counter
- রিটার্নিং কাউন্টারের ভেরিয়েবলের মান সংরক্ষণ করুন, রিটার্নিংয়ের প্রতিটি পুনরাবৃত্তিতে 1 বা step_num মান বৃদ্ধি / হ্রাস করুন।from_num
- কাউন্টারের শুরু মান...............to_num
- কাউন্টারের শেষ মান; যখন কাউন্টারটি to_num এর চেয়ে বড় হয় (বা from_num > to_num এর ক্ষেত্রে to_num এর চেয়ে ছোট হয়) তখন লুপটি বিরতি দেয়; int/float thresholds/expressions ব্যবহার করা যেতে পারে, তবে এগুলি শুধুমাত্র লুপের প্রথম পুনরাবৃত্তির সময় মূল্যায়ন করা হয়;step_num
- কাউন্টারের বৃদ্ধি / হ্রাস মান. এটি ঐচ্ছিক. ডিফল্ট মান হল +1 বা -1, যা from_num বা to_num এর মধ্যে বৃহত্তম। যখন মান ব্যবহার করা হয়, কাউন্টারটিও from_num বা to_num এর মধ্যে বৃহত্তমটির উপর ভিত্তি করে বৃদ্ধি / হ্রাস করে, তাই step_num এর +/- চিহ্নটি ঐচ্ছিক।statements | continue | break
- যেকোনো সংখ্যা বাক্যাংশ, অথবা ক্রমাগত ক্রমাগত ক্রমাগত বা ক্রমাগত ক্রমাগত ক্রমাগত কীওয়ার্ড, 4 টি স্পেস বা একটি ট্যাবের মধ্যে সঙ্কুচিত।return_expression
- লুপের রিটার্ন ভ্যালু, যদি থাকে, তাহলে var_declaration এর ভেরিয়েবলকে দেওয়া হবে। যদি লুপটি continuous_logs বা break_logs কীওয়ার্ডের কারণে প্রস্থান করে, তাহলে লুপের রিটার্ন ভ্যালু হল শেষ ভেরিয়েবলের মান যা লুপটি প্রস্থান করার আগে বরাদ্দ করা হয়েছিল।continue
- কেবলমাত্র রিবাউন্ডে ব্যবহৃত কীওয়ার্ড। এটি রিবাউন্ডের পরবর্তী পুনরাবৃত্তির জন্য কার্যকর হয়।break
- চক্র থেকে বেরিয়ে আসার মূল শব্দ ।
উদাহরণ
// Here, we count the quantity of bars in a given 'lookback' length which closed above the current bar's close
qtyOfHigherCloses(lookback) =>
int result = 0
for i = 1 to lookback
if close[i] > close
result += 1
result
plot(qtyOfHigherCloses(14))
দেখা হবে
for...in
while
for...in
কাঠামোটি অ্যারের প্রতিটি উপাদানের জন্য একাধিক বিবৃতি পুনরাবৃত্তি করার অনুমতি দেয়। এটি যে কোনও পরামিতির সাথে ব্যবহার করা যেতে পারেঃarray_element
আপনি যদি এই প্যারামিটারটি ব্যবহার করতে চান তবে আপনি এটি ব্যবহার করতে পারেন।[index, array_element]
❖ দ্বিতীয় ফর্মটি লুপের কার্যকারিতাকে প্রভাবিত করে না ❖ এটি অণুর প্রথম ভেরিয়েবলের মধ্যে বর্তমান পুনরাবৃত্তির সূচক অনুসরণ করে ❖
[var_declaration =] for array_element in array_id
statements | continue | break
return_expression
[var_declaration =] for [index, array_element] in array_id
statements | continue | break
return_expression
var_declaration
- একটি ঐচ্ছিক ভেরিয়েবল ঘোষণা, যা লুপ দেওয়া হবেreturn_expression
এর মান ।index
- বর্তমান পুনরাবৃত্তি সূচকের জন্য একটি বিকল্প ভেরিয়েবল অনুসরণ করুন. সূচকটি 0 থেকে শুরু হয়. ভেরিয়েবলটি লুপে অপরিবর্তনীয়। যখন এটি ব্যবহার করা হয় তখন এটি অবশ্যই একটিতে অন্তর্ভুক্ত থাকতে হবে।array_element
আমি মনে করি, এটি একটি দুর্দান্ত কাজ।array_element
- প্রতিটি ধারাবাহিক অ্যারে উপাদানের একটি ভেরিয়েবল রয়েছে যা লুপে পরিচালনা করা হবে।array_id
- আইডি অ্যারে যা পুনরাবৃত্তি করে।statements | continue | break
- যেকোনো সংখ্যা বাক্যাংশ, অথবা ক্রমাগত ক্রমাগত ক্রমাগত বা ক্রমাগত ক্রমাগত ক্রমাগত কীওয়ার্ড, 4 টি স্পেস বা একটি ট্যাবের মধ্যে সঙ্কুচিত।return_expression
- লুপের রিটার্ন ভ্যালু বরাদ্দ করা হয়var_declaration
ভিতরে থাকা ভেরিয়েবল, যদি থাকে। যদি লুপটি "continue loop" বা "break loop" কীওয়ার্ডের কারণে প্রস্থান করে, তাহলে লুপের ফিরে আসা মানটি হল লুপটি প্রস্থান করার আগে শেষ ভেরিয়েবলের মান নির্ধারণ করা।continue
- কেবলমাত্র রিবাউন্ডে ব্যবহৃত কীওয়ার্ড। এটি রিবাউন্ডের পরবর্তী পুনরাবৃত্তির জন্য কার্যকর হয়।break
- চক্র থেকে বেরিয়ে আসার মূল শব্দ ।
লুপের মধ্যে অ্যারে এর উপাদান বা এর আকার পরিবর্তন করার অনুমতি দেয়।
এখানে আমরা ব্যবহার করছিfor...in
একটি একক পরামিতির ফর্ম যা নির্ধারণ করে যে প্রতিটি K-লাইনে কতটি K-লাইনের OHLC-ভ্যালু হল সানক্লোজের threshold-এর SMA-এর চেয়ে বড়ঃ
উদাহরণ
// Here we determine on each bar how many of the bar's OHLC values are greater than the SMA of 'close' values
float[] ohlcValues = array.from(open, high, low, close)
qtyGreaterThan(value, array) =>
int result = 0
for currentElement in array
if currentElement > value
result += 1
result
plot(qtyGreaterThan(ta.sma(close, 20), ohlcValues))
এখানে, আমরা for...in এর দুইটি প্যারামিটার ব্যবহার করেছি।isPos
অ্যারেটির মান নির্ধারণ করা হয়েছেtrue
তারা যখন আমাদেরvaluesArray
অ্যারেতে সংশ্লিষ্ট মানগুলি হলঃ
উদাহরণ
// for...in
var valuesArray = array.from(4, -8, 11, 78, -16, 34, 7, 99, 0, 55)
var isPos = array.new_bool(10, false)
for [index, value] in valuesArray
if value > 0
array.set(isPos, index, true)
if barstate.islastconfirmedhistory
runtime.log(str.tostring(isPos))
দেখা হবে
for
while
array.sum
array.min
array.max
while
স্ট্রিংগুলি স্থানীয় কোড ব্লকের শর্তাবলী পুনরাবৃত্তি করতে দেয়।
variable_declaration = while boolean_expression
...
continue
...
break
...
return_expression
ব্যাখ্যাঃvariable_declaration
- অপশনাল ভেরিয়েবল ঘোষণা ।return expression
এই ভেরিয়েবলের জন্য একটি প্রাথমিক মান প্রদান করা যেতে পারে।boolean_expression
- যদি true হয়, তাহলে চালানwhile
যদি এটি মিথ্যা হয় তবে এটি একটি স্ট্রিং এর স্থানীয় ব্লক।while
একটি বাক্যের পরে, স্ক্রিপ্টটি চালিয়ে যান।continue
- continue
কীওয়ার্ডগুলি পরবর্তী পুনরাবৃত্তির জন্য পুনরাবৃত্ত শাখাগুলির দিকে পরিচালিত করে।break
- break
কীওয়ার্ডগুলি লুপটি বন্ধ করে দেয়।while
এই বাক্যটির পরে পুনরায় শুরু করুন।return_expression
- সরবরাহwhile
স্ট্রিংটি একটি মান ফেরত দেয়।
উদাহরণ
// This is a simple example of calculating a factorial using a while loop.
int i_n = input.int(10, "Factorial Size", minval=0)
int counter = i_n
int factorial = 1
while counter > 0
factorial := factorial * counter
counter := counter - 1
plot(factorial)
নোটপ্রাথমিকwhile
লাইনের পর স্থানীয় কোড ব্লকটি চারটি স্পেস বা একটি টেবিল চিহ্নের মধ্যে সঙ্কুচিত হতে হবে।while
চক্র,while
পরবর্তী বুল এক্সপ্রেশন অবশ্যই শেষ পর্যন্ত false হতে হবে, অথবা এটিকে বাস্তবায়ন করতে হবেbreak
。
সুইচ অপারেটর শর্ত এবং অভিব্যক্তির মান অনুযায়ী নিয়ন্ত্রণকে কয়েকটি বাক্যের মধ্যে একটিতে স্থানান্তর করে।
[variable_declaration = ] switch expression
value1 => local_block
value2 => local_block
...
=> default_local_block
[variable_declaration = ] switch
boolean_expression1 => local_block
boolean_expression2 => local_block
...
=> default_local_block
স্লাইডস এডসেন্সের সাথে একটি সুইচঃ
উদাহরণ
// Switch using an expression
string i_maType = input.string("EMA", "MA type", options = ["EMA", "SMA", "RMA", "WMA"])
float ma = switch i_maType
"EMA" => ta.ema(close, 10)
"SMA" => ta.sma(close, 10)
"RMA" => ta.rma(close, 10)
// Default used when the three first cases do not match.
=> ta.wma(close, 10)
plot(ma)
এই ভিডিওটি একটি ভিডিওতে প্রকাশ করা হয়েছে।
উদাহরণ
strategy("Switch without an expression", overlay = true)
bool longCondition = ta.crossover( ta.sma(close, 14), ta.sma(close, 28))
bool shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
switch
longCondition => strategy.entry("Long ID", strategy.long)
shortCondition => strategy.entry("Short ID", strategy.short)
রিটার্ন মানবাস্তবায়িত স্থানীয় বাক্যের ব্লকের শেষ অভিব্যক্তির মান।
নোটশুধুমাত্র সম্পাদন করা যাবেlocal_block
উদাহরণ বাdefault_local_block
একজন ।default_local_block
শুধুমাত্র=>
ট্যাগগুলি একসাথে চালু করা হয় এবং কেবলমাত্র পূর্ববর্তী ব্লকটি চালিত না হলে চালিত হয়; যদিswitch
স্ট্রিংয়ের ফলাফল একটি ভেরিয়েবলকে বরাদ্দ করা হয় এবং নির্দিষ্ট করা হয় নাdefault_local_block
যদি না করা হয়,local_block
এই বাক্যটি ফিরে আসেna
◄ হবেswitch
যখন একটি স্ট্রিং এর ফলাফলকে একটি ভেরিয়েবলকে বরাদ্দ করা হয়, তখন সবlocal_block
ইনস্ট্যান্স অবশ্যই একই টাইপের মান ফেরত দিতে হবে।
দেখা হবে
if
?:
series একটি কীওয়ার্ড যা ডেটা সিরিজের ধরনকে নির্দেশ করে।series
মূলশব্দগুলি সাধারণত অপ্রয়োজনীয় হয়।
এটি ভেরিয়েবলকে বরাদ্দ করার জন্য ব্যবহৃত হয়, কিন্তু শুধুমাত্র যখন ভেরিয়েবল ঘোষণা করা হয় (প্রথমবার ব্যবহার করা হয়) ।
বাম দিকের ভেরিয়েবলকে মানাবে এমন একটি মানাবেশন অপারেটর।
⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒
expr1 != expr2
রিটার্ন মানবুল মান, বা বুল মানের একটি সিরিজ।
মোডাম ((ইন্টিগ্রেটেড লেভেল) ⇒ সংখ্যার অভিব্যক্তিতে ব্যবহৃত হয় ⇒
expr1 % expr2
রিটার্ন মানএকটি পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট মান, বা মান একটি সিরিজ।
নোটপাইন স্ক্রিপ্টে, যখন পূর্ণসংখ্যার ভগ্নাংশ গণনা করা হয়, তখন ব্যবসায়ীকে বিচ্ছিন্ন করা হয়; অর্থাৎ, এটিকে সর্বনিম্ন নিখুঁত মানের মধ্যে চার-পাঁচ করে রাখা হয়; ফলাফলের মানটি শেয়ারের সাথে একই চিহ্ন থাকবে।
উদাহরণঃ -1 % 9 = -1 - 9 * truncate ((-1/9) = -1 - 9 * truncate ((-0.111) = -1 - 9 * 0 = -1.
মডুলার নির্দেশক ⇒ সংখ্যাসূচক অভিব্যক্তিতে ব্যবহৃত হয়।
expr1 %= expr2
উদাহরণ
// Equals to expr1 = expr1 % expr2.
a = 3
b = 3
a %= b
// Result: a = 0.
plot(a)
রিটার্ন মানএকটি পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট মান, বা মান একটি সিরিজ।
গুণন । সংখ্যাসূচক অভিব্যক্তিতে ব্যবহৃত হয় ।
expr1 * expr2
রিটার্ন মানএকটি পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট মান, বা মান একটি সিরিজ।
গুণন নির্দেশক ⇒ সংখ্যাসূচক অভিব্যক্তিতে ব্যবহৃত হয়।
expr1 *= expr2
উদাহরণ
// Equals to expr1 = expr1 * expr2.
a = 2
b = 3
a *= b
// Result: a = 6.
plot(a)
রিটার্ন মানএকটি পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট মান, বা মান একটি সিরিজ।
যোগ করা বা একক আসল নাম্বার; সংখ্যাসূচক অভিব্যক্তি বা স্ট্রিং ব্যবহার করা হয়;
expr1 + expr2
+ expr
রিটার্ন মানস্ট্রিং এর বাইনারি+
এক্সপ্রা 1 এবং এক্সপ্রা 2 এর সংমিশ্রণ ফেরত
একটি সংখ্যা একটি পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট মান, বা মান একটি সিরিজ ফেরতঃ
দ্বিপদী সিলিন্ডার +'ফিরে আসে এক্সপ্রেস 1 + এক্সপ্রেস 2 ।
একক ক্রিয়া + ক্রিয়া ফেরত দেয় expr ((একক অপারেটর সমান্তরালের জন্য কোন সামগ্রী যোগ করা হয় না) ।)
নোটআপনি সংখ্যাযুক্ত অ্যারিথমিক অপারেটর এবং ভেরিয়েবল অ্যারে ব্যবহার করতে পারেন। অ্যারে ব্যবহারের ক্ষেত্রে, অপারেটরগুলি উপাদানগুলির জন্য প্রয়োগ করা হয়।
সংযোজন সূচক । এটি সংখ্যাসূচক অভিব্যক্তি বা স্ট্রিং ব্যবহার করে ।
expr1 += expr2
উদাহরণ
// Equals to expr1 = expr1 + expr2.
a = 2
b = 3
a += b
// Result: a = 5.
plot(a)
রিটার্ন মানস্ট্রিংয়ের জন্য, এক্সপ্রা 1 এবং এক্সপ্রা 2 এর ক্রমবর্ধমান ফিরে আসে। সংখ্যাগুলির জন্য, পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট মান, বা মানের একটি সিরিজ ফিরে আসে।
নোটআপনি সংখ্যাযুক্ত অ্যারিথমিক অপারেটর এবং ভেরিয়েবল অ্যারে ব্যবহার করতে পারেন। অ্যারে ব্যবহারের ক্ষেত্রে, অপারেটরগুলি উপাদানগুলির জন্য প্রয়োগ করা হয়।
বিয়োগের আইন বা একক নেতিবাচক সংখ্যা।
expr1 - expr2
- expr
রিটার্ন মানপূর্ণসংখ্যা বা ফ্লোটিং পয়েন্টের মান বা মানের একটি অ্যারে ফেরত দেয়ঃ
দ্বিপদী সিলিন্ডার +'ফিরে আসে এক্সপ্রেস 1 বিয়োগ এক্সপ্রেস 2 ।
এক ডলার-
Expr এর নেগেটিভ রিটার্ন করা হয় ।
নোটআপনি সংখ্যাযুক্ত অ্যারিথমিক অপারেটর এবং ভেরিয়েবল অ্যারে ব্যবহার করতে পারেন। অ্যারে ব্যবহারের ক্ষেত্রে, অপারেটরগুলি উপাদানগুলির জন্য প্রয়োগ করা হয়।
বিয়োগ পদ্ধতির নির্দেশক ⇒ সংখ্যাসূচক অভিব্যক্তিতে ব্যবহৃত হয় ⇒
expr1 -= expr2
উদাহরণ
// Equals to expr1 = expr1 - expr2.
a = 2
b = 3
a -= b
// Result: a = -1.
plot(a)
রিটার্ন মানএকটি পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট মান, বা মান একটি সিরিজ।
ব্যতিক্রম । সংখ্যাসূচক অভিব্যক্তির জন্য প্রযোজ্য ।
expr1 / expr2
রিটার্ন মানএকটি পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট মান, বা মান একটি সিরিজ।
অপরিহার্যতা নির্ধারণ করা হয় ।
expr1 /= expr2
উদাহরণ
// Equals to expr1 = expr1 / expr2.
a = 3
b = 3
a /= b
// Result: a = 1.
plot(a)
রিটার্ন মানএকটি পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট মান, বা মান একটি সিরিজ।
ছোট । সংখ্যাসূচক অভিব্যক্তির জন্য প্রযোজ্য ।
expr1 < expr2
রিটার্ন মানবুল মান, বা বুল মানের একটি সিরিজ।
ছোট বা সমান । ⇒ সংখ্যাসূচক অভিব্যক্তিতে ব্যবহৃত হয় ।
expr1 <= expr2
রিটার্ন মানবুল মান, বা বুল মানের একটি সিরিজ।
⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒
expr1 == expr2
রিটার্ন মানবুল মান, বা বুল মানের একটি সিরিজ।
'=>' অপারেটর ব্যবহারকারীর দ্বারা সংজ্ঞায়িত ফাংশন বিবৃতি এবংswitch
আমি এই বিষয়ে খুব উদাসীন।
ফাংশন ঘোষণার সিনট্যাক্স হলঃ
<identifier>([<parameter_name>[=<default_value>]], ...) =>
<local_block>
<function_result>
এক<local_block>
এটি শূন্য বা একাধিক পাইন বাক্যাংশ।<function_result>
এটি একটি ভেরিয়েবল, একটি এক্সপ্রেশন বা একটি উপাদান।
উদাহরণ
// single-line function
f1(x, y) => x + y
// multi-line function
f2(x, y) =>
sum = x + y
sumChange = ta.change(sum, 10)
// Function automatically returns the last expression used in it
plot(f1(30, 8) + f2(1, 3))
নোটআপনি ব্যবহারকারীর নির্দেশিকায় ব্যবহারকারীর সংজ্ঞায়িত ফাংশন সম্পর্কে আরও জানতে পারেন।
√ এর চেয়ে বড় । সংখ্যাসূচক অভিব্যক্তিতে ব্যবহৃত হয় ।
expr1 > expr2
রিটার্ন মানবুল মান, বা বুল মানের একটি সিরিজ।
বড় বা সমান । ⇒ সংখ্যাসূচক অভিব্যক্তিতে ব্যবহৃত ।
expr1 >= expr2
রিটার্ন মানবুল মান, বা বুল মানের একটি সিরিজ।
ত্রিগুণ শর্তাধীন অপারেটর ।
expr1 ? expr2 : expr3
উদাহরণ
// Draw circles at the bars where open crosses close
s2 = ta.cross(open, close) ? math.avg(open,close) : na
plot(s2, style=plot.style_circles, linewidth=2, color=color.red)
// Combination of ?: operators for 'switch'-like logic
c = timeframe.isintraday ? color.red : timeframe.isdaily ? color.green : timeframe.isweekly ? color.blue : color.gray
plot(hl2, color=c)
রিটার্ন মানযদি এক্সপ্রেস 1 সত্য হিসাবে মূল্যায়ন করা হয়, তবে এক্সপ্রেস 2 হয়, অন্যথায় এক্সপ্রেস 3 হয়; শূন্য মান ((0 এবং NaN+, Infinity,-Infinity) মিথ্যা হিসাবে বিবেচিত হয়, অন্য সমস্ত মান সত্য।
নোটআপনি যদি না চান, তাহলে na কে
দেখা হবে
na
সিরিজের উপশিরোনামগুলো↑ এক্সপ্রি১ সিরিজের পূর্ববর্তী মানগুলোতে অ্যাক্সেস প্রদান করা হয়↑ এক্সপ্রি২ হল বিগত k-শ্রেণীর সংখ্যা, যা অবশ্যই সংখ্যাগত হবে↑ ভাসমানগুলোকে নিচে স্থানান্তরিত করা হবে↑
expr1[expr2]
উদাহরণ
// [] can be used to "save" variable value between bars
a = 0.0 // declare `a`
a := a[1] // immediately set current value to the same as previous. `na` in the beginning of history
if high == low // if some condition - change `a` value to another
a := low
plot(a)
রিটার্ন মানএকটি সংখ্যাগত সিরিজ।
দেখা হবে
math.floor
লজিকাল AND ⇒ বুল এক্সপ্রেশন ⇒
expr1 and expr2
রিটার্ন মানবুল মান, বা বুল মানের একটি সিরিজ।
লজিক্যাল OR↑ বুল এক্সপ্রেশন ব্যবহার করা হয়↑
expr1 or expr2
রিটার্ন মানবুল মান, বা বুল মানের একটি সিরিজ।
লজিক্যাল বিপরীত ক্রিয়া ((NOT) ⇒ বুলের অভিব্যক্তিতে প্রযোজ্য।
not expr1
রিটার্ন মানবুল মান, বা বুল মানের একটি সিরিজ।
একটি ভেরিয়েবল বা প্যারামিটারকে স্পষ্টভাবে ঘোষিত করার জন্য ব্যবহৃত "Bool" টাইপের কীওয়ার্ড। "Bool" ভেরিয়েবলের মান হতে পারে true, false বা na।
উদাহরণ
// bool
bool b = true // Same as `b = true`
b := na
plot(b ? open : close)
নোটভেরিয়েবল বিবৃতিতে স্পষ্টভাবে টাইপ উল্লেখ করা ঐচ্ছিক, যদি না এটি na দিয়ে শুরু হয়; টাইপ সিস্টেমের ব্যবহারকারী ম্যানুয়াল পৃষ্ঠায় পাইন টাইপ সম্পর্কে আরও জানুন।
দেখা হবে
var
varip
int
float
color
string
true
false
একটি ভেরিয়েবল বা পরামিতি স্পষ্টভাবে ঘোষণা করার জন্য
উদাহরণ
// int
int i = 14 // Same as `i = 14`
i := na
plot(i)
নোটভেরিয়েবল বিবৃতিতে স্পষ্টভাবে টাইপ উল্লেখ করা ঐচ্ছিক, যদি না এটি na দিয়ে শুরু হয়; টাইপ সিস্টেমের ব্যবহারকারী ম্যানুয়াল পৃষ্ঠায় পাইন টাইপ সম্পর্কে আরও জানুন।
দেখা হবে
var
varip
float
bool
color
string
ভেরিয়েবল বা প্যারামিটারকে স্পষ্টভাবে ঘোষিত করার জন্য ভেরিয়েবল বা প্যারামিটার (ফ্লোট) টাইপের কীওয়ার্ড।
উদাহরণ
// float
float f = 3.14 // Same as `f = 3.14`
f := na
plot(f)
নোটভেরিয়েবলের বিবৃতিতে স্পষ্টভাবে উল্লেখ করা টাইপটি ঐচ্ছিক, যদি না এটি na দিয়ে শুরু হয়।
দেখা হবে
var
varip
int
bool
color
string
একটি স্ট্রিং টাইপের কীওয়ার্ড যা একটি ভেরিয়েবল বা পরামিতিকে স্পষ্টভাবে ঘোষণা করে।
উদাহরণ
// string
string s = "Hello World!" // Same as `s = "Hello world!"`
// string s = na // same as ""
plot(na, title=s)
নোটভেরিয়েবল বিবৃতিতে স্পষ্টভাবে টাইপ উল্লেখ করা ঐচ্ছিক, যদি না এটি na দিয়ে শুরু হয়; টাইপ সিস্টেমের ব্যবহারকারী ম্যানুয়াল পৃষ্ঠায় পাইন টাইপ সম্পর্কে আরও জানুন।
দেখা হবে
var
varip
int
float
bool
str.tostring
str.format
"color" টাইপের কীওয়ার্ড যা একটি ভেরিয়েবল বা প্যারামিটারকে স্পষ্টভাবে ঘোষণা করে।
উদাহরণ
// color
color textColor = color.green
if barstate.islastconfirmedhistory
runtime.log("test", textcolor = textColor)
নোটরঙের অক্ষরগুলির নিম্নলিখিত বিন্যাস রয়েছেঃ #RRGGBB বা #RRGGBBAA;; অক্ষরগুলি 00 থেকে FF পর্যন্ত ষোলমিক মানের প্রতিনিধিত্ব করে ((দশমিক 0 থেকে 255)), যেখানে RR,GG এবং BB দুটি রঙের লাল, সবুজ এবং নীল বিভাজকের মান; AA হল রঙের স্বচ্ছতা (বা আলফা বিভাজক) এর বিকল্প মান, যার মধ্যে 00 অদৃশ্য, FF অস্বচ্ছ); যখন AA সঠিকভাবে সরবরাহ করা হয় না তখন FF ব্যবহার করা হয়;; ষোলমিক অক্ষরগুলি বড় বা ছোট হতে পারে। ভেরিয়েবল বিবৃতিতে স্পষ্টভাবে টাইপ উল্লেখ করা ঐচ্ছিক, যদি না এটি na দিয়ে শুরু হয়; টাইপ সিস্টেমের ব্যবহারকারী ম্যানুয়াল পৃষ্ঠায় পাইন টাইপ সম্পর্কে আরও জানুন।
দেখা হবে
var
varip
int
float
string
color.rgb
color.new
একটি ভেরিয়েবল বা প্যারামিটারকে স্পষ্টভাবে ঘোষিত করার জন্য একটি ভেরিয়েবল বা প্যারামিটার প্রকারের কীওয়ার্ড ব্যবহার করা যেতে পারে।array.new<type>
,array.from
ফাংশনটি অ্যারে অবজেক্ট ((অথবা আইডি) তৈরি করে।
উদাহরণ
// array
array<float> a = na
a := array.new<float>(1, close)
plot(array.get(a, 0))
নোটঅ্যারে অবজেক্টগুলি সর্বদা ক্রমিক ক্রমিক আকারের হয়।
দেখা হবে
var
array.new
array.from
ফাংশন কল করার সময় প্যারামিটার পাস করা যায়, প্যারামিটার নামের মান নির্ধারণ করা যায়, সংশ্লিষ্ট প্যারামিটার অবস্থানে সরাসরি ভেরিয়েবল পাস করা যায়, এবং মিশ্রিত ব্যবহারও সমর্থিত হয়; উদাহরণস্বরূপঃ
plot(close, title="test plot") // 直接传参数 close ;指定参数 title ,赋值字符串"test plot"
প্যারামিটার নামের অ্যাসাইনমেন্টের পরে, আপনি সরাসরি ভেরিয়েবলগুলিকে প্যারামিটার হিসাবে পাস করতে পারবেন না। এর পরেও, প্যারামিটার নামের অ্যাসাইনমেন্টের আকারে লিখতে হবে।
// plot(close, title="test", color.red) // 虽然plot第三个参数是颜色值,但是这样写就会报错
plot(close, title="test", color=color.red) // 正确写法
plot(close, "test", color.red) // 正确写法
পাঠানো হবেtimeframe
প্যারামিটারের সময়কালকে সেকেন্ডে রূপান্তর করা হয়।
timeframe.in_seconds(timeframe)
উদাহরণ
// Get chart timeframe:
i_tf = input.timeframe("1D")
// Convert timeframe to the int value (number of seconds in 1 Day):
tf = timeframe.in_seconds(i_tf)
plot(tf)
রিটার্ন মান
timeframe
ক ক্রিয়াগুলির মধ্যে int এর সংখ্যার জন্য।
প্যারামিটার
timeframe
(simple string) সময়সীমা↑অপশনাল↑ডিফল্ট মান timeframe.period↑নোটজন্যtimeframe
>=
দেখা হবে
input.timeframe
timeframe.period
একটি কোড আইডেন্টিফায়ার তৈরি করুন যা একটি সমতল গড় K স্ট্রিং মানের জন্য অনুরোধ করে।
ticker.heikinashi(symbol)
উদাহরণ
heikinashi_close = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_aapl_60_close = request.security(ticker.heikinashi(syminfo.tickerid), "60", close)
plot(heikinashi_close)
plot(heikinashi_aapl_60_close)
রিটার্ন মান 股票代码的字符串值,可以提供给request.security函数。
প্যারামিটার
symbol
(simple string) পণ্যের কোড আইডেন্টিফায়ার।দেখা হবে
syminfo.tickerid
syminfo.ticker
request.security
বাইরের তথ্যের জন্য অনুরোধ করুন।
request.data(url, attribute)
উদাহরণ
/*backtest
start: 2022-01-26 09:00:00
end: 2024-02-01 15:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
*/
// 图表地址https://www.datadata.cn/queries/a10ea45c-1674-48ef-b414-cc17a7e4a548
var chart_data = "https://www.datadata.cn/api/v1/query/a10ea45c-1674-48ef-b414-cc17a7e4a548/data"
add_investor = request.data(chart_data, "$.add_investor")
idx_price = request.data(chart_data, "$.close_price")
plot(add_investor, "股市新增人口")
plot(idx_price, "股指价格")
// 反指交易
avg_investor = ta.ema(add_investor[1], 30)
if strategy.position_size == 0
if add_investor > avg_investor*1.1
runtime.log("新增人口:", add_investor, "近30天平均:", avg_investor, "#ff0000")
strategy.entry("Enter Short", strategy.short)
else if add_investor < avg_investor*0.9
runtime.log("新增人口:", add_investor, "近30天平均:", avg_investor, "#ff0000")
strategy.entry("Enter Long", strategy.long)
রিটার্ন মানপ্যারামিটারattribute
নির্দিষ্ট ডেটা সিরিজ।
প্যারামিটার
url
(simple string) অনুরোধ করা তথ্য উৎস url, তথ্য উৎস উত্তর তথ্য বিন্যাসে প্রয়োজনীয়তা ((কমপক্ষে time、data বৈশিষ্ট্য অন্তর্ভুক্ত):{"data": [], "schema": ["time", "data"]}
◎ উদাহরণস্বরূপ ডেটা ফরম্যাটের উল্লেখ করা যেতে পারেঃ{
"data": [
[1430438400000, "2015年04月", "{\"add_investor\" : 497.53, \"close_price\" : 4441.655}"],
[1433116800000, "2015年05月", "{\"add_investor\" : 415.87, \"close_price\" : 4611.744}"]
// ...
],
"schema": ["time", "date", "data"]
}
attribute
(simple string) একটি বৈশিষ্ট্য নাম নির্দিষ্ট করে, যা প্রয়োজনীয় তথ্য প্রদান করে; উদাহরণস্বরূপঃ"$.add_investor"
ব্যবহার$.
উপসর্গ হিসাবে, বৈশিষ্ট্য নামগুলি অনুরোধ করা ডেটা উত্সের উত্তর দেওয়া ডেটার মধ্যে ডেটা ক্ষেত্রের বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যপূর্ণঅন্য জাত / রেজোলিউশন প্রয়োজন।
request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)
উদাহরণ
s = request.security(syminfo.tickerid, "D", close) // 1 Day
plot(s)
expr = ta.sma(close, 10)
s1 = request.security(syminfo.tickerid, "240", expr) // 240 Minutes
plot(s1)
// To avoid difference in calculation on history/realtime you can request not latest values and use merge strategy flags as follows:
s2 = request.security(syminfo.tickerid, "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
plot(s2)
f() => [open, high]
[o, h] = request.security(syminfo.tickerid, "D", f())
[l, c] = request.security(syminfo.tickerid, "D", [low, close])
plot((o + h + l + c) / 4)
রিটার্ন মানপ্রয়োজনীয় সিরিজ
প্যারামিটার
symbol
(simple string) পণ্যের কোড।timeframe
(simple string) সময়সীমা. ফাঁকা স্ট্রিংটি চার্টের বর্তমান সময়সীমা হিসেবে ব্যাখ্যা করা হবে.expression
(series int/float/bool/color) request.security থেকে কল করা যায় এবং একটি এক্সপ্রেশন ফেরত দেওয়া যায়। এটি হতে পারে একটি সিরিজ বা এমন একটি সেট যা এমন উপাদান ধারণ করে যা সিরিজে রূপান্তরিত হতে পারে।gaps
(barmerge_gaps) অনুরোধ করা ডেটা একত্রিত করার নীতি ((প্রয়োজন করা হয় যে ডেটা স্বয়ংক্রিয়ভাবে প্রধান সিরিজের ওএইচএলসি ডেটার সাথে একত্রিত হয়) । সম্ভাব্য মানঃ barmerge.gaps_on, barmerge.gaps_off。 barmerge.gaps_on - অনুরোধ করা ডেটা সম্ভাব্য ব্যবধানের সাথে একত্রিত করা হয় ((na মান) ー barmerge.gaps_off - অনুরোধ করা ডেটা ধারাবাহিকভাবে অবিচ্ছিন্নভাবে একত্রিত করা হয়, সমস্ত ব্যবধানগুলি সর্বশেষের আগে বিদ্যমান মান পূরণ করে। ডিফল্ট মানটি হল barmerge.gaps_off。lookahead
(barmerge_lookahead) অনুরোধ করা ডেটা একত্রিত করার নীতি; সম্ভাব্য মানঃ barmerge.lookahead_on, barmerge.lookahead_off; সংস্করণ 3 থেকে ডিফল্ট মানটি হল barmerge.lookahead_off; দয়া করে নোট করুন যে এটি রিয়েল-টাইমে একই কাজ করে, শুধুমাত্র ইতিহাসের ক্ষেত্রে ভিন্ন।ignore_invalid_symbol
(const bool) একটি বিকল্প পরামিতি. যদি নির্দিষ্ট পণ্যটি পাওয়া না যায় তবে ফাংশনের আচরণ নির্ধারণ করেঃ যদি মিথ্যা হয় তবে স্ক্রিপ্টটি থামবে এবং চালানোর সময় ভুল ফিরে আসবে; যদি সত্য হয় তবে ফাংশনটি ফিরে আসবে এবং চালিয়ে যাবে। ডিফল্ট মানটি মিথ্যা।currency
(simple string) পণ্যটির মুদ্রা সম্পর্কিত মান (যেমন OHLC) রূপান্তর করা হয়; তারপর রূপান্তরিত মানের উপর ভিত্তি করে এক্সপ্রেশন ট্যাগ গণনা করা হয়; ব্যবহৃত রূপান্তর হারটি FX_IDC জোড়ার আগের দিনের দৈনিক বিনিময় হার (যেমন গণনা করা হয় তার তুলনায় K লাইন) এর উপর ভিত্তি করে তৈরি করা হয়; অপশনাল; ডিফল্ট মানটি syminfo.currency; সম্ভাব্য মানঃ ISO 4217 ফর্ম্যাটেড মুদ্রা কোড সহ একটি তিন অক্ষরের স্ট্রিং বা currency।* নামকরণ স্পেসের একটি ধ্রুবক, যেমন currency.USD।নোটএই বৈশিষ্ট্যটি ব্যবহার করে পাইনস্ক্রিপ্ট কোডগুলি ইতিহাস রেকর্ড এবং রিয়েল-টাইম ডেটার জন্য বিভিন্ন গণনা করতে পারে।আপনি যদি অনুরোধকৃত পণ্যের জন্য অতিরিক্ত প্যারামিটার নির্দিষ্ট করতে চান, যেমন লেনদেনের সময়সীমা বা সামঞ্জস্যের ধরন, তাহলে আপনি আপনার পণ্যের জন্য একটি নির্দিষ্ট সময়সীমা নির্ধারণ করতে পারেন।您可以使用ticker.new() ফাংশন।
এই ফাংশনটির কাছে পয়েন্ট ডিসঅর্ডার পাস করতে টিক টিকার টিক ভেরিয়েবল ব্যবহার করা যায়নি। আপনি টিক ব্যবহার করতে পারেন।ticker.newভেরিয়েবল বা স্টক কোডের স্ট্রিং উপস্থাপনের ফর্ম, যেমন ভেরিয়েবল AAPL + MSFT * TSLA ভেরিয়েবল;বর্তমানে, একটি স্ক্রিপ্ট সর্বোচ্চ ৪০টি request.security কল করতে পারে।
অনুগ্রহ করে মনে রাখবেন যে এই ভেরিয়েবল/ফাংশনটি ব্যবহার করলে সূচকটি পুনরায় চিত্রিত হতে পারে।
রেজোলিউশনের পরামিতিগুলি নিম্নলিখিত মানগুলির অনুমতি দেয়ঃ
1S, 5S, 15S, 30S - সেকেন্ডের ব্যবধান ((গ্রাফের সময়কাল অনুরোধ করা সময়ের চেয়ে কম বা সমান হতে হবে))
১ থেকে ১৪৪০ মিনিট
১ ডি থেকে ৩৬৫ ডি পর্যন্ত
১ ওয়াট থেকে ৫২ ওয়াটে কয়েক সপ্তাহ
1M থেকে 12M পর্যন্ত কয়েক মাস
দেখা হবে
syminfo.ticker
syminfo.tickerid
timeframe.period
ta.correlation
barmerge.lookahead_off
barmerge.lookahead_on
যদিsource
স্ট্রিং অন্তর্ভুক্তstr
একটি সাব স্ট্রিং, যা true ফেরত দেয়, অন্যথায় false ফেরত দেয়.
str.contains(source, str)
উদাহরণ
// If the current chart is a continuous futures chart, e.g “BTC1!”, then the function will return true, false otherwise.
var isFutures = str.contains(syminfo.tickerid, "!")
plot(isFutures ? 1 : 0)
রিটার্ন মানযদিsource
স্ট্রিং খুঁজেstr
, সত্য, অন্যথায় মিথ্যা ।
প্যারামিটার
source
(series string) উৎস স্ট্রিংstr
(series string) অনুসন্ধান করার জন্য সাবস্ট্রিং ।দেখা হবে
str.pos
str.match
যদিsource
এই স্ট্রিংটিstr
একটি নির্দিষ্ট সাব-স্ট্রিংয়ের শেষে, true ফেরত দেওয়া হয়, অন্যথায় false ফেরত দেওয়া হয়।
str.endswith(source, str)
রিটার্ন মানযদিsource
এই স্ট্রিংটিstr
যদি আপনি একটি স্ট্রিং এর শেষের অংশটি সঠিকভাবে দেখেন তবে এটি সত্য হবে।
প্যারামিটার
source
(series string) উৎস স্ট্রিংstr
(series string) অনুসন্ধান করার জন্য সাবস্ট্রিং ।দেখা হবে
str.startswith
যদিsource
এই স্ট্রিংটিstr
একটি নির্দিষ্ট সাব-স্ট্রিংয়ের শুরুতে, true ফেরত দেওয়া হয়, অন্যথায় false ফেরত দেওয়া হয়।
str.startswith(source, str)
রিটার্ন মানযদিsource
এই স্ট্রিংটিstr
যদি কোন সাব-স্ট্রিং শুরু হয়, তাহলে সেটি হবে true, অন্যথায় false.
প্যারামিটার
source
(series string) উৎস স্ট্রিংstr
(series string) অনুসন্ধান করার জন্য সাবস্ট্রিং ।দেখা হবে
str.endswith
এবং এটি একটি নতুন স্ট্রিং ফেরত দেয়।source
একটি স্ট্রিংয়ের একটি উপ-স্ট্রিং।begin_pos
নির্দিষ্ট সূচকের অক্ষর দিয়ে শুরু হয় এবং এর সাথে প্রসারিত হয়source
স্ট্রিং এর
str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)
উদাহরণ
sym= "EXCHANGE_NAME:SYMBOL_NAME"
pos = str.pos(sym, ":") // Get position of ":" character
tkr= str.substring(sym, pos+1) // "SYMBOL_NAME"
if barstate.islastconfirmedhistory
runtime.log(tkr)
রিটার্ন মানসোর্স স্ট্রিং থেকে বের করা একটি সাব স্ট্রিং ।
প্যারামিটার
source
(series string) এর থেকে সাব স্ট্রিং এর উৎস স্ট্রিং বের করা।begin_pos
(series int) এক্সট্রাক্ট করা সাবস্ট্রিংয়ের শুরু অবস্থান. এটি একচেটিয়া ((এক্সট্রাক্ট করা সাবস্ট্রিংটি সেই অবস্থানের অক্ষরগুলি অন্তর্ভুক্ত করে) ।) ।end_pos
(series int) শেষ অবস্থান. এটি একচেটিয়া. (এক্সট্রাক্ট করা স্ট্রিংটি এই অবস্থানের অক্ষরগুলি অন্তর্ভুক্ত করে না) । অপশনাল। ডিফল্ট মানটি হলsource
স্ট্রিংয়ের দৈর্ঘ্য ।নোটস্ট্রিং সূচক 0 থেকে শুরু হয়; যদিbegin_pos
এর সমানend_pos
, ফাংশনটি একটি ফাঁকা স্ট্রিং ফেরত দেয় ।
দেখা হবে
str.contains
str.pos
str.match
str.tonumber(string)
রিটার্ন মানযদি বৈধ সংখ্যা থাকে তবে এটি স্ট্রিংয়ের ফ্লোটেন্ট টাইপ, অন্যথায় এটি na.
প্যারামিটার
string
(series string) int বা float এর স্ট্রিং উপস্থাপনের ফর্ম।ফরম্যাট স্ট্রিং এবং মানকে ফরম্যাট স্ট্রিংতে রূপান্তর করা হয়। একটি ফরম্যাট স্ট্রিং টেক্সট টেক্সট এবং প্রতিটি ফরম্যাট করা মানের জন্য বড় বন্ধনী {} এর মধ্যে একটি স্থানচ্যুতি থাকতে পারে। প্রতিটি স্থানচ্যুতির মধ্যে একটি সূচক রয়েছে যা এর প্রয়োজনীয় পরামিতিগুলি প্রতিস্থাপন করবে ((০ থেকে শুরু করে) এবং একটি বিকল্প ফর্ম্যাট নির্দেশক। সূচকটি এই পরামিতিটির স্ট্র.ফরম্যাট পরামিতি তালিকায় অবস্থান নির্দেশ করে।
str.format(formatString, arg0, arg1, ...)
উদাহরণ
// The format specifier inside the curly braces accepts certain modifiers:
// - Specify the number of decimals to display:
s1 = str.format("{0,number,#.#}", 1.34) // returns: 1.3
runtime.log(s1)
// - Round a float value to an integer:
s2 = str.format("{0,number,integer}", 1.34) // returns: 1
runtime.log(s2)
// - Display a number in currency:
s3 = str.format("{0,number,currency}", 1.34) // returns: $1.34
runtime.log(s3)
// - Display a number as a percentage:
s4 = str.format("{0,number,percent}", 0.5) // returns: 50%
runtime.log(s4)
// EXAMPLES WITH SEVERAL ARGUMENTS
// returns: Number 1 is not equal to 4
s5 = str.format("Number {0} is not {1} to {2}", 1, "equal", 4)
runtime.log(s5)
// returns: 1.34 != 1.3
s6 = str.format("{0} != {0, number, #.#}", 1.34)
runtime.log(s6)
// returns: 1 is equal to 1, but 2 is equal to 2
s7 = str.format("{0, number, integer} is equal to 1, but {1, number, integer} is equal to 2", 1.34, 1.52)
runtime.log(s7)
// returns: The cash turnover amounted to $1,340,000.00
s8 = str.format("The cash turnover amounted to {0, number, currency}", 1340000)
runtime.log(s8)
// returns: Expected return is 10% - 20%
s9 = str.format("Expected return is {0, number, percent} - {1, number, percent}", 0.1, 0.2)
runtime.log(s9)
রিটার্ন মানফরম্যাটেড স্ট্রিং ।
প্যারামিটার
formatString
(series string) বিন্যাস স্ট্রিং ।arg0, arg1, ...
(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) ফরম্যাট করা মান।নোটস্টাইলের মধ্যে যে কোন অ-উল্লেখিত বন্ধনীকে ভারসাম্য বজায় রাখতে হবে। উদাহরণস্বরূপ,
স্ট্রিং এর অক্ষরের সংখ্যার সাথে সংশ্লিষ্ট পূর্ণসংখ্যা ফেরত দেয়.
str.length(string)
রিটার্ন মানসোর্স স্ট্রিংয়ের অক্ষরের সংখ্যা।
প্যারামিটার
string
(series string) উৎস স্ট্রিংএকটি নতুন স্ট্রিং ফেরত দেয় যেখানে সমস্ত অক্ষরকে ছোট আকারে রূপান্তর করা হয়।
str.lower(source)
রিটার্ন মানসমস্ত অক্ষরকে নতুন ছোট হাতের অক্ষরে রূপান্তরিত করা হয়েছে।
প্যারামিটার
source
(series string) যে স্ট্রিংটি রূপান্তর করা হবে।দেখা হবে
str.upper
একটি নতুন স্ট্রিং ফেরত যা সব অক্ষরকে বড় আকারে রূপান্তরিত করে।
str.upper(source)
রিটার্ন মানসমস্ত অক্ষরকে বড় আকারের নতুন স্ট্রিংয়ে রূপান্তরিত করা হয়েছে।
প্যারামিটার
source
(series string) যে স্ট্রিংটি রূপান্তর করা হবে।দেখা হবে
str.lower
যদি মেলেregex
যদি আপনি একটি সাধারণ অভিব্যক্তি ব্যবহার করেন, তাহলে এটি ফিরে আসবেsource
স্ট্রিং এর নতুন সাব স্ট্রিং, অন্যথায় ফিরে আসে
str.match(source, regex)
উদাহরণ
s = input.string("It's time to sell some EXCHANGE_NAME:SYMBOL_NAME!")
// finding first substring that matches regular expression "[\w]+:[\w]+"
var string tickerid = str.match(s, "[\\w]+:[\\w]+")
if barstate.islastconfirmedhistory
runtime.log(tickerid) // "EXCHAN
উহুওয়ানআপনি কি একই সময়ে একাধিক লেনদেনের জন্য বিএনইউ চুক্তি চান?
হালকা মেঘদয়া করে আমাকে বলুন, পাইন কি একাধিক লেনদেন করতে পারে? অথবা JS এর মতো লেনদেন করতে পারে? ধন্যবাদ।
লিসা ২০২৩১বিস্তারিত তথ্যের জন্য ধন্যবাদ।
শিল্পকলাওহো! এই পাইন স্ক্রিপ্টটি কীভাবে প্ল্যাটফর্মে ওকেএক্সের সিমুলেটর ব্যবহার করে?
শিল্পকলাএটি ট্রেডিংভিউ প্ল্যাটফর্মের কৌশলগুলি সরাসরি ইনভেন্টর প্ল্যাটফর্মে অনুলিপি করার সমান!
ছোট্ট স্বপ্নপাইন ভাষা শুধুমাত্র একক প্রজাতির কৌশলগুলি করতে পারে, তবে বহু-প্রজাতির কৌশলগুলি পাইথন, জাভাস্ক্রিপ্ট, সি ++ এ ডিজাইন করা ভাল।
ছোট্ট স্বপ্নওহ, হ্যাঁ, ওকেএক্স বিশেষ, তাদের অ্যানালগ পরিবেশ এবং বাস্তব পরিবেশ একই ঠিকানা আছে, কিন্তু অন্য কোথাও পার্থক্য করা হয়। সুতরাং একটি বেস ঠিকানা পরিবর্তন করার জন্য একটি উপায় নেই, একটি অ্যানালগ ডিস্ক পরিবর্তন করতে।
হালকা মেঘokx অ্যালগরিদম ডিস্ক ব্যবহার করা যাবে না ।
ছোট্ট স্বপ্নএই বৈচিত্র্যপূর্ণ আর্কিটেকচার সমস্যার সমাধান করা যায় না, কারণ প্রতিটি এক্সচেঞ্জের ইন্টারফেস আলাদা এবং ইন্টারফেস ফ্রিকোয়েন্সি সীমাবদ্ধতাও একই নয়, যা অনেক সমস্যা সৃষ্টি করে।
ছোট্ট স্বপ্নভাল, আপনার পরামর্শের জন্য আপনাকে ধন্যবাদ, এই অনুরোধটি এখানে জানান।
হালকা মেঘএটি JS এর সাথে মিশ্রিত করা ভাল বলে মনে হচ্ছে, যা বিভিন্ন লেনদেনের পদ্ধতিতে আরও ভালভাবে মানিয়ে নিতে পারে।
ট্রেন্ড হান্টারআপনি কি মনে করেন যে, আপনি যদি আপনার পণ্যের জন্য একটি নতুন পণ্যের সন্ধান করতে চান তবে আপনি কি ভবিষ্যতে আরও বিভিন্ন ধরণের পণ্য বিবেচনা করবেন?
ছোট্ট স্বপ্নঅযৌক্তিক ।
হালকা মেঘভাল, ধন্যবাদ ড্রিম।
ছোট্ট স্বপ্নহ্যালো, পিআইএনই ভাষার কৌশলটি সাময়িকভাবে শুধুমাত্র একটি জাতের জন্য কাজ করে।
ছোট্ট স্বপ্নঅযৌক্তিক, আপনার সমর্থনের জন্য ধন্যবাদ।
ছোট্ট স্বপ্নহ্যাঁ।
ছোট্ট স্বপ্নPINE টেমপ্লেট ক্লাস ল্যাবরেটরি, যার প্যারামিটারে বিনিময় স্থানান্তর বেস ঠিকানা সেট করা যেতে পারে। নথির শুরুঃ PINE ভাষা বিনিময় ক্লাস ল্যাবরেটরি টেমপ্লেট প্যারামিট।