請老師幫我看一下這個畫圖的代碼出現了什么問題 [MC]
-
MC用戶求助:
input:n(36);
Var:x(0),z(0),z_sell(0),z_buy(0);
once begin
? ? ? ?value1=tl_new(date ,2100,z,date ,2300,z);?
? ? ? ?value2=tl_new(date ,2100,z_Sell,date ,2300,z_Sell);
? ? ? ?value3=tl_new(date ,2100,z_buy,date ,2300,z_buy);
? ? end;
?
?
x=AvgTrueRange(n);
? ? ? z=open;
? ? ? ?z_sell= z + 2 * x;
? ? ? ?z_buy= z - 2 * x;
? ? ? ? tl_setbegin(value1,date,2100,z);
? ? ? ? tl_setend(value1,date,2300,z);
?
第一、tl_new是用于新建趨勢線的,每次新建時會返回該趨勢線的編號;
第二、tl_setbegin和tl_setend用于更改趨勢線的開始位置和終點位置,通過趨勢線的編號;
第三、MC是每一根bar執行一次計算,而您的代碼是每次計算時都執行三次tl_new,從而導致每次計算時都新建三條趨勢線,所以才會那么多趨勢線,這樣很占用資源的。
第四、once關鍵字的用法見帖子http://forums.icetech.com.cn/for ... &highlight=once
?
-
MC回復討論一:
input:n(36);
Var:x(0),z(0),z_sell(0),z_buy(0);
once begin
? ? ? ?value1=tl_new(date ,2100,z,date ,2300,z);?
? ? ? ?value2=tl_new(date ,2100,z_Sell,date ,2300,z_Sell);
? ? ? ?value3=tl_new(date ,2100,z_buy,date ,2300,z_buy);
? ? end;
?
?
x=AvgTrueRange(n);
? ? ? z=open;
? ? ? ?z_sell= z + 2 * x;
? ? ? ?z_buy= z - 2 * x;
? ? ? ? tl_setbegin(value1,date,2100,z);
? ? ? ? tl_setend(value1,date,2300,z);
?
第一、tl_new是用于新建趨勢線的,每次新建時會返回該趨勢線的編號;
第二、tl_setbegin和tl_setend用于更改趨勢線的開始位置和終點位置,通過趨勢線的編號;
第三、MC是每一根bar執行一次計算,而您的代碼是每次計算時都執行三次tl_new,從而導致每次計算時都新建三條趨勢線,所以才會那么多趨勢線,這樣很占用資源的。
第四、once關鍵字的用法見帖子http://forums.icetech.com.cn/for ... &highlight=once
?
-
MC回復討論二:
老師您好,我在問題里面沒有描述清楚,用了您的改動發現還是沒有得到我需要的效果。我重新描述一遍問題吧:
我想做一個日內突破模型,中心線(一條水平線)是每日9:00和每夜21:00的開盤價,然后沿著中心線每隔一個ATR單位便畫一條水平線,白天的代碼如下,if date <> Date[1] then
begin
? ? ? ? Y = Opend(0) ;
? ? ? ? Y_Sell1 = Y + x ;
? ? ? ? Y_Sell2 = Y + 2 * x ;?
? ? ? ? Y_Sell3 = Y + 3 * x ;
? ? ? ? y_buy1 = Y - x ;
? ? ? ? Y_Buy2 = Y - 2 * x ;
? ? ? ? Y_buy3 = Y - 3 * x ;
? ? ? ? tl_new(date ,0900,Y,date ,1500,Y);?
? ? ? ? tl_new(date ,0900,Y_Sell1,date ,1500,Y_Sell1);
? ? ? ? tl_new(date ,0900,Y_Sell2,date ,1500,Y_Sell2);
? ? ? ? tl_new(date, 0900,y_sell3,date ,1500,y_sell3);
? ? ? ? tl_new(date ,0900,y_buy1,date ,1500,y_buy1);
? ? ? ? tl_new(date ,0900,Y_Buy2,date ,1500,Y_Buy2);
? ? ? ?tl_new(date, 0900,Y_buy3,date ,1500,Y_buy3);??
end ;
這樣寫完全能夠畫出我需要的線。但是晚上就不太靈了,經過我這一天的查詢與詢問,頂多能寫出如下的代碼(這里面的開盤價opedndy是我在論壇查詢夜盤代碼時查出來的,導入的函數,發現還挺好用,確實起到了夜盤21:00開盤價的作用):
if time>=2100 and date=date[1] then?
begin
? ? ? ?z=opendy(0);
? ? ? ? z_Sell1 = z + x ;
? ? ? ? z_Sell2 = z + 2 * x ;?
? ? ? ? z_Sell3 = z + 3 * x ;
? ? ? ? z_buy1 = z - x ;
? ? ? ? z_Buy2 = z - 2 * x ;
? ? ? ? z_buy3 = z - 3 * x ;
? ? ? ? tl_new(date ,2100,z,date ,2300,z);?
? ? ? ? tl_new(date ,2100,z_Sell1,date ,2300,z_Sell1);
? ? ? ? tl_new(date ,2100,z_Sell2,date ,2300,z_Sell2);
? ? ? ? tl_new(date, 2100,z_sell3,date ,2300,z_sell3);
? ? ? ? tl_new(date ,2100,z_buy1,date ,2300,z_buy1);
? ? ? ? tl_new(date ,2100,z_Buy2,date ,2300,z_Buy2);
? ? ? ?tl_new(date, 2100,z_buy3,date ,2300,z_buy3);??
end;
但是得到的還是無數條很亂的水平線,不像白天的那種很規律的七條線。
我也試了您說的once begin函數,但是由于看不太懂說明,所以也是不太奏效,不知應該怎樣改進才可以?
?
-
MC回復討論三:
if date <> Date[1] then
begin
? ? ? ? Y = open;?
{通過date<>date[1]來界定這段begin end內部的代碼只在白天開盤第一根bar執行,然后取open價格就可以了}
? ? ? ? Y_Sell1 = Y + x ;
? ? ? ? Y_Sell2 = Y + 2 * x ;?
? ? ? ? Y_Sell3 = Y + 3 * x ;
? ? ? ? y_buy1 = Y - x ;
? ? ? ? Y_Buy2 = Y - 2 * x ;
? ? ? ? Y_buy3 = Y - 3 * x ;
? ? ? ? tl_new(date ,0900,Y,date ,1500,Y);?
? ? ? ? tl_new(date ,0900,Y_Sell1,date ,1500,Y_Sell1);
? ? ? ? tl_new(date ,0900,Y_Sell2,date ,1500,Y_Sell2);
? ? ? ? tl_new(date, 0900,y_sell3,date ,1500,y_sell3);
? ? ? ? tl_new(date ,0900,y_buy1,date ,1500,y_buy1);
? ? ? ? tl_new(date ,0900,Y_Buy2,date ,1500,Y_Buy2);
? ? ? ?tl_new(date, 0900,Y_buy3,date ,1500,Y_buy3);??
end ;
?
if time>=2100 and time[1]<=1500 then?
{通過time>=2100 and time[1]<=1500來界定這段begin end內部的代碼只在夜盤開盤第一根bar執行,然后取open價格就可以了}
begin
? ? ? ?z=open;
? ? ? ? z_Sell1 = z + x ;
? ? ? ? z_Sell2 = z + 2 * x ;?
? ? ? ? z_Sell3 = z + 3 * x ;
? ? ? ? z_buy1 = z - x ;
? ? ? ? z_Buy2 = z - 2 * x ;
? ? ? ? z_buy3 = z - 3 * x ;
?
? ? ? ? tl_new(date ,2100,z,date ,2300,z);?
? ? ? ? tl_new(date ,2100,z_Sell1,date ,2300,z_Sell1);
? ? ? ? tl_new(date ,2100,z_Sell2,date ,2300,z_Sell2);
? ? ? ? tl_new(date, 2100,z_sell3,date ,2300,z_sell3);
? ? ? ? tl_new(date ,2100,z_buy1,date ,2300,z_buy1);
? ? ? ? tl_new(date ,2100,z_Buy2,date ,2300,z_Buy2);
? ? ? ?tl_new(date, 2100,z_buy3,date ,2300,z_buy3);??
end;
?
-
MC回復討論四:
if date <> Date[1] then
begin
? ? ? ? Y = open;?
{通過date<>date[1]來界定這段begin end內部的代碼只在白天開盤第一根bar執行,然后取open價格就可以了}
? ? ? ? Y_Sell1 = Y + x ;
? ? ? ? Y_Sell2 = Y + 2 * x ;?
? ? ? ? Y_Sell3 = Y + 3 * x ;
? ? ? ? y_buy1 = Y - x ;
? ? ? ? Y_Buy2 = Y - 2 * x ;
? ? ? ? Y_buy3 = Y - 3 * x ;
? ? ? ? tl_new(date ,0900,Y,date ,1500,Y);?
? ? ? ? tl_new(date ,0900,Y_Sell1,date ,1500,Y_Sell1);
? ? ? ? tl_new(date ,0900,Y_Sell2,date ,1500,Y_Sell2);
? ? ? ? tl_new(date, 0900,y_sell3,date ,1500,y_sell3);
? ? ? ? tl_new(date ,0900,y_buy1,date ,1500,y_buy1);
? ? ? ? tl_new(date ,0900,Y_Buy2,date ,1500,Y_Buy2);
? ? ? ?tl_new(date, 0900,Y_buy3,date ,1500,Y_buy3);??
end ;
?
if time>=2100 and time[1]<=1500 then?
{通過time>=2100 and time[1]<=1500來界定這段begin end內部的代碼只在夜盤開盤第一根bar執行,然后取open價格就可以了}
begin
? ? ? ?z=open;
? ? ? ? z_Sell1 = z + x ;
? ? ? ? z_Sell2 = z + 2 * x ;?
? ? ? ? z_Sell3 = z + 3 * x ;
? ? ? ? z_buy1 = z - x ;
? ? ? ? z_Buy2 = z - 2 * x ;
? ? ? ? z_buy3 = z - 3 * x ;
?
? ? ? ? tl_new(date ,2100,z,date ,2300,z);?
? ? ? ? tl_new(date ,2100,z_Sell1,date ,2300,z_Sell1);
? ? ? ? tl_new(date ,2100,z_Sell2,date ,2300,z_Sell2);
? ? ? ? tl_new(date, 2100,z_sell3,date ,2300,z_sell3);
? ? ? ? tl_new(date ,2100,z_buy1,date ,2300,z_buy1);
? ? ? ? tl_new(date ,2100,z_Buy2,date ,2300,z_Buy2);
? ? ? ?tl_new(date, 2100,z_buy3,date ,2300,z_buy3);??
end;
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容