[TOC]
My زبان میک زبان کے لئے مطابقت پذیر اور بڑھا ہوا ایک پروگرامنگ ٹرانزیکشن زبان ہے۔ ایف ایم زیڈ کوٹائزڈ میری زبان سخت گرامر چیک کرتی ہے ، مثال کے طور پر جب جاوا اسکرپٹ زبان کے کوڈ میں زبان کے اضافے کا استعمال کیا جاتا ہے تو ،%%
آپریٹر کے بعد ایک سے زیادہ خالی حروف غلطی کا سبب بنتے ہیں۔
ڈیجیٹل کرنسی کا معاہدہ
ڈیجیٹل کرنسی کا معاہدہ
this_week 数字货币期货当周合约
next_week 数字货币期货次周合约
month 数字货币期货月度合约
quarter 数字货币期货季度合约
next_quarter 数字货币期货次季度合约
third_quarter 数字货币期货第三季度合约
last_quarter 最后季度合约
XBTUSD BITMEX永续合约
swap 除BITMEX交易所以外数字货币期货永续合约
具体可以参看JavaScript/Python/C++文档的exchange.SetContractType()函数部分
متغیرات کمپیوٹر کی میموری میں ڈیٹا ذخیرہ کرنے کے لئے ایک جگہ کھولتے ہیں، جو سادہ الفاظ میں ڈیٹا کو محفوظ کرنے کے لئے استعمال کیا جاتا ہے.
پہلی متغیر کو کھولیں
// 将1赋值给变量a
a:=1;
موجود麦语言
سے数据量
سادہ فرق:
0
、1
、’abc’
。Close
(خریداری کی قیمت)Close
پر مشتمل ہےn
ایک سائیکل کی اختتامی قیمت[ 10.1 , 10.2 , 10.3 , 10.4 , 10. 5 ...]
مختلف قسم کے سلنڈروں سے سلنڈروں کی تفریق
''
پیکیج، سٹرنگ کی اقسام کو براہ راست استعمال کرنے کی اجازت نہیں ہے، اس کے ساتھ مل کر فنکشن کو آؤٹ پٹ کرنے کی ضرورت ہے.INFO(CLSOE>OPEN,'OK!');
// 整数
int:=2;
// 小数
float:=3.1;
A:=1>0;
اس کوڈ کو چلانے کے بعد،A
1 ≠ 1 ≠ 1// 当前周期收盘价大于-999,你会发现,每个周期的返回值都是1,代表true,因为收盘价几乎不可能为负数
is_true:=Close>-999;
VARIABLE:VALUE1:10; // 声明一个全局变量,赋值为10,只执行一次。
جواب دینے کے لئے نوٹ:
VARIABLE:NX:0; // 初始一个全局变量NX为0
NX..NX+1; // 每次累加1
INFO(1,NX); // 每次打印NX
ابتدائی طور پرINFO
اس جملے میں لکھا ہے101
اس کے بجائے، آپ کو اس کے بارے میں سوچنا چاہئے.0
تو کیا؟
اس کی وجہ یہ ہے کہ ریٹرننگ کے وقت ابتدائی K لائن میں 100 جڑیں تھیں ، 100 K لائنیں چل چکی ہیں ، اور 100 بار اضافہ ہوا ہے۔
فکسڈ ڈسک پر منحصر ہے کہ ابتدائی طور پر کتنے K لائنز حاصل کیے گئے ہیں۔
زیادہ تر سسٹمز میں ، متغیر کے ناموں میں سسٹم کے خانے کا استعمال کرنے کی اجازت نہیں ہے۔ مثال کے طور پر:Close
、C
。 اس کے علاوہ، خالص اعداد یا اعداد کے آغاز کی اجازت نہیں ہے۔。 آخر میں بہت لمبا ہونے کی اجازت نہیں ہے، مختلف نظام لمبائی کی حد مختلف ہوتی ہے۔。
اصل میں ، آپ کو مرکزی دھارے میں شامل نظاموں کو چینی زبان کے تجزیہ کی کارکردگی کے بارے میں الجھن میں ڈالنے کی ضرورت نہیں ہے ، اور یقین ہے کہ چینی زبان کے لئے یہ بہت دوستانہ ہے۔
1. چینی نام
// 优雅的输出
五日均线:=MA(C,5);
2. انگریزی + زیر لکیر
// 输出
move_avg_5:=MA(C,5);
اگر آپ انگریزی کو ترجیح دیتے ہیں تو ، براہ کرم اپنے متغیرات کو ہر ممکن حد تک سمجھنے کے قابل بنائیں۔A1
,AAA
,BBB
… اس طرح کے ناموں کا استعمال۔ مجھے یقین ہے کہ جب آپ اپنے اشارے کے کوڈ کو کچھ دن بعد دوبارہ پڑھتے ہیں تو ، آپ کو میموری کی کمی کی وجہ سے بہت تکلیف ہوتی ہے۔ اسی طرح جب آپ کوڈ کو کسی اور کو برآمد کرتے ہیں تو ، قارئین کی ذہنیت ٹوٹ جاتی ہے۔
اگر آپ کو انگریزی زبان کی ضرورت ہے تو ، آپ کو انگریزی زبان کی ضرورت نہیں ہے۔ اگر آپ کو انگریزی زبان کی ضرورت ہے تو ، آپ کو انگریزی زبان کی ضرورت نہیں ہے۔
ڈیٹا ٹائپ ایک بنیادی تصور ہے، اور جب ہم کسی متغیر کو ایک واضح ڈیٹا ویلیو دیتے ہیں تو یہ متغیر خود بھی ڈیٹا کی قسم بن جاتا ہے۔
1、2、3、1.1234、2.23456 ...
'1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
一系列单值数据构成的数据集合
کے لئے1
نمائندےtrue
,0
نمائندےfalse
。
مثال
// 声明一个数值类型的变量
var_int := 1;
// 声明一个序列数据的变量
var_arr := Close;
// 字符串类型不能单独声明,需要结合函数
INFO(C>O, '阳线');
اشارے کے کوڈ کا آپریشن کرنے کے لئے استعمال کیا جاتا ہے، حساب کتاب، سادہ الفاظ میں آپریشن میں حصہ لینے کے لئے علامت ہے.
ایک متغیر کو ایک قدر دینے کے لئے استعمال کیا جاتا ہے
- 1. `:`
`:`, اقدار کی نمائندگی کرتا ہے اور اسے ڈایاگرام (ذیلی ڈایاگرام) میں آؤٹ پٹ کرتا ہے۔
```
Close1:Close; // 将Close赋值给变量Close1,并且输出到图中
```
- 2. `:=`
`:=`, ایک قدر کی نمائندگی کرتا ہے ، لیکن یہ نہ تو گراف میں ظاہر ہوتا ہے اور نہ ہی اسٹیٹس ٹیبل میں ظاہر ہوتا ہے۔
```
Close2:=Close; // 将Close赋值给变量Close2
```
- 3. `^^`
`^^`، دو`^`علامات ایک قدر کی نمائندگی کرتے ہیں، متغیر کو ایک قدر دیتے ہیں اور گراف میں آؤٹ پٹ کرتے ہیں (مرکزی گراف).
```
lastPrice^^C;
```
- 4. `..`
`..`، دو`.`علامات ایک قدر کی نمائندگی کرتے ہیں ، ایک متغیر کو ایک قدر دیتے ہیں اور متغیر کے نام ، اعداد و شمار کو چارٹ میں دکھاتے ہیں ، لیکن چارٹ کو چارٹ میں نہیں کھینچتے ہیں (بنیادی چارٹ ، ذیلی چارٹ ...) ۔
```
openPrice..O
```
رشتہ دار آپریٹر ایک بائنری آپریٹر ہے جو مشروط اظہار میں استعمال ہوتا ہے۔ اس کا استعمال دو اعداد و شمار کے مابین تعلقات کا فیصلہ کرنے کے لئے کیا جاتا ہے۔
واپسی کی قدر: بل کی قسم، نہیںtrue
(1) یعنیfalse
(0)。
- 1. سے زیادہ`>`
```
// 将2>1的运算结果赋值给rv1变量,此时rv1=1
rv1:=2>1;
```
- 2. سے کم`<`
```
// 返回false,也就是0,因为2大于1
rv3:=2<1;
```
- 3. سے بڑا برابر ہے`>=`
```
x:=Close;
// 将收盘价大于等于10的运算的结果赋值给变量rv2
// 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
rv2:=Close>=10;
```
- 4. سے کم کے برابر`<=`
```
此处省略
```
- 5. برابر`=`
```
A:=O=C; // 判断开盘价是不是等于收盘价。
```
- 6. کے برابر نہیں ہے`<>`
```
1<>2 // 判断1是否不等于2,返回值为1(true)
```
واپسی کی قدر: بل کی قسم، نہیںtrue
(1) یعنیfalse
(0)。
1. منطق اور`&&`استعمال کیا جا سکتا ہے`and`متبادل طور پر ، اس کے بائیں اور دائیں طرف کے کنکشن کے ساتھ ایک ساتھ ہونا ضروری ہے۔
// 判断 cond_a,cond_b,cond_c 是否同时成立
cond_a:=2>1;
cond_b:=4>3;
cond_c:=6>5;
cond_a && cond_b and cond_c; // 返回值为1,成立
2. منطق یا`||`استعمال کیا جا سکتا ہے`or`متبادل یا لنک کے دائیں یا بائیں طرف ، ایک طرف قائم ہے ((true) ، اور مجموعی طور پر قائم ہے ((return value true))
cond_a:=1>2;
cond_b:=4>3;
cond_c:=5>6;
cond_a || cond_b or cond_c; // 返回值为1,成立
3. `()`آپریٹر ، حساب کتاب کے دوران پہلے قوسین کے اندر اظہار کا حساب لگایا جائے گا۔
1>2 AND (2>3 OR 3<5) // 运算结果为假
1>2 AND 2>3 OR 3<5 // 运算结果为真
返回值:数值类型
ریاضی کے آپریٹر یعنی ریاضی کے آپریٹر کا نشان。 بنیادی ریاضی کی کارروائیوں کو انجام دینے کے لئے [[arithmetic operators]] کا نشان ہے، یعنی چاروں آپریشنوں کو سنبھالنے کے لئے استعمال ہونے والا نشان。
- **جمع +**
```
A:=1+1; // 返回 2
```
- **کم -**
```
A:=2-1; // 返回 1
```
- **ضرب***
```
A:=2*2; // 返回 4
```
- **خارج کر دیا /**
```
A:=4/2; // 返回 2
```
پروگرامنگ کی دنیا میں، فنکشن کوڈ کوڈ اصل میں کوڈ کا ایک ٹکڑا ہے جو کسی خاص فنکشن کو انجام دیتا ہے۔ اور یہ دوسرے کوڈ کے لئے بھی استعمال کیا جاسکتا ہے ، عام طور پر اس طرح ہے:
function(param1,param2,...)
- تشکیل:
فنکشن کا نام ((آرٹیکل 1، آرٹیکل 2، ...) ، اس میں کوئی بھی آرٹیکل نہیں ہوسکتا ہے یا اس سے زیادہ آرٹیکلز ہوسکتے ہیں. مثال کے طور پر`MA(x,n);`نمائندوں کی واپسی`n`سائیکل کے اندر اندر`x`کی سادہ منتقل اوسط ◄`MA()`تو یہ ایک فنکشن ہے۔`x`اور`n`یہ فنکشن کے پیرامیٹرز ہیں
فنکشن کا استعمال کرتے وقت ہمیں فنکشن کی بنیادی تعریف جاننے کی ضرورت ہوتی ہے ، یعنی اس فنکشن کو کال کرنے سے کیا ڈیٹا حاصل کیا جاسکتا ہے۔ عام طور پر ، فنکشن میں پیرامیٹرز ہوتے ہیں ، اور جب ہم پیرامیٹرز کو منتقل کرتے ہیں تو ہمیں اس بات کو یقینی بنانا ہوگا کہ منتقل کردہ ڈیٹا کی قسم مطابقت رکھتی ہے۔ اس مرحلے پر زیادہ تر آئی ڈی ایز میں کوڈ اشارے کا فنکشن بہت ہی ناقص ہے۔`MA(x,n);`وضاحت:
```
返回简单移动平均
用法:
AVG:=MA(X,N): X的N日简单移动平均,算法(X1+X2+X3+...+Xn)/N,N支持变量
```
یہ شروع کرنے والوں کے لیے بہت غیر دوستانہ ہے۔ اس کے بعد ہم فنکشنز کا مکمل تجزیہ کرتے ہیں اور کوشش کرتے ہیں کہ ان کو تیزی سے سیکھنے اور استعمال کرنے کا کوئی طریقہ ڈھونڈیں۔
فنکشنز کو تیزی سے سیکھنے کے لیے، پہلے ہمیں ایک تصور کو سمجھنا ہو گا جسے “ریٹرن ویلیو” کہا جاتا ہے۔واپسینام کے معنی کو چھوڑ کر ، یہ “واپسی” ہے۔ اگر قدر “مخصوص عددی قدر” کی نمائندگی کرتی ہے ، تو واپسی کی قدر کا مطلب یہ ہے کہ: اعداد و شمار جو حاصل کیے جاسکتے ہیں۔
// 因为后面的代码中会用到,所以用变量 return_value 接收、保存 function()的返回值
// retrun_value := function(param1,param2);
// 例如:
AVG:=MA(C,10); // AVG即retrun_value,function函数即:MA函数,param1参数:C即收盘价序列数据,param2参数:10。
ثانوی فنکشن کا دوسرا اہم تصور پیرامیٹرز ہے، مختلف پیرامیٹرز کو منتقل کرنے سے مختلف واپسی کی قیمتیں مل سکتی ہیں۔
// 变量ma5接收5日收盘价移动平均值
ma5:=MA(C,5);
// 变量ma10接收10日收盘价移动平均值
ma10:=MA(C,10);
مندرجہ بالا متغیراتma5
、ma10
کی پہلی دلیلX
دونوںC
(خریداری کی قیمت)C
یہ ایک فنکشن ہے ((جسے آج تک کے اوپن اور کلوزنگ پرائس سیریز واپس ملتی ہے) ، لیکن اس کے پاس کوئی پیرامیٹر نہیں ہے۔ دوسرا پیرامیٹر 5، 10 ہے۔ یہ بتانے کے لئے استعمال کیا جاتا ہےMA()
فنکشن، ہم بندش کی قیمتوں کے چند دنوں کے لئے ایک منتقل اوسط حاصل کرنے کے لئے جا رہے ہیں، پیرامیٹرز کے ساتھ، فنکشن استعمال کرنے کے لئے زیادہ لچکدار ہو جاتا ہے.
MA(x,n)
اگر آپ کو پیرامیٹرز نہیں جانتےx
、n
اس کے علاوہ، اگر آپ کے پاس کوئی ڈیٹا ٹائپ ہے جو آپ کو صحیح طریقے سے واپس نہیں کرے گا، تو آپ کو یہ معلوم نہیں ہوگا کہ آپ کے پاس کیا ہے.مندرجہ بالا تینوں اصولوں پر عمل کرتے ہوئے مندرجہ ذیل فنکشنز کا تعارف اور استعمال کریں۔
麦语言
اورJavaScript
مخلوط پروگرامنگ %%
// 这里面可以调用发明者量化的任何API
scope.TEST = function(obj) {
return obj.val * 100;
}
%%
收盘价:C;
收盘价放大100倍:TEST(C);
上一个收盘价放大100倍:TEST(REF(C, 1)); // 鼠标移动到回测的K线上就会提示变量值
- `scope`موضوع
`scope`آبجیکٹ ایک خاصیت کو شامل کرسکتا ہے اور اس کی قدر کو ایک گمنام فنکشن دے سکتا ہے۔ اس خاصیت کا حوالہ دینے والے گمنام فنکشن کو میک زبان کے کوڈ کے حصے میں بلایا جاسکتا ہے۔
- `scope.getRefs(obj)`فنکشن
موجود`JavaScript`کوڈ بلاک میں، کال کریں`scope.getRefs(obj)`ایک تقریب کی واپسی`obj`آبجیکٹ کے اعداد و شمار
ذیل میں`%% %%`علامتوں میں لپیٹ`JavaScript`کوڈ میں میک زبان کے کوڈ میں حاصل کریں گے`TEST(C)`جب فنکشن کال کیا جاتا ہے`C`اختتامی قیمت
`scope.getRefs`یہ فنکشن اس K لائن کے اعداد و شمار کی تمام اختتامی قیمتوں کو واپس کرتا ہے۔`throw "stop"`روکنے کے لئے طریقہ کار: لہذا متغیر`arr`صرف پہلی بار کے اختتامی قیمت پر مشتمل ہے۔ آپ اسے ہٹانے کی کوشش کر سکتے ہیں۔`throw "stop"`اس پر عمل کریں گے`JavaScript`کوڈ کے آخر`return`تمام قیمتوں کی واپسی کے اعداد و شمار واپس کریں.
```
%%
scope.TEST = function(obj){
var arr = scope.getRefs(obj)
Log("arr:", arr)
throw "stop"
return
}
%%
TEST(C);
```
- scope.bars
موجود`JavaScript`کوڈ بلاک میں تمام K سلائیڈ باروں تک رسائی حاصل کریں۔
`TEST`فنکشن ایک عددی قدر لوٹاتا ہے۔ 1 منفی ہے اور 0 مثبت ہے۔
```
%%
scope.TEST = function(){
var bars = scope.bars
return bars[bars.length - 1].Open > bars[bars.length - 1].Close ? 1 : 0 // 只能返回数值
}
%%
arr:TEST;
```
```
# 注意:
# TEST接收的匿名函数,返回值必须是数值。
# 如果匿名函数没有参数,在调用TEST的时候直接写VAR:=TEST;写VAR:=TEST();会报错。
# scope.TEST中的TEST必须是大写。
```
- scope.bar
موجود`JavaScript`کوڈ بلاک میں ، موجودہ بار پر جائیں
اعلی اور کم فصلوں کی اوسط قیمتوں کا حساب لگائیں
```
%%
scope.TEST = function(){
var bar = scope.bar
var ret = (bar.Open + bar.Close + bar.High + bar.Low) / 4
return ret
}
%%
avg^^TEST;
```
- scope.depth
مارکیٹ کی گہرائی کے اعداد و شمار تک رسائی حاصل کریں ((تخفیف شدہ احکامات) }}
```
%%
scope.TEST = function(){
Log(scope.depth)
throw "stop" // 打印一次深度数据后就抛出异常,暂停
}
%%
TEST;
```
- scope.symbol
موجودہ ٹرانزیکشن جوڑے کے نام کی سٹرنگ حاصل کریں۔
```
%%
scope.TEST = function(){
Log(scope.symbol)
throw "stop"
}
%%
TEST;
```
- scope.barPos
K لائن بار کی پوزیشن حاصل کریں۔
```
%%
scope.TEST = function(){
Log(scope.barPos)
throw "stop"
}
%%
TEST;
```
- scope.get_locals('name')
یہ فنکشن میک زبان کے کوڈ کے حصے میں متغیرات حاصل کرنے کے لئے استعمال کیا جاتا ہے۔
```
V:10;
%%
scope.TEST = function(obj){
return scope.get_locals('V')
}
%%
GET_V:TEST(C);
```
```
# 注意:
# 如果某个变量,由于周期不足的时候计算不出数据,这个时候在JavaScript代码中调用scope.get_locals函数
# 获取这个变量时,会报错:line:XX - undefined locals某个变量名undefined
```
- scope.canTrade
`canTrade`کیا فی الحال ٹریڈ کرنے کے لئے پراپرٹیز کی نشاندہی کی گئی ہے؟
مثال کے طور پر یہ فیصلہ کرنے کے لئے کہ جب حکمت عملی اس حالت میں ہے کہ وہ تجارت کے لئے آرڈر دے سکتی ہے تو اس کی صورت حال کا ڈیٹا پرنٹ کریں
```
%%
scope.LOGTICKER = function() {
if(exchange.IO("status") && scope.canTrade){
var ticker = exchange.GetTicker();
if(ticker){
Log("ticker:", ticker);
return ticker.Last;
}
}
}
%%
LASTPRICE..LOGTICKER;
```
%%
scope.TEST = function(a){
if (a.val) {
throw "stop"
}
}
%%
O>C,BK;
C>O,SP;
TEST(ISLASTSP);
ایک بار پوزیشن کھولنے کے بعد، حکمت عملی کو روکنے کے لئے.
سسٹم خود بخود ایک مناسب بیس لائن K کا دورانیہ منتخب کرتا ہے اور اس بیس لائن K کی مدت کے اعداد و شمار کو تمام حوالہ شدہ K لائن کے اعداد و شمار کو جوڑنے کے لئے استعمال کرتا ہے تاکہ اعداد و شمار کی درستگی کو یقینی بنایا جاسکے۔
#EXPORT 公式名 ... #END
ایک فارمولا تخلیق کریں۔ اگر صرف مختلف دورانیوں کے اعداد و شمار حاصل کرنے کے لئے فارمولا حساب نہیں کیا جاتا ہے تو ، خالی فارمولا بھی لکھا جاسکتا ہے۔خالی فارمولا ہے:
#EXPORT TEST
NOP;
#END // 结束
#IMPORT [MIN,周期,公式名] AS 变量值
حوالہ فارمولہ ◄ سیٹ کی مدت کے اعداد و شمار حاصل کریں ((بند قیمت، افتتاحی قیمت وغیرہ وغیرہ، متغیر کی قیمت کے ذریعے حاصل) ◄IMPORT
حکم میںMIN
اس کا مطلب ہےمنٹ کی سطح◦ تخلیق کاروں کے لئے کوانٹم پلیٹ فارم کی میک زبانIMPORT
کمانڈ میں صرف کی حمایتMIN
سطح اب غیر معیاری سائیکل کی حمایت کرتا ہے، مثال کے طور پر استعمال کیا جا سکتا ہے#IMPORT [MIN,240,TEST] AS VAR240
240 منٹ کے دورانیے پر اعداد و شمار کو درآمد کریں ((4 گھنٹے) K لائن وغیرہ۔
کوڈ کی مثال:
// 本代码演示如何引用不同周期的公式在同一代码里
// #EXPORT扩展语法,以#END结束标记为一个公式,可以声明多个
#EXPORT TEST
均值1:EMA(C, 20);
均值2:EMA(C, 10);
#END // 结束
#IMPORT [MIN,15,TEST] AS VAR15 // 引用公式,K线周期用15分钟
#IMPORT [MIN,30,TEST] AS VAR30 // 引用公式,K线周期用30分钟
CROSSUP(VAR15.均值1, VAR30.均值1),BPK;
CROSSDOWN(VAR15.均值2, VAR30.均值2),SPK;
十五分最高价:VAR15.HIGH;
三十分最高价:VAR30.HIGH;
AUTOFILTER;
REF
、LLV
、HHV
اعداد و شمار کا حوالہ دیتے ہوئے مثال کے طور پر ہدایات پر توجہ دینا (*backtest
start: 2021-08-05 00:00:00
end: 2021-08-05 00:15:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_OKCoin","currency":"ETH_USD"}]
args: [["TradeAmount",100,126961],["ContractType","swap",126961]]
*)
%%
scope.PRINTTIME = function() {
var bars = scope.bars;
return _D(bars[bars.length - 1].Time);
}
%%
BARTIME:PRINTTIME;
#EXPORT TEST
REF1C:REF(C,1);
REF1L:REF(L,1);
#END // 结束
#IMPORT [MIN,5,TEST] AS MIN5
INFO(1, 'C:', C, 'MIN5.REF1C:', MIN5.REF1C, 'REF(MIN5.C, 1):', REF(MIN5.C, 1), '触发BAR时间:', BARTIME, '#FF0000');
INFO(1, 'L:', L, 'MIN5.REF1L:', MIN5.REF1L, 'REF(MIN5.L, 1):', REF(MIN5.L, 1), '触发BAR时间:', BARTIME, '#32CD32');
AUTOFILTER;
موازنہMIN5.REF1C
اورREF(MIN5.C, 1)
اس کے علاوہ، اس میں یہ فرق بھی پایا جا سکتا ہے:
MIN5.REF1C
5 منٹ کے K لائن کے اعداد و شمار کے موجودہ لمحے کے الٹی گنتی دوسرا BAR کی بندش کی قیمت ہے۔
REF(MIN5.C, 1)
موجودہ ماڈل کے K لائن دورانیہ ہے (() مندرجہ بالا کوڈ ریٹرننگ دورانیہ 1 منٹ پر سیٹ کیا گیا ہے ، یعنیperiod: 1m
), 5 منٹ کی مدت کے اختتامی قیمت جہاں موجودہ لمحے کا الٹی گنتی کا دوسرا بار ہے۔
ان دونوں تعریفوں میں فرق ہے اور ان کا استعمال ضرورت کے مطابق کیا جا سکتا ہے۔
ماڈل میں لکھ کرAUTOFILTER
فنکشن کو کنٹرول کرنے اور یکساں طور پر سگنل فلٹرنگ کو لاگو کرنے کے لئے ، جب متعدد کھلے ہوئے سگنل شرائط کو پورا کرتے ہیں تو ، پہلے سگنل کو ایک درست سگنل کے طور پر لیا جاتا ہے ، اور اس کے بعد کی لائن پر اسی سگنل کو فلٹر کیا جائے گا۔
فلٹر ماڈل کی حمایت کرنے والے ہدایات: بی کے ، بی پی ، بی پی کے ، ایس کے ، ایس پی ، ایس پی کے ، کلوس آؤٹ ، بی کے کی حمایت نہیں کرتا ہے ((5)) اور اس طرح کے گھڑی والے ہدایات
مثال کے طور پر:
MA1:MA(CLOSE,5);
MA2:MA(CLOSE,10);
CROSSUP(C,MA1),BK;
CROSSUP(MA1,MA2),BK;
C>BKPRICE+10||C<BKPRICE-5,SP;
AUTOFILTER;
理解:
如上范例,没有设置 AUTOFILTER 时,第三行BK 和第四行BK 第五行SP,依次触发,每根K线触发一次信号。开仓后,再到平仓,即重置模型状态。
如果设置 AUTOFILTER , 触发BK后,只能触发SP,其它的BK 信号被忽略,每根K线触发一次信号。
ماڈل میں نہیں لکھا گیاAUTOFILTER
فنکشن ، جو پوزیشن کھولنے کے لئے لگاتار سگنل کی اجازت دیتا ہے یا پوزیشن کو کم کرنے کے لئے لگاتار سگنل کی اجازت دیتا ہے۔
معاون ہدایات: BK ((N)) ، BP ((N)) ، SK ((N)) ، SP ((N)) ، CLOSEOUT ((BPK ((N)) ، SPK ((N)) ، بغیر کسی نمبر کے کھلے پوزیشن کے ہدایات کی حمایت نہیں کرتا ہے۔ (1) سپورٹ کمانڈ گروپ۔ (2) جب ایک سے زیادہ ہدایت کی شرائط ایک ساتھ مل جاتی ہیں تو ، شرائط کے بیانات کے مطابق لکھا ہوا پچھلے پچھلے ترتیب میں سگنل کا نفاذ کریں۔ مثال کے طور پر:
MA1:MA(CLOSE,5);
MA2:MA(CLOSE,10);
CROSSUP(C,MA1),BK(1);
CROSSUP(MA1,MA2),BK(1);
C>BKPRICE+10||C<BKPRICE-5,SP(BKVOL);
استعمال کریںTRADE\_AGAIN
ایک ہی کمانڈ کو ایک سے زیادہ سگنل جاری کرنے کے لئے استعمال کیا جاسکتا ہے۔
理解:
以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个K线触发一次信号。
قطع نظر اس کے کہ k لائن ختم ہو گئی ہے یا نہیں ، سگنل کا حساب لگایا جاتا ہے اور ریئل ٹائم آرڈر کیا جاتا ہے ، یعنی K لائن پہلے آرڈر کو مکمل نہیں کرتی ہے۔ K لائن کے اختتام پر جائزہ لیا جاتا ہے ، اگر پوزیشن رکھنے کی سمت اور k لائن کے اختتام پر سگنل کی سمت مطابقت نہیں رکھتی ہے تو وہ خود بخود پوزیشن میں رہے گا۔
مثال کے طور پر:
MA1:MA(CLOSE,5);
MA2:MA(CLOSE,10);
CROSSUP(MA1,MA2),BPK; // 5周期均线上穿10周期均线做多。
CROSSDOWN(MA1,MA2),SPK; // 5周期均线下穿10周期均线做空。
AUTOFILTER;
ماڈل کا استعمال کرتے ہوئےmultsig
کنٹرول اور ایک K لائن کے لئے ایک سے زیادہ سگنل کو لاگو کرنے کے لئے.
اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ.
سگنل کی جانچ پڑتال نہیں کی جاتی ہے ، سگنل کی گمشدگی کی کوئی صورت نہیں ہے ، سگنل کی سمت ہمیشہ پوزیشن رکھنے کی سمت کے مطابق ہوتی ہے۔
ایک K لائن میں اگر ایک سے زیادہ سگنل کی شرائط پوری ہوں تو بار بار کئی بار انجام دیا جا سکتا ہے۔
例如:
MA1:MA(CLOSE,5);
MA2:MA(CLOSE,10);
CROSSUP(MA1,MA2),BK;
C>BKPRICE+10||C<BKPRICE-5,SP;
AUTOFILTER;
MULTSIG(0,0,2,0);
MULTSIG
ایک K سٹرنگ میں کئی بار مختلف کمانڈ لائنوں کو انجام دے سکتے ہیں.
ایک کمانڈ لائن صرف ایک بار اشارہ کرتی ہے۔
O<C,BK; // 这些条件在一个K线Bar内,可能都执行,但是每行只出一次信号
10+O<C,BK; // 策略加上TRADE_AGAIN(10);可以使每行出多次信号
20+O<C,BK;
40+O<C,BK;
MULTSIG(1,1,10);
انہوں نے مزید کہا:
1، جمع اور تخفیف کے ماڈل، ایک ک لائن ایک سگنل کے دو طریقے: بندش کی قیمت کے نیچے آرڈر، ہدایات کی قیمت کے نیچے آرڈر، دونوں کی حمایت کر رہے ہیں
2، اضافہ اور کمی کے ذخیرہ ماڈل، بھی ایک K لائن ایک سے زیادہ سگنل آرڈر کی حمایت کرتا ہے
جمع اور واپسی کے ماڈل، لکھیںmultsig
فنکشن، ایک k لائن پر کئی بار اضافہ یا کم کرنے کے لئے.
اختتامی قیمت ماڈل کا مطلب ہے کہ موجودہ BAR ختم ہونے سے پہلے ماڈل پر عملدرآمد کیا جائے ، جب نچلے BAR شروع ہوتا ہے تو تجارت پر عملدرآمد کیا جائے۔
ریئل ٹائم پرائس ماڈل کا مطلب یہ ہے کہ ہر قیمت میں تبدیلی کے بعد ایک ماڈل پر عملدرآمد کیا جاتا ہے ، اور سگنل کے ساتھ فوری طور پر تجارت کی جاتی ہے۔ ریئل ٹائم پرائس ماڈل پچھلے دن کے سگنل کو نظرانداز کرتا ہے ((پچھلے دن کا سگنل پچھلے دن فوری طور پر عملدرآمد کرتا ہے) ، ریئل ٹائم پرائس ماڈل صرف موجودہ حالات کے اعداد و شمار کو دیکھتا ہے اور فیصلہ کرتا ہے کہ آیا سگنل کو متحرک کیا گیا ہے۔
آپریٹر کا استعمال
^^
، ایک متغیر کو ایک قدر دینے کے ساتھ ساتھ ، سیٹ اپ اشارے مرکزی نقشے پر دکھائے جاتے ہیں۔
MA60^^MA(C, 60); // 计算参数为60的均线指标
آپریٹر کا استعمال:
، ایک متغیر کو ایک قدر دینے کے ساتھ ساتھ، سیٹ اپ اشارے ذیلی گراف میں دکھایا گیا ہے.
ATR:MA(MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),26); // 给ATR变量赋值,":"符号后为计算ATR的公式
اگر آپ نہیں چاہتے ہیں کہ یہ مرکزی یا ذیلی نقشے پر ظاہر ہو ، تو آپریٹر “..” استعمال کریں۔
MA60..MA(C, 60); // 计算参数为60的均线指标
استعمال کیا جا سکتاDOT
、COLORRED
میک زبان سے واقف صارفین کی عادات کے مطابق لائنوں کی ترتیب، رنگ وغیرہ۔
عام طور پر انڈیکس بنانے کے عمل میں پیش آنے والے مسائلسوال، عام طور پر لکھنے کے دوران توجہ کی ضرورت ہے ((مسلسل تکمیل) )
نوٹ کریں نشان;
اختتام
نوٹ: سسٹم کی ورڈ کو متغیر کے طور پر بیان نہیں کیا جاسکتا ہے۔
سٹرنگ کا استعمال کرتے ہوئے دیکھ بھالایک کوئز، مثال کے طور پر:'开仓'
یہ سٹرنگ:
نوٹ بک
- `// 注释内容`(انگریزی میں ٹائپ کیا جاسکتا ہے) ، جس کا مطلب ہے کہ کوڈ کو عملدرآمد کے دوران مرتب نہیں کیا جاتا ہے ، یعنی اس پر عملدرآمد نہیں ہوتا ہے۔`//`مندرجہ ذیل مواد کو ہم عام طور پر کوڈ کے معنی کے طور پر استعمال کرتے ہیں، کوڈ کو دوبارہ دیکھنے کے لئے آسان ہے، فوری طور پر سمجھنے اور یاد رکھنے کے لئے.
- `{ 注释内容 }`تبصرہ
```
A:=MA(C,10);
{上一行代码是计算均线。}
```
- `(* 注释内容 *)`تبصرہ
```
A:=MA(C,10);
(*上一行代码是计算均线。*)
```
کوڈ لکھتے وقت ، اکثر انگریزی میں انگریزی میں تبدیلی کی وجہ سے ، علامتی غلطیوں کا سبب بنتا ہے۔ عام طور پر مندرجہ ذیل ہیں::
اختتامیہ;
کوما,
قوسین()
اور اسی طرح ، ان چینی اور انگریزی میں مختلف حروف کو نوٹ کریں۔
اور اگر آپ گوگل ڈاٹ کام، بائیڈو یا بنگ ٹائپنگ کا استعمال کرتے ہیں تو آپ ایک بار کلک کر سکتے ہیں
shift
ہسپانوی اور انگریزی کے لئے فوری سوئچ
>=
。<=
。مستقبل کی حکمت عملی میں ، اگر حکمت عملی روبوٹ کے آغاز سے پہلے ، دستی طور پر پوزیشن کھولنے والی پوزیشنیں ہیں ، تو روبوٹ شروع ہونے پر ، پوزیشن کی معلومات کا پتہ لگائے گا ، جو اصل پوزیشن کی حیثیت کے ساتھ مطابقت پذیر ہوگا۔
اس کا استعمال حکمت عملی میں کیا جا سکتا ہے۔SP
, BP
,CLOSEOUT
حکم نامہ جاری
%%
if (!scope.init) {
var ticker = exchange.GetTicker();
exchange.Buy(ticker.Sell+10, 1);
scope.init = true;
}
%%
C>0, CLOSEOUT;
میک زبان ایک ہی معاہدے کی حمایت نہیں کرتا ہے اور ایک ہی وقت میں بہت سے خالی پوزیشنوں کی حمایت کرتا ہے.
K لائن گراف کے لئے ابتدائی قیمت
قیمتیں
فنکشن: OPEN، مختصر O
پیرامیٹرز: کوئی
وضاحت: “سائیکل” کی افتتاحی قیمت پر واپس جائیں
اعداد و شمار کی ترتیب
OPEN取得K线图的开盘价。
注:
1、可简写为O。
例1:
OO:=O; //定义OO为开盘价;注意O与0的区别。
例2:
NN:=BARSLAST(DATE<>REF(DATE,1));
OO:=REF(O,NN); //取的当日的开盘价
例3:
MA5:=MA(O,5); //定义开盘价的5周期均线(O为OPEN简写)。
K لائن میپ حاصل کرنے کی سب سے زیادہ قیمت
سب سے زیادہ قیمت
فنکشن: HIGH، مختصر H
پیرامیٹرز: کوئی
وضاحت: “سائیکل” کی سب سے زیادہ قیمت پر واپس
اعداد و شمار کی ترتیب
HIGH取得K线图的最高价。
注:
1、可简写为H。
例1:
HH:=H; // 定义HH为最高价
例2:
HH:=HHV(H,5); // 取的5个周期内最高价的最大值
例3:
REF(H,1); // 取的前一根K线的最高价
K لائن میپ حاصل کرنے کی کم از کم قیمت
کم قیمت
فنکشن: LOW، مختصر L
پیرامیٹرز: کوئی
وضاحت: “سائیکل” کی کم از کم قیمت پر واپس جائیں
اعداد و شمار کی ترتیب
LOW取得K线图的最低价。
注:
1、可简写为L。
例1:
LL:=L; // 定义LL为最低价
例2:
LL:=LLV(L,5); // 取得5个周期内最低价的最小值
例3:
REF(L,1); // 取得前一根K线的最低价
K لائن گراف کی اختتامی قیمت حاصل کرنا۔
اختتامی قیمت
فنکشن: CLOSE ، مختصر C
پیرامیٹرز: کوئی
وضاحت: “سائیکل” کے اختتامی قیمت پر واپسی
اعداد و شمار کی ترتیب
CLOSE取得K线图的收盘价
注:
1、当盘中k线没有走完的时候,取得最新价。
2、可简写为C。
例1:
A:=CLOSE; //定义变量A为收盘价(盘中k线没有走完的时候A为最新价)
例2:
MA5:=MA(C,5); //定义收盘价的5周期均线(C为CLOSE简写)
例3:
A:=REF(C,1); //取得前一根k线的收盘价
K لائن گراف کی ٹرانزیکشن کی مقدار حاصل کریں۔
رقم کی ترسیل
فنکشن: VOL، مختصر V
پیرامیٹرز: کوئی
وضاحت: “اس دور” کی واپسی
اعداد و شمار کی ترتیب
VOL取得K线图的成交量。
注:
可简写为V。
该函数在当根TICK上的返回值为当天所有TICK成交量的累计值。
例1:
VV:=V; // 定义VV为成交量
例2:
REF(V,1); // 表示前一个周期的成交量
例3:
V>=REF(V,1); // 成交量大于前一个周期的成交量,表示成交量增加(V为VOL的简写)
موجودہ فیوچر (معاہدہ) مارکیٹ میں کل انعقاد کی رقم حاصل کریں۔
OpenInterest:OPI;
حوالہ جات
引用X在N个周期前的值。
注:
1、当N为有效值,但当前的k线数不足N根,返回空值;
2、N为0时返回当前X值;
3、N为空值时返回空值。
4、N可以为变量
例1:
REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价
例2:
AA:=IFELSE(BARSBK>=1,REF(C,BARSBK),C);//取最近一次买开仓信号K线的收盘价
// 1)发出BK信号的当根k线BARSBK返回空值,则发出BK信号的当根k线REF(C,BARSBK)返回
空值;
// 2)发出BK信号的当根k线BARSBK返回空值,不满足BARSBK>=1,则当根k线的收盘价。
// 3)发出BK信号之后的k线BARSBK返回买开仓的K线距离当前K线的周期数,REF(C,BARSBK)
返回开仓k线的收盘价。
// 4)例:1、2、3 三根k线,1 K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3
K线返回 1 K线的收盘价。
ڈیٹا معاہدہ کرنے والا ٹرانزیکشن یونٹ
取数据合约的交易单位。
用法:
UNIT 取加载数据合约的交易单位。
ڈیجیٹل کرنسی کی نقد رقم
یونٹ 1
کریپٹو کرنسی فیوچرز
یونٹ کی قیمت معاہدہ کرنسی سے متعلق ہے۔
OKEX期货币本位合约:BTC合约1张代表100美元,其它币种的1张合约代表10美元
ڈیٹا کنٹریکٹ کی کم سے کم تبدیلی کی قیمت
取数据合约的最小变动价位。
用法:
MINPRICE; 取加载数据合约的最小变动价位。
تجارت کے معاہدے کی کم از کم تبدیلی کی قیمت
取交易合约的最小变动价位。
用法:
MINPRICE1; 取交易合约的最小变动价位。
K لائن کی پوزیشن حاصل کریں
BARPOS,返回从第一根K线开始到当前的周期数。
注:
1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
2、本机已有的第一根K线上返回值为1。
例1:LLV(L,BARPOS); // 求本地已有数据的最小值。
例2:IFELSE(BARPOS=1,H,0); // 当前K线是本机已有的第一根K线取最高值,否则取0。
DAYBARPOS جڑ K لکیری BAR دن کی کثیر جڑ K لکیری BAR。
دورانیہ منٹوں کی تعداد میں۔
1, 3, 5, 15, 30, 60, 1440
تاریخDATE فنکشن ، جس میں اس دورانیے کی تاریخ 1900 سے حاصل کی گئی ہے۔
例1:
AA..DATE; // 测试时AA的值为220218,表示2022年2月18日
K لائن لینے کا وقت
TIME,取K线时间。
注:
1、该函数在盘中实时返回,在K线走完后返回K线的起始时间。
2、该函数返回的是交易所数据接收时间,也就是交易所时间。
3、TIME函数在秒周期使用时返回六位数的形式,即:HHMMSS,在其他周期上显示为四位数的形式,即:HHMM.
4、TIME函数只能加载在日周期以下的周期中,在日周期及日周期以上的周期中该函数返回值始终为1500。
5、使用TIME函数进行尾盘平仓的操作需要注意
(1)尾盘平仓设置的时间建议设置为K线返回值中实际可以取到的时间(如:螺纹指数 5分钟周期 最后一根K线返回时间为1455,尾盘平仓设置为TIME>=1458,CLOSEOUT;则效果测试中不能出现尾盘平仓的信号)
(2)使用TIME函数作为尾盘平仓的条件的,建议开仓条件也要做相应的时间限制(如设置尾盘平仓条件为TIME>=1458,CLOSEOUT;则相应的开仓条件中需要添加条件TIME<1458;避免平仓后再次开仓的情况)
例1:
C>O&&TIME<1450,BK;
C<O&&TIME<1450,SK;
TIME>=1450,SP;
TIME>=1450,BP;
AUTOFILTER;
// 在14:50后平仓。
例2:
ISLASTSK=0&&C>O&&TIME>=0915,SK;
سال
YEAR,取得年份。
注:
YEAR的取值范围为1970—2033。
例1:
N:=BARSLAST(YEAR<>REF(YEAR,1))+1;
HH:=REF(HHV(H,N),N);
LL:=REF(LLV(L,N),N);
OO:=REF(VALUEWHEN(N=1,O),N);
CC:=REF(C,N); // 取上一年的最高价,最低价,开盘价,收盘价
例2:
NN:=IFELSE(YEAR>=2000 AND MONTH>=1,0,1);
مہینے کا نام لیں
MONTH,返回某个周期的月份。
注:
MONTH的取值范围为1—12.
例1:
VALUEWHEN(MONTH=3&&DAY=1,C); // 在K线日期为三月一日时取其收盘价
例2:
C>=VALUEWHEN(MONTH<REF(MONTH,1),O),SP;
ایک خاص دورانیہ کے دن
DAY,返回某一周期的日数。
注:
DAY取值范围为1-31。
例1:
DAY=3&&TIME=0915,BK; // 当日起为3日,时间为9点15分时,买开
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;
CC:=IFELSE(DAY=1,VALUEWHEN(N=1,O),0); // 当日期为1时,取开盘价,否则取值为0
گھنٹے
HOUR,返回某周期的小时数。
注:
HOUR的取值范围为0—23
例1:
HOUR=10; // 在10:00的K线上返回值为1,其余K线上返回值为0
منٹ
MINUTE,返回某个周期的分钟数。
注:
1:MINUTE的取值范围为0—59
2:该函数只能加载在分钟周期上,返回当根K线开始的分钟数。
例1:
MINUTE=0; // 在整点时刻的分钟K线上返回值为1,其余K线返回值为0
例2:
TIME>1400&&MINUTE=50,SP; // 在14:50的时候卖平仓
ہفتوں کی تعداد
WEEKDAY,取得星期数。
注:
1:WEEKDAY的取值范围是0—6。(星期日 ~ 星期六)
例1:
N:=BARSLAST(MONTH<>REF(MONTH,1))+1;
COUNT(WEEKDAY=5,N)=3&&TIME>=1450,BP;
COUNT(WEEKDAY=5,N)=3&&TIME>=1450,SP;
AUTOFILTER; // 每个月交割日尾盘自动平仓
例2:
C>VALUEWHEN(WEEKDAY<REF(WEEKDAY,1),O)+10,BK;
AUTOFILTER;
موجودہ سائیکل کی پوزیشن پر واپس جائیں۔
BARSTATUS 返回当前周期的位置状态。
注:
该函数返回1表示当前周期是第一个周期,返回2表示是最后一个周期,返回0表示当前周期处于中间位置。
例:
A:=IFELSE(BARSTATUS=1,H,0); // 如果当前K线是第一个周期,变量A返回K线最高值,否则取0
کے درمیان۔
BETWEEN(X,Y,Z) 表示X是否处于Y和Z之间,成立返回1(Yes),否则返回0(No)。
注:
1、其中若X=Y、X=Z、或X=Y且Y=Z时函数返回值为1(Yse)。
例1:
BETWEEN(CLOSE,MA5,MA10); // 表示收盘价介于5日均线与10日均线之间
BARSLASTCOUNT ((COND) موجودہ سائیکل سے آگے کا حساب لگائیں ، اور اسٹیٹسٹکس کو مستقل طور پر پورا کرنے والے سائیکلوں کی تعداد معلوم کریں۔
注:
1、返回值为从当前周期计算COND连续不为0的周期数
2、条件第一次成立的当根k线上BARSLASTCOUNT(COND)的返回值为1
例:
BARSLASTCOUNT(CLOSE>OPEN);
//计算当根K线在内连续为阳线的周期数
کراس فنکشن
CROSS(A,B) 表示A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
注:
1、满足穿越的条件必须上根k线满足A<=B,当根k线满足A>B才被认定为穿越。
例1:
CROSS(CLOSE,MA(CLOSE,5)); // 表示收盘线从下方向上穿过5周期均线
نیچے کے ذری