求問,具體怎么控制每日最多只進(jìn)行一次換股交易 [MC]
-
MC用戶求助:
inputs: Price( Close ), FastLength( 9 ), SlowLength( 18 ) ;
variables: var0( 0 ), var1( 0 ) ;
once??value1=pmms_strategies_get_by_symbol_name(getsymbolname);
{將當(dāng)前策略的編號(hào)存儲(chǔ)到變量value1上}
var0 = AverageFC( Price, FastLength ) ;
var1 = AverageFC( Price, SlowLength ) ;
if value1=0 then begin
? ? ? ? if currentbar=1 or date[1]<>date then
? ? ? ? ? ? ? ? pmm_set_global_named_num("num",1);
end;
{由于策略的執(zhí)行是從策略編號(hào)0開始依次到最大策略編號(hào),然后再循環(huán)執(zhí)行,所以這里通過在策略編號(hào)為0時(shí),對(duì)全局變量“num”進(jìn)行賦值1,即當(dāng)天可交易的次數(shù)}
condition1 = CurrentBar > 1 and var0 crosses above var1 ;
if pmm_get_global_named_num("num")=1 and value1=pmm_get_global_named_num("entry") then begin? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
? ? ? ? Buy ( "MA2Cross_Long" ) 1 shares next bar at market ;
? ? ? ? pmm_set_global_named_num("num",0);
? ? ? ? pmm_set_global_named_num("entry",-1);
end;
//進(jìn)場(chǎng)
if value1=pmm_get_global_named_num("exit") then begin
? ? ? ? Sell ( "MA2Cross_Exit" ) next bar at market ;
? ? ? ? pmm_set_global_named_num("exit",-1);
end;
//出場(chǎng)
pmm_set_my_named_num("status",-1);
if marketposition=0 and condition1 then
? ? ? ? pmm_set_my_named_num("status",0)
else if marketposition=1 and openentrydate(0)=date then
? ? ? ? pmm_set_my_named_num("status",1)
else if marketposition=1 then
? ? ? ? pmm_set_my_named_num("status",2);
{通過變量"status"來存儲(chǔ)當(dāng)前策略的狀態(tài)}
if value1=pmms_strategies_count-1 then begin
? ? ? ? value3=-1;
? ? ? ? value4=-1;
? ? ? ? value5=-1;
? ? ? ? for value2=0 to pmms_strategies_count-1 begin
? ? ? ? ? ? ? ? if pmms_get_strategy_named_num(value2,"status")=0 then
? ? ? ? ? ? ? ? ? ? ? ? value3=value2
? ? ? ? ? ? ? ? else if pmms_get_strategy_named_num(value2,"status")=2 then
? ? ? ? ? ? ? ? ? ? ? ? value4=value2
? ? ? ? ? ? ? ? else if pmms_get_strategy_named_num(value2,"status")=1 then
? ? ? ? ? ? ? ? ? ? ? ? value5=value2;
? ? ? ? end;
? ? ? ? if value3<>-1 and value4<>-1 then begin
? ? ? ? ? ? ? ? pmm_set_global_named_num("entry",value3);
? ? ? ? ? ? ? ? pmm_set_global_named_num("exit",value4);
? ? ? ? end
? ? ? ? else if value3<>-1 and value5=-1 then
? ? ? ? ? ? ? ? pmm_set_global_named_num("entry",value3);
end;
{在最后一個(gè)策略的執(zhí)行的末尾對(duì)前期所有的策略進(jìn)行遍歷,將當(dāng)前可以進(jìn)場(chǎng)的股票的策略編號(hào)賦值給value3,并且存儲(chǔ)到全局變量"entry“上;將當(dāng)前可以出場(chǎng)的股票的策略編號(hào)賦值給value4,并且存儲(chǔ)到全局變量”exit“上}
這里只是舉個(gè)例子,通過雙均線輪動(dòng)選股,每天最多只交易一次(換股一次);當(dāng)某個(gè)股票滿足進(jìn)場(chǎng)條件(若有若干個(gè)股票同時(shí)滿足進(jìn)場(chǎng)條件,那么會(huì)選擇最后一個(gè)股票進(jìn)場(chǎng)),即出現(xiàn)金叉時(shí),并且當(dāng)前有已有持倉(cāng)的股票是可賣的或者當(dāng)前無任何持倉(cāng)股票,當(dāng)這兩個(gè)條件同時(shí)滿足時(shí)(即一個(gè)股票滿足進(jìn)場(chǎng),另一個(gè)股票滿足出場(chǎng))進(jìn)行換股。?
圖1. 股票投資組合換股
?
?
-
MC回復(fù)討論一:
inputs: Price( Close ), FastLength( 9 ), SlowLength( 18 ) ;
variables: var0( 0 ), var1( 0 ) ;
once??value1=pmms_strategies_get_by_symbol_name(getsymbolname);
{將當(dāng)前策略的編號(hào)存儲(chǔ)到變量value1上}
var0 = AverageFC( Price, FastLength ) ;
var1 = AverageFC( Price, SlowLength ) ;
if value1=0 then begin
? ? ? ? if currentbar=1 or date[1]<>date then
? ? ? ? ? ? ? ? pmm_set_global_named_num("num",1);
end;
{由于策略的執(zhí)行是從策略編號(hào)0開始依次到最大策略編號(hào),然后再循環(huán)執(zhí)行,所以這里通過在策略編號(hào)為0時(shí),對(duì)全局變量“num”進(jìn)行賦值1,即當(dāng)天可交易的次數(shù)}
condition1 = CurrentBar > 1 and var0 crosses above var1 ;
if pmm_get_global_named_num("num")=1 and value1=pmm_get_global_named_num("entry") then begin? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
? ? ? ? Buy ( "MA2Cross_Long" ) 1 shares next bar at market ;
? ? ? ? pmm_set_global_named_num("num",0);
? ? ? ? pmm_set_global_named_num("entry",-1);
end;
//進(jìn)場(chǎng)
if value1=pmm_get_global_named_num("exit") then begin
? ? ? ? Sell ( "MA2Cross_Exit" ) next bar at market ;
? ? ? ? pmm_set_global_named_num("exit",-1);
end;
//出場(chǎng)
pmm_set_my_named_num("status",-1);
if marketposition=0 and condition1 then
? ? ? ? pmm_set_my_named_num("status",0)
else if marketposition=1 and openentrydate(0)=date then
? ? ? ? pmm_set_my_named_num("status",1)
else if marketposition=1 then
? ? ? ? pmm_set_my_named_num("status",2);
{通過變量"status"來存儲(chǔ)當(dāng)前策略的狀態(tài)}
if value1=pmms_strategies_count-1 then begin
? ? ? ? value3=-1;
? ? ? ? value4=-1;
? ? ? ? value5=-1;
? ? ? ? for value2=0 to pmms_strategies_count-1 begin
? ? ? ? ? ? ? ? if pmms_get_strategy_named_num(value2,"status")=0 then
? ? ? ? ? ? ? ? ? ? ? ? value3=value2
? ? ? ? ? ? ? ? else if pmms_get_strategy_named_num(value2,"status")=2 then
? ? ? ? ? ? ? ? ? ? ? ? value4=value2
? ? ? ? ? ? ? ? else if pmms_get_strategy_named_num(value2,"status")=1 then
? ? ? ? ? ? ? ? ? ? ? ? value5=value2;
? ? ? ? end;
? ? ? ? if value3<>-1 and value4<>-1 then begin
? ? ? ? ? ? ? ? pmm_set_global_named_num("entry",value3);
? ? ? ? ? ? ? ? pmm_set_global_named_num("exit",value4);
? ? ? ? end
? ? ? ? else if value3<>-1 and value5=-1 then
? ? ? ? ? ? ? ? pmm_set_global_named_num("entry",value3);
end;
{在最后一個(gè)策略的執(zhí)行的末尾對(duì)前期所有的策略進(jìn)行遍歷,將當(dāng)前可以進(jìn)場(chǎng)的股票的策略編號(hào)賦值給value3,并且存儲(chǔ)到全局變量"entry“上;將當(dāng)前可以出場(chǎng)的股票的策略編號(hào)賦值給value4,并且存儲(chǔ)到全局變量”exit“上}
這里只是舉個(gè)例子,通過雙均線輪動(dòng)選股,每天最多只交易一次(換股一次);當(dāng)某個(gè)股票滿足進(jìn)場(chǎng)條件(若有若干個(gè)股票同時(shí)滿足進(jìn)場(chǎng)條件,那么會(huì)選擇最后一個(gè)股票進(jìn)場(chǎng)),即出現(xiàn)金叉時(shí),并且當(dāng)前有已有持倉(cāng)的股票是可賣的或者當(dāng)前無任何持倉(cāng)股票,當(dāng)這兩個(gè)條件同時(shí)滿足時(shí)(即一個(gè)股票滿足進(jìn)場(chǎng),另一個(gè)股票滿足出場(chǎng))進(jìn)行換股。?
圖1. 股票投資組合換股
?
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容