[TOC]
ٹریڈنگ ویو کے باقاعدہ استعمال کرنے والے تاجروں کو معلوم ہے کہ ٹریڈنگ ویو دوسرے پلیٹ فارمز پر پیغامات کو آگے بڑھا سکتا ہے۔ اس سے قبل لائبریری میں ٹریڈنگ ویو کی سگنل کی ایک پالیسی بھی شائع کی گئی تھی ، جس میں پیغام کا مواد درخواست کے یو آر ایل میں لکھا گیا تھا ، جو کچھ لچکدار نہیں تھا۔ اس مضمون میں ہم نے ٹریڈنگ ویو سگنل پر عملدرآمد کی حکمت عملی کو دوبارہ ڈیزائن کرنے کے لئے ایک طریقہ استعمال کیا ہے۔
اس مضمون کے عنوان اور اس کی وضاحت کو شاید نئے طالب علموں نے کچھ عجیب سمجھا ہو، لیکن اس سے کوئی فرق نہیں پڑتا۔ آئیے پہلے ضروریات کے منظرنامے اور اصولوں کو واضح کرتے ہیں۔ آپ کو بتائیں کہ میں کس کے بارے میں بات کر رہا ہوں۔
1، مطالبہ کا منظر نامہ: یہ کام کرنے کے لئے آدھے دن کے بارے میں کیا ہے؟ اس کا مطلب یہ ہے کہ ہمارے پاس ٹریڈنگ ویو میں بہت سارے اشارے ، حکمت عملی ، کوڈ وغیرہ ہیں جن میں سے ہم منتخب کرسکتے ہیں ، جو ٹریڈنگ ویو میں براہ راست چل سکتے ہیں ، لائنیں کھینچ سکتے ہیں ، حساب لگاسکتے ہیں ، تجارتی سگنل دکھا سکتے ہیں ، وغیرہ۔ اور ٹریڈنگ ویو میں حقیقی وقت کی قیمت کا ڈیٹا ہے ، بہت سارے K لائن ڈیٹا مختلف اشارے کے حساب کتاب کے لئے آسان ہے۔ ٹریڈنگ ویو پر اسکرپٹ کوڈ کو PINE زبان کہا جاتا ہے ، صرف ایک چیز جو زیادہ آسان نہیں ہے وہ یہ ہے کہ ٹریڈنگ ویو میں حقیقی تجارت کریں۔ اگرچہ ایف ایم زیڈ میں پیین زبان کی حمایت کی گئی ہے ، لیکن یہ بھی چل سکتی ہے۔
2، اصول:
اس منصوبے میں چار موضوعات شامل ہیں جن میں سے کچھ یہ ہیں:
نمبر | موضوع | تفصیل |
---|---|---|
1 | ٹریڈنگ ویو (تصویر میں ٹریڈنگ ویو) | ٹریڈنگ ویو پر پائن اسکرپٹ چل رہا ہے جو FMZ کے توسیعی API انٹرفیس تک رسائی حاصل کرنے کے لئے سگنل بھیج سکتا ہے |
2 | ایف ایم زیڈ پلیٹ فارم (تصویر میں ایف ایم زیڈ پلیٹ فارم (ویب سائٹ)) | ڈسک کا انتظام، ڈسک کے صفحے پر انٹرایکٹو ہدایات بھیجنے کے قابل، اور ایک توسیع API انٹرفیس کے ذریعے FMZ پلیٹ فارم کو ڈسک کی پالیسیوں کے لئے میزبانوں کو انٹرایکٹو ہدایات بھیجنے کے قابل |
3 | مینیجر سافٹ ویئر پر اصلی ڈسک پروگرام (تصویر میں ایف ایم زیڈ حکمت عملی روبوٹ) | ٹریڈنگ ویو سگنل پر عملدرآمد کی حکمت عملی اصل میں چل رہا ہے |
4 | ایکسچینج (تصویر میں exchange) | ایکسچینج جس میں فلیٹ پر ترتیب دیا گیا ہے، جس میں منتظم پر فلیٹ پر عملدرآمد براہ راست درخواست کی درخواست کرنے والے ایکسچینج کو بھیجتا ہے |
اس کے علاوہ ، آپ کو اس کھیل کو کھیلنے کے لئے کچھ چیزیں کرنے کی ضرورت ہوگی: 1، TradingView پر چلنے والا اسکرپٹ، FMZ کے توسیع API انٹرفیس پر سگنل کی درخواست بھیجنے کے لئے ذمہ دار ہے، جس کے لئے TradingView اکاؤنٹ کو کم از کم PRO ممبر ہونا ضروری ہے۔ 2، ایف ایم زیڈ پر منتظم پروگرام کی تعیناتی کے لئے ، اس قسم کا پروگرام درکار ہے جو ایکسچینج انٹرفیس (جیسے سنگاپور ، جاپان ، ہانگ کانگ وغیرہ میں سرورز) تک رسائی حاصل کرسکتا ہے۔ 3، ایف ایم زیڈ پر جب ٹریڈنگ ویو سگنل بھیجے جاتے ہیں تو ، تبادلہ کے API KEY کو ترتیب دیا جاتا ہے جس پر عملدرآمد کیا جانا چاہئے۔ 4، آپ کو "ٹریڈنگ ویو سگنل پر عملدرآمد کی حکمت عملی" کی ضرورت ہے، جو کہ اس مضمون کا بنیادی موضوع ہے۔
پچھلے ورژن میں "TradingView سگنل ایگزیکیوشن پالیسی" کا ڈیزائن زیادہ لچکدار نہیں تھا، پیغام صرف ٹریڈنگ ویو کی طرف سے بھیجے گئے درخواست کے یو آر ایل میں لکھا جا سکتا تھا۔ اگر ہم چاہتے ہیں کہ ٹریڈنگ ویو پیغام کو آگے بڑھانے کے لئے جسم میں کچھ متغیر معلومات لکھیں تو اس وقت یہ کام نہیں کرتا تھا۔ مثال کے طور پر ٹریڈنگ ویو پر پیغام کا مواد:
پھر ٹریڈنگ ویو میں یہ ترتیب دی جاسکتی ہے کہ پیغام کو درخواست کے جسم میں لکھا جائے اور ایف ایم زیڈ کے توسیعی API انٹرفیس کو بھیجا جائے۔
FMZ میں ایک وسیع پیمانے پر API انٹرفیس میں، ہم استعمال کریں گےCommandRobot
اس انٹرفیس کو عام طور پر اس طرح کہا جاتا ہے:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
یہ درخواست یو آر ایلquery
اندرونیaccess_key
اورsecret_key
ایف ایم زیڈ پلیٹ فارم کی توسیعAPI KEY
یہاں ڈیمو ہے، تو اس کے لئے مقرر کیا جاتا ہےxxx
اورyyyy
اس صفحے پر: "کیے" کا استعمال کرتے ہوئے ، آپ کو یہ معلوم ہونا چاہئے کہ کیے کو کیسے بنایا گیا ہے۔https://www.fmz.com/m/account
اس کے علاوہ ، آپ کو یہ بھی بتانا چاہئے کہ آپ نے اس کے بارے میں کیا سوچا ہے۔
واپس اصل موضوع پر، جاری رکھیںCommandRobot
انٹرفیس کا مسئلہ۔ اگر آپ کو رسائی کی ضرورت ہو توCommandRobot
انٹرفیس، درخواست میںmethod
اس کے بعد، آپ کو اس کا استعمال کرنے کی ضرورت ہے:CommandRobot
。CommandRobot
اس انٹرفیس کا کام ایف ایم زیڈ پلیٹ فارم کے ذریعے کسی آئی ڈی کی ڈسک پر ایک انٹرایکٹو پیغام بھیجنا ہے ، لہذا پیرامیٹرزargs
اس میں ڈسک کا آئی ڈی اور پیغام شامل ہے، اور اوپر کی درخواست یو آر ایل مثال یہ ہے کہ آئی ڈی کو186515
ایک بار جب آپ نے اپنے کمپیوٹر کو دوبارہ شروع کیا تو آپ کو یہ معلوم ہونا چاہئے کہ آپ کو کیا کرنا ہے.ok12345
。
اس سے پہلے FMZ API میں توسیع کے لئے کمانڈ روبوٹ انٹرفیس سے اس طرح کی درخواست کی گئی تھی ، پیغام صرف مرنے کے لئے لکھا جاسکتا تھا جیسے کہ اوپر کی مثال میں۔ok12345
اگر پیغام مطلوبہ باڈی میں ہے تو ، آپ کو دوسرا طریقہ استعمال کرنا ہوگا:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[130350,+""]
اس طرح کی درخواستوں کو ایف ایم زیڈ پلیٹ فارم کے ذریعے درخواست میں موجود جسم کے مواد کو بطور انٹرایکٹو پیغام آئی ڈی کو بھیجا جاسکتا ہے۔130350
اگر ٹریڈنگ ویو پر میسج سیٹ ہو:{"close": {{close}}, "name": "aaa"}
تو آئی ڈی ہے130350
اس کا مطلب یہ ہے کہ آپ کے کمپیوٹر پر موجود تمام ڈیوائسز پر آپ کو ایک انٹریکشن موصول ہوتا ہے:{"close": 39773.75, "name": "aaa"}
جب ٹریڈنگ ویو سگنل پر عملدرآمد کرنے والی پالیسی کو انٹرایکٹو ہدایات موصول ہوتی ہیں تو ، ٹریڈنگ ویو کے ذریعہ بھیجے گئے ہدایات کو صحیح طریقے سے سمجھنے کے ل the ، پہلے سے پیغام کی شکل پر اتفاق کرنا ضروری ہے:
{
Flag: "45M103Buy", // 标识,可随意指定
Exchange: 1, // 指定交易所交易对
Currency: "BTC_USDT", // 交易对
ContractType: "swap", // 合约类型,swap,quarter,next_quarter,现货填写spot
Price: "{{close}}", // 开仓或者平仓价格,-1为市价
Action: "buy", // 交易类型[ buy:现货买入 , sell:现货卖出 , long:期货做多 , short:期货做空 , closesell:期货买入平空 , closebuy:期货卖出平多]
Amount: "0", // 交易量
}
یہ حکمت عملی کثیر تبادلے کی ساخت کے لئے ڈیزائن کی گئی ہے ، لہذا اس حکمت عملی پر متعدد تبادلے کے اشیاء کو تشکیل دیا جاسکتا ہے ، یعنی متعدد مختلف اکاؤنٹس کے لئے نیچے کی کارروائیوں کو کنٹرول کیا جاسکتا ہے۔ صرف سگنل کی ساخت میں ایکسچینج کے ذریعہ مخصوص کردہ تبادلے کے ساتھ ، سیٹ 1 اس سگنل کو اس تبادلے کے اکاؤنٹ کے مطابق عمل کرنے کے لئے ہے جس میں پہلا شامل کردہ تبادلے کا اعتراض ہے۔ اگر آپریشن فوری طور پر معاہدہ کی قسم کی ترتیب کے لئے ہے تو ، مستقبل میں مخصوص اسپاٹ معاہدے لکھیں ، جیسے مستقل معاہدہ تبادلہ ؛ مارکیٹ کی قیمتوں میں منتقلی -1۔
اس کے بعد آپ کو حکمت عملی کا کوڈ ڈیزائن کرنے کی ضرورت ہے، مکمل حکمت عملی کا کوڈ:
//信号结构
var Template = {
Flag: "45M103Buy", // 标识,可随意指定
Exchange: 1, // 指定交易所交易对
Currency: "BTC_USDT", // 交易对
ContractType: "swap", // 合约类型,swap,quarter,next_quarter,现货填写spot
Price: "{{close}}", // 开仓或者平仓价格,-1为市价
Action: "buy", // 交易类型[ buy:现货买入 , sell:现货卖出 , long:期货做多 , short:期货做空 , closesell:期货买入平空 , closebuy:期货卖出平多]
Amount: "0", // 交易量
}
var BaseUrl = "https://www.fmz.com/api/v1" // FMZ扩展API接口地址
var RobotId = _G() // 当前实盘ID
var Success = "#5cb85c" // 成功颜色
var Danger = "#ff0000" // 危险颜色
var Warning = "#f0ad4e" // 警告颜色
var buffSignal = []
// 校验信号消息格式
function DiffObject(object1, object2) {
const keys1 = Object.keys(object1)
const keys2 = Object.keys(object2)
if (keys1.length !== keys2.length) {
return false
}
for (let i = 0; i < keys1.length; i++) {
if (keys1[i] !== keys2[i]) {
return false
}
}
return true
}
function CheckSignal(Signal) {
Signal.Price = parseFloat(Signal.Price)
Signal.Amount = parseFloat(Signal.Amount)
if (Signal.Exchange <= 0 || !Number.isInteger(Signal.Exchange)) {
Log("交易所最小编号为1,并且为整数", Danger)
return
}
if (Signal.Amount <= 0 || typeof(Signal.Amount) != "number") {
Log("交易量不能小于0,并且为数值类型", typeof(Signal.Amount), Danger)
return
}
if (typeof(Signal.Price) != "number") {
Log("价格必须是数值", Danger)
return
}
if (Signal.ContractType == "spot" && Signal.Action != "buy" && Signal.Action != "sell") {
Log("指令为操作现货,Action错误,Action:", Signal.Action, Danger)
return
}
if (Signal.ContractType != "spot" && Signal.Action != "long" && Signal.Action != "short" && Signal.Action != "closesell" && Signal.Action != "closebuy") {
Log("指令为操作期货,Action错误,Action:", Signal.Action, Danger)
return
}
return true
}
function commandRobot(url, accessKey, secretKey, robotId, cmd) {
// https://www.fmz.com/api/v1?access_key=xxx&secret_key=xxx&method=CommandRobot&args=[xxx,+""]
url = url + '?access_key=' + accessKey + '&secret_key=' + secretKey + '&method=CommandRobot&args=[' + robotId + ',+""]'
var postData = {
method:'POST',
data:cmd
}
var headers = "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36\nContent-Type: application/json"
var ret = HttpQuery(url, postData, "", headers)
Log("模拟TradingView的webhook请求,发送用于测试的POST请求:", url, "body:", cmd, "应答:", ret)
}
function createManager() {
var self = {}
self.tasks = []
self.process = function() {
var processed = 0
if (self.tasks.length > 0) {
_.each(self.tasks, function(task) {
if (!task.finished) {
processed++
self.pollTask(task)
}
})
if (processed == 0) {
self.tasks = []
}
}
}
self.newTask = function(signal) {
// {"Flag":"45M103Buy","Exchange":1,"Currency":"BTC_USDT","ContractType":"swap","Price":"10000","Action":"buy","Amount":"0"}
var task = {}
task.Flag = signal["Flag"]
task.Exchange = signal["Exchange"]
task.Currency = signal["Currency"]
task.ContractType = signal["ContractType"]
task.Price = signal["Price"]
task.Action = signal["Action"]
task.Amount = signal["Amount"]
task.exchangeIdx = signal["Exchange"] - 1
task.pricePrecision = null
task.amountPrecision = null
task.error = null
task.exchangeLabel = exchanges[task.exchangeIdx].GetLabel()
task.finished = false
Log("创建任务:", task)
self.tasks.push(task)
}
self.getPrecision = function(n) {
var precision = null
var arr = n.toString().split(".")
if (arr.length == 1) {
precision = 0
} else if (arr.length == 2) {
precision = arr[1].length
}
return precision
}
self.pollTask = function(task) {
var e = exchanges[task.exchangeIdx]
var name = e.GetName()
var isFutures = true
e.SetCurrency(task.Currency)
if (task.ContractType != "spot" && name.indexOf("Futures_") != -1) {
// 非现货,则设置合约
e.SetContractType(task.ContractType)
} else if (task.ContractType == "spot" && name.indexOf("Futures_") == -1) {
isFutures = false
} else {
task.error = "指令中的ContractType与配置的交易所对象类型不匹配"
return
}
var depth = e.GetDepth()
if (!depth || !depth.Bids || !depth.Asks) {
task.error = "订单薄数据异常"
return
}
if (depth.Bids.length == 0 && depth.Asks.length == 0) {
task.error = "盘口无订单"
return
}
_.each([depth.Bids, depth.Asks], function(arr) {
_.each(arr, function(order) {
var pricePrecision = self.getPrecision(order.Price)
var amountPrecision = self.getPrecision(order.Amount)
if (Number.isInteger(pricePrecision) && !Number.isInteger(self.pricePrecision)) {
self.pricePrecision = pricePrecision
} else if (Number.isInteger(self.pricePrecision) && Number.isInteger(pricePrecision) && pricePrecision > self.pricePrecision) {
self.pricePrecision = pricePrecision
}
if (Number.isInteger(amountPrecision) && !Number.isInteger(self.amountPrecision)) {
self.amountPrecision = amountPrecision
} else if (Number.isInteger(self.amountPrecision) && Number.isInteger(amountPrecision) && amountPrecision > self.amountPrecision) {
self.amountPrecision = amountPrecision
}
})
})
if (!Number.isInteger(self.pricePrecision) || !Number.isInteger(self.amountPrecision)) {
task.err = "获取精度失败"
return
}
e.SetPrecision(self.pricePrecision, self.amountPrecision)
// buy:现货买入 , sell:现货卖出 , long:期货做多 , short:期货做空 , closesell:期货买入平空 , closebuy:期货卖出平多
var direction = null
var tradeFunc = null
if (isFutures) {
switch (task.Action) {
case "long":
direction = "buy"
tradeFunc = e.Buy
break
case "short":
direction = "sell"
tradeFunc = e.Sell
break
case "closesell":
direction = "closesell"
tradeFunc = e.Buy
break
case "closebuy":
direction = "closebuy"
tradeFunc = e.Sell
break
}
if (!direction || !tradeFunc) {
task.error = "交易方向错误:" + task.Action
return
}
e.SetDirection(direction)
} else {
if (task.Action == "buy") {
tradeFunc = e.Buy
} else if (task.Action == "sell") {
tradeFunc = e.Sell
} else {
task.error = "交易方向错误:" + task.Action
return
}
}
var id = tradeFunc(task.Price, task.Amount)
if (!id) {
task.error = "下单失败"
}
task.finished = true
}
return self
}
var manager = createManager()
function HandleCommand(signal) {
// 检测是否收到交互指令
if (signal) {
Log("收到交互指令:", signal) // 收到交互指令,打印交互指令
} else {
return // 没有收到时直接返回,不做处理
}
// 检测交互指令是否是测试指令,测试指令可以由当前策略交互控件发出来进行测试
if (signal.indexOf("TestSignal") != -1) {
signal = signal.replace("TestSignal:", "")
// 调用FMZ扩展API接口,模拟Trading View的webhook,交互按钮TestSignal发送的消息:{"Flag":"45M103Buy","Exchange":1,"Currency":"BTC_USDT","ContractType":"swap","Price":"10000","Action":"buy","Amount":"0"}
commandRobot(BaseUrl, FMZ_AccessKey, FMZ_SecretKey, RobotId, signal)
} else if (signal.indexOf("evalCode") != -1) {
var js = signal.split(':', 2)[1]
Log("执行调试代码:", js)
eval(js)
} else {
// 处理信号指令
objSignal = JSON.parse(signal)
if (DiffObject(Template, objSignal)) {
Log("接收到交易信号指令:", objSignal)
buffSignal.push(objSignal)
// 检查交易量、交易所编号
if (!CheckSignal(objSignal)) {
return
}
// 创建任务
manager.newTask(objSignal)
} else {
Log("指令无法识别", signal)
}
}
}
function main() {
Log("WebHook地址:", "https://www.fmz.com/api/v1?access_key=" + FMZ_AccessKey + "&secret_key=" + FMZ_SecretKey + "&method=CommandRobot&args=[" + RobotId + ',+""]', Danger)
Log("交易类型[ buy:现货买入 , sell:现货卖出 , long:期货做多 , short:期货做空 , closesell:期货买入平空 , closebuy:期货卖出平多]", Danger)
Log("指令模板:", JSON.stringify(Template), Danger)
while (true) {
try {
// 处理交互
HandleCommand(GetCommand())
// 处理任务
manager.process()
if (buffSignal.length > maxBuffSignalRowDisplay) {
buffSignal.shift()
}
var buffSignalTbl = {
"type" : "table",
"title" : "信号记录",
"cols" : ["Flag", "Exchange", "Currency", "ContractType", "Price", "Action", "Amount"],
"rows" : []
}
for (var i = buffSignal.length - 1 ; i >= 0 ; i--) {
buffSignalTbl.rows.push([buffSignal[i].Flag, buffSignal[i].Exchange, buffSignal[i].Currency, buffSignal[i].ContractType, buffSignal[i].Price, buffSignal[i].Action, buffSignal[i].Amount])
}
LogStatus(_D(), "\n", "`" + JSON.stringify(buffSignalTbl) + "`")
Sleep(1000 * SleepInterval)
} catch (error) {
Log("e.name:", error.name, "e.stack:", error.stack, "e.message:", error.message)
Sleep(1000 * 10)
}
}
}
حکمت عملی کے پیرامیٹرز اور تعامل:
ٹریڈنگ ویو سگنل پر عملدرآمد کی حکمت عملی مکمل حکمت عملی کا پتہ:https://www.fmz.com/strategy/392048
حکمت عملی کو چلانے سے پہلے تبادلہ آبجیکٹ کو ترتیب دینے کے لئے ، حکمت عملی کے پیرامیٹرز میں "FMZ پلیٹ فارم کی رسائی کی کلید" اور "FMZ پلیٹ فارم کی خفیہ کلید" دونوں پیرامیٹرز کو درست کریں ، غلط نہیں لگائیں۔
یہ مندرجہ ذیل پرنٹ کرتا ہے: ٹریڈنگ ویو میں ویب ہک ایڈریس ، معاون ایکشن اسٹریپٹس ، پیغام کی شکل۔ اہم ویب ہک ایڈریس:
https://www.fmz.com/api/v1?access_key=22903bab96b26584dc5a22522984df42&secret_key=73f8ba01014023117cbd30cb9d849bfc&method=CommandRobot&args=[505628,+""]
ٹریڈنگ ویو میں اس کی جگہ پر لکھے گئے پیسٹ کو براہ راست کاپی اور پیسٹ کریں۔
اگر آپ ٹریڈنگ ویو میں سگنل بھیجنے کا نمونہ بنانا چاہتے ہیں تو ، آپ اسٹریٹجک انٹرایکشن پر ٹیسٹ سگنل بٹن پر کلک کرسکتے ہیں۔
یہ پالیسی اپنے آپ کو ایک درخواست بھیجتی ہے (مثال کے طور پر ٹریڈنگ ویو سگنل کی درخواست بھیجتی ہے) ، FMZ کے توسیع API انٹرفیس کو کال کرتی ہے اور پالیسی کو خود کو ایک پیغام بھیجتی ہے:
{"Flag":"45M103Buy","Exchange":1,"Currency":"BTC_USDT","ContractType":"swap","Price":"16000","Action":"buy","Amount":"1"}
اس وقت کی پالیسی کو ایک اور بات چیت کا پیغام موصول ہوتا ہے اور اسے انجام دیتا ہے:
اس کے علاوہ ، آپ کو اپنے صارفین کو بھی اس کے بارے میں بتانے کی ضرورت ہے۔
ٹریڈنگ ویو کو استعمال کرنے کے لئے ٹریڈنگ ویو اکاؤنٹ کی ضرورت ہوتی ہے۔ یہ پرو لیول ہے ، اس سے پہلے کچھ پیشگی معلومات ہیں جن کی وضاحت کی ضرورت ہے۔
مثال کے طور پر ایک سادہ پین اسکرپٹ (TradingView پر تلاش کرنے کے لئے ایک معمولی ترمیم)
//@version=5
strategy("Consecutive Up/Down Strategy", overlay=true)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
price = close
ups = 0.0
ups := price > price[1] ? nz(ups[1]) + 1 : 0
dns = 0.0
dns := price < price[1] ? nz(dns[1]) + 1 : 0
if (not barstate.ishistory and ups >= consecutiveBarsUp and strategy.position_size <= 0)
action = strategy.position_size < 0 ? "closesell" : "long"
strategy.order("ConsUpLE", strategy.long, 1, comment=action)
if (not barstate.ishistory and dns >= consecutiveBarsDown and strategy.position_size >= 0)
action = strategy.position_size > 0 ? "closebuy" : "short"
strategy.order("ConsDnSE", strategy.short, 1, comment=action)
1، PINE اسکرپٹ اسکرپٹ کے ساتھ کچھ معلومات شامل کر سکتا ہے جب اسکرپٹ مندرجہ ذیل ہدایات جاری کرتا ہے
ذیل میں وہ جگہیں ہیں جو میں نے اپنے الارم میں "پیغامات" کے باکس میں درج کی ہیں۔{{strategy.order.contracts}}
اس کے بعد ، جب آرڈر ٹرگر ہوتا ہے تو ، ایک پیغام بھیجا جاتا ہے (بشمول الرٹ کی ترتیبات ، ای میل بھیجنے ، ویب ہک یو آر ایل کی درخواست ، پمپ ونڈو وغیرہ) جس میں اس آرڈر پر عملدرآمد کی تعداد شامل ہوتی ہے۔
{{strategy.position_size}}
- پائن میں ایک ہی مطلوبہ الفاظ کی قدر واپس کرتا ہے ، یعنی موجودہ پوزیشن کا سائز۔{{strategy.order.action}}
- اسکرین خریدنے یا فروخت کرنے کے لئے کمانڈ کی واپسی کی سٹرنگ۔{{strategy.order.contracts}}
- آرڈر پر عملدرآمد کے معاہدوں کی تعداد واپس کریں۔{{strategy.order.price}}
- آرڈر پر عملدرآمد کی قیمت واپس کریں۔{{strategy.order.id}}
- آرڈر کا آئی ڈی واپس کرتا ہے جو عمل میں آیا ہے ((اسٹریج کی پہلی شرط کے طور پر استعمال کیا جاتا ہے جس میں آرڈر پیدا کرنے والے فنکشن کالز میں سے ایک میں: حکمت عملی.انٹری ، حکمت عملی.خریداری یا حکمت عملی.آرڈر) ؛){{strategy.order.comment}}
- آرڈر پر تبصرہ واپس کرتا ہے جو عمل میں آیا ہے ((سٹرنگ جو آرڈر بنانے والے فنکشن کالز میں سے ایک میں تبصرہ پیرامیٹر میں استعمال ہوتی ہے:strategy.entry،strategy.exit、 یا strategy.order) 、 اگر کوئی تبصرہ نہیں دیا گیا ہے تو ، strategy.order.id کی قیمت استعمال کی جائے گی۔{{strategy.order.alert_message}}
- alert_message پیرامیٹر کی قدر لوٹاتا ہے، جو پالیسی کے پائن کوڈ میں استعمال کیا جا سکتا ہے جب کسی فنکشن کو بلایا جائے جس کا حکم دیا جاتا ہے:strategy.entry،strategy.exit、 یا strategy.order صرف پائن v4 میں اس کی حمایت کرتا ہے۔{{strategy.market_position}}
- موجودہ ہولڈنگ کی حکمت عملی کو سٹرنگ کی شکل میں لوٹایا گیا ہے: {{strategy.market_position_size}}
- موجودہ پوزیشن کا سائز مطلق قدر (یعنی غیر منفی) کے طور پر لوٹاتا ہے۔{{strategy.prev_market_position}}
- سٹرنگ کی شکل میں واپسی کی حکمت عملی کے پچھلے ہولڈنگ: {{strategy.prev_market_position_size}}
- مطلق قدر (یعنی غیر منفی) کی شکل میں پچھلی پوزیشن کا سائز لوٹاتا ہے۔
2، "ٹریڈنگ ویو سگنل پر عملدرآمد کی حکمت عملی" کے ساتھ پیغام کی تشکیل
{
"Flag":"{{strategy.order.id}}",
"Exchange":1,
"Currency":"BTC_USDT",
"ContractType":"swap",
"Price":"-1",
"Action":"{{strategy.order.comment}}",
"Amount":"{{strategy.order.contracts}}"
}
3، TradingView کو اس PINE اسکرپٹ کے مطابق چلتے وقت سگنل دینے کے لئے، TradingView میں اس اسکرپٹ کو لوڈ کرتے وقت الارم سیٹ کرنے کی ضرورت ہے۔
جب ٹریڈنگ ویو پر PINE اسکرپٹ ٹریڈنگ کی کارروائی شروع کرتا ہے تو ، ویب ہوک یو آر ایل کی درخواست بھیج دی جاتی ہے۔
FMZ کی اصلی ڈسک اس سگنل کو انجام دے گی۔
سیب کی ویڈیو:https://www.ixigua.com/7172134169580372513?utm_source=xiguastudioبی اسٹیشن:https://www.bilibili.com/video/BV1BY411d7c6/معلوم ہے:https://www.zhihu.com/zvideo/1581722694294487040
مضمون میں موجود کوڈ صرف حوالہ کے لئے ہے اور اسے اپنے آپ سے ایڈجسٹ یا توسیع دے سکتے ہیں۔
q102133/اپ لوڈ/اثاثہ/1979ae34cdbe7673f64b5.jpg
q102133مونگو، یہ غلط چل رہا ہے
N95منگو، ہم نے ایک ڈسک ماحولیاتی آپریشن کو کیسے چلانے کے لئے چاہتے ہیں؟ ہم سگنل کی درستگی کی جانچ کرنا چاہتے ہیں.
گووہوابراہ کرم مجھے ایک سوال بتائیں، کیا ٹریڈنگ ویو کے الرٹ پیغامات میں پچھلے آرڈر کے پیغامات شامل ہیں؟ میں چاہتا ہوں کہ آخری آرڈر منافع بخش ہو یا نقصان دہ۔ اگر آخری آرڈر نقصان دہ ہے تو روبوٹ آرڈر نہیں کرے گا جب تک کہ آخری آرڈر منافع بخش نہ ہو کیا آپ یہ کر سکتے ہیں؟ شکریہ!
13811047519/upload/asset/2a5a9fa2b97561c42c027.jpg براہ کرم خدا ، اس غلطی کا کیا مطلب ہے اور اسے کیسے ختم کیا جائے؟
بہترین حالاتمیں نے 6 اور 7 اکاؤنٹس کو اس سگنل کے ساتھ تجارت کرنے کے لئے شامل کیا ہے ، لیکن اس وقت یہ بہت بڑا ہے ، ایک ایکسچینج اکاؤنٹ کا سگنل مکمل ہونے کے بعد ہی اگلے اکاؤنٹ کا سگنل چلتا ہے ، یہ سلسلہ وار عمل ہے ، کیا کوئی طریقہ ہے کہ ہم آہنگ تجارت کے سگنل کو بیک وقت انجام دیں؟ میں نے دیکھا کہ اس میں ایک وقفہ وقت کی ترتیب ہے ، مجھے نہیں معلوم کہ 0 سیکنڈ میں تبدیل کیا گیا ہے ، کیا ہم آہنگ تجارت ممکن ہے؟
ایجاد کاروں کی مقدار - خوابچین میں ، آپ کو اپنے صارفین کو ان کی اپنی زبانوں میں ترجمہ کرنے کی ضرورت نہیں ہے۔
ایجاد کاروں کی مقدار - خوابچین میں ایک نیا چینل ہے جس میں چینی زبان میں ایک پیغام لکھا گیا ہے۔
N95اگر آپ کے پاس کوئی اکاؤنٹ ہے تو ، براہ کرم ہمیں بتائیں کہ کیا آپ کے پاس اکاؤنٹ کے بارے میں معلومات کے ساتھ کوئی پالیسی ہے؟ براہ کرم ہمیں بتائیں کہ کیا آپ کے اکاؤنٹ کے بارے میں کوئی پالیسی ہے؟
ایجاد کاروں کی مقدار - خوابیہ ایک عوامی پالیسی کا جائزہ ہے ، جو صفحے کو خود بخود شامل کرتا ہے۔
N95آپ کا شکریہ بھائی ، میں نے ٹیسٹ کیا ہے ، لیکن تجارت کے بعد کوئی حکمت عملی نہیں ہے درجہ بندی کا جائزہ لیں ، کیا آپ کو خود بخود شامل کرنے کی ضرورت ہے
ایجاد کاروں کی مقدار - خوابOKX انٹرفیس ، OKX کے ڈسک ٹیسٹ ماحول میں تبدیل کیا جاسکتا ہے ، جس میں تبادلہ استعمال کیا جاسکتا ہے۔ IO (("simulate" ، true) ، یا ڈسک ماحول میں تبدیل کیا جاسکتا ہے۔
گووہواشکریہ جواب کے لیے، میرے پاس دو سوالات ہیں: 1، میں تھوڑا سا نہیں سمجھتا کہ fmz خود پائن اسکرپٹ لکھ سکتا ہے، کیوں اس مضمون میں بھی fmz کو ٹریڈنگ ویو کے ذریعے الرٹ بھیجنے کے لئے ہے اور پھر اس پر عملدرآمد اور پھر تجارت؟ 2، مجھے اب ایک اچھی حکمت عملی مل گئی ہے ، لیکن کوئی سورس کوڈ استعمال کرنے کا حق نہیں ہے ، میں نے اپنے اوپر بیان کردہ طریقہ کار کے ذریعہ غلطی سے بچنا چاہتا ہوں ، آپ نے جو کہا وہ میں نے بھی شامل کیا ہے ، لیکن یہ اشارہ ایک خریداری کی قیمت کی طرح لگتا ہے ، اس کے بعد ایف ایم زیڈ میں اس قیمت کے ذریعہ منافع یا نقصان کا فیصلہ کرنے کا طریقہ ، مجھے کچھ سمجھ نہیں آرہا ہے۔ اگر آپ مدد کرنے کے لئے تیار ہیں تو ، میں ادائیگی کرسکتا ہوں ، میرا ای میل ایڈریس guohwa@qq.com ہے
ایجاد کاروں کی مقدار - خوابیہ ممکن ہونا چاہئے کہ آپ پیغامات کو آگے بڑھانے کے وقت {{strategy.order.price}} مواد کو آگے بڑھا سکتے ہیں، اور پھر FMZ پر حکمت عملی اس معلومات کو پروسیس کرتی ہے، موجودہ قیمت کے مقابلے پر مبنی ہے، یا نہیں.
ایجاد کاروں کی مقدار - خوابکیا اب ٹیسٹ ٹھیک ہے؟ میں یہاں ٹیسٹ ٹھیک کر رہا ہوں۔
بہترین حالاتبہت اچھا۔ شکریہ باس
ایجاد کاروں کی مقدار - خوابایف ایم زیڈ میں ہم آہنگی کی نئی خصوصیات شامل کی گئی ہیں ، اور یہ کہ یہ ہم آہنگی میں تبدیل کیا جاسکتا ہے ، لیکن اسٹریٹجک کوڈ میں زیادہ تر تبدیلیاں ہوسکتی ہیں۔ حال ہی میں ، اگر وقت ہو تو ، ہم آہنگی کی مثال کو اپ گریڈ کریں۔