如何寫一個變量Mynet,用來指示每次平倉時,賬戶凈值是否創新高? [MC]
-
MC用戶求助:
input: account("9999-088194(BaseCurrency)"), Price( Close ), FastLength( 9 ), SlowLength( 18 ) ;
{取交易追蹤器中賬戶欄位的”今日余額“,所以需要初始輸入您的資金賬號給參數account}
variables: var0( 0 ), var1( 0 ), mynet(0);
array: jzhi[1](0);
{聲明了一個數組,jzhi[1]用于存儲歷史最高的今日余額,而jzhi[0]取最新的今日余額}
once jzhi[1]=getrtaccountequity(account);
{取初始的今日余額}
var0 = AverageFC( Price, FastLength ) ;
var1 = AverageFC( Price, SlowLength ) ;
{這里以簡單的MA策略為例,var0為快線值,var1為慢線值}
condition1 = CurrentBar > 1 and var0 crosses over var1 ;
if condition1 then begin
? ?? ???jzhi[0]=getrtaccountequity(account);
? ?? ???if jzhi[0]>jzhi[1] then begin
? ?? ?? ?? ?? ? mynet=1;
? ?? ?? ?? ?? ? jzhi[1]=jzhi[0];
? ?? ???end
? ?? ???else mynet=-1;? ?? ?? ?? ?? ?? ?? ???
{金叉出現時,取一次今日余額,與歷史最高今日余額作比較,若創新高則賦值mynet為1并且將新高存儲起來;若沒有創新高則賦值為-1返回 }
? ?? ???Buy ( "MA2CrossLE" ) next bar at market ;
{這里使用的是市價單,而且在下單前取今日余額進行判斷,并沒有將平倉與進場分開;盡管這樣會與先平倉,然后取今日余額有稍微的差異}
end;
{下面是空頭進場的例子,與上面邏輯相同,不再多述}
condition1 = CurrentBar > 1 and var0 crosses under var1 ;
if condition1 then begin
? ?? ???jzhi[0]=getrtaccountequity(account);
? ?? ???if jzhi[0]>jzhi[1] then begin
? ?? ?? ?? ?? ? mynet=1;
? ?? ?? ?? ?? ? jzhi[1]=jzhi[0];
? ?? ???end
? ?? ???else mynet=-1;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
? ?? ???Sell Short ( "MA2CrossSE" ) next bar at market ;
end;
注意事項:
一、我使用的是simnow賬號進行測試的,每一分鐘,交易追蹤器中賬戶欄位的數據更新一次,但是實盤的這些數據更新頻率我并沒有測試過,所以希望您自己測試一下。
二、交易追蹤器中賬戶欄位的數據,MC模擬賬號是開倉和平倉時更新一次,所以通過getrtaccountequit函數在交易中取的值在沒有開倉平倉情況下實際上是不變的數據。
三、這里使用的是平倉反向語句下單,并沒有將平倉和反向開倉分開進行,所以在下市價單之前取”今日余額“的數值進行判斷;若將平倉和開倉分開進行,取的”今日余額“更準確一些,并且這種情況對條件單也會更準確一些。
四、將平倉和反向進場一起使用,也就是直接使用平倉反向委托語句時,不能使用條件單,因為這樣判斷的誤差會很大,條件單在哪一根bar上成交實際上是不確定的;若您根據您的條件單的價格對”今日余額“進行調整,這個調整后的“今日余額”會更準確。?
-
MC回復討論一:
input: account("9999-088194(BaseCurrency)"), Price( Close ), FastLength( 9 ), SlowLength( 18 ) ;
{取交易追蹤器中賬戶欄位的”今日余額“,所以需要初始輸入您的資金賬號給參數account}
variables: var0( 0 ), var1( 0 ), mynet(0);
array: jzhi[1](0);
{聲明了一個數組,jzhi[1]用于存儲歷史最高的今日余額,而jzhi[0]取最新的今日余額}
once jzhi[1]=getrtaccountequity(account);
{取初始的今日余額}
var0 = AverageFC( Price, FastLength ) ;
var1 = AverageFC( Price, SlowLength ) ;
{這里以簡單的MA策略為例,var0為快線值,var1為慢線值}
condition1 = CurrentBar > 1 and var0 crosses over var1 ;
if condition1 then begin
? ?? ???jzhi[0]=getrtaccountequity(account);
? ?? ???if jzhi[0]>jzhi[1] then begin
? ?? ?? ?? ?? ? mynet=1;
? ?? ?? ?? ?? ? jzhi[1]=jzhi[0];
? ?? ???end
? ?? ???else mynet=-1;? ?? ?? ?? ?? ?? ?? ???
{金叉出現時,取一次今日余額,與歷史最高今日余額作比較,若創新高則賦值mynet為1并且將新高存儲起來;若沒有創新高則賦值為-1返回 }
? ?? ???Buy ( "MA2CrossLE" ) next bar at market ;
{這里使用的是市價單,而且在下單前取今日余額進行判斷,并沒有將平倉與進場分開;盡管這樣會與先平倉,然后取今日余額有稍微的差異}
end;
{下面是空頭進場的例子,與上面邏輯相同,不再多述}
condition1 = CurrentBar > 1 and var0 crosses under var1 ;
if condition1 then begin
? ?? ???jzhi[0]=getrtaccountequity(account);
? ?? ???if jzhi[0]>jzhi[1] then begin
? ?? ?? ?? ?? ? mynet=1;
? ?? ?? ?? ?? ? jzhi[1]=jzhi[0];
? ?? ???end
? ?? ???else mynet=-1;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
? ?? ???Sell Short ( "MA2CrossSE" ) next bar at market ;
end;
注意事項:
一、我使用的是simnow賬號進行測試的,每一分鐘,交易追蹤器中賬戶欄位的數據更新一次,但是實盤的這些數據更新頻率我并沒有測試過,所以希望您自己測試一下。
二、交易追蹤器中賬戶欄位的數據,MC模擬賬號是開倉和平倉時更新一次,所以通過getrtaccountequit函數在交易中取的值在沒有開倉平倉情況下實際上是不變的數據。
三、這里使用的是平倉反向語句下單,并沒有將平倉和反向開倉分開進行,所以在下市價單之前取”今日余額“的數值進行判斷;若將平倉和開倉分開進行,取的”今日余額“更準確一些,并且這種情況對條件單也會更準確一些。
四、將平倉和反向進場一起使用,也就是直接使用平倉反向委托語句時,不能使用條件單,因為這樣判斷的誤差會很大,條件單在哪一根bar上成交實際上是不確定的;若您根據您的條件單的價格對”今日余額“進行調整,這個調整后的“今日余額”會更準確。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容