[求助]有幾個遇到的問題,請老師幫忙解答 [贏順期貨]
- 咨詢內容:
第一個問題:是不是想在外盤測試交易組件是否正確不只是把國內的下單信號改成國外的下單信號這么簡單?例如把BK換成BUYLONG這樣?
第二個問題:寫了一個交易組件,其中有個功能不能實現,下面會把交易組件貼出來,不能實現的功能是在C
A1時候,滿足C>A1并且持有空倉或者C 0) { T_Deal(F_DealCode(),0,1,SCC,0);//以市價發出現有空頭持倉數的買平委托 T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托 } IF(SCC==0) { T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托 } M=2; WriteGlobal("M",M); } ELSE IF(F_Sig()==SPK) { IF(BCC>0) { T_Deal(F_DealCode(),1,1,BCC,0);//以市價發出現有多頭持倉數的賣平委托 T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托 } IF(BCC==0) { T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托 } M=2; WriteGlobal("M",M); } } ELSE IF(F_FreshSig()==1&&F_SigValid()==0)//信號消失 { FT_Deal(); } //----------------------------------- IF(M==2) { KT_Deal(); } //------------------------------------ IF(SM==5&&SS==45)//如果當前時間到了當根K線的14分45秒時 { M=1; WriteGlobal("M",M); } //------------------------------------- IF(M=1) { IF(F_Sig()==BPK&&BCC==0)//如果信號為買平開且未持有買單 { T_Deal(F_DealCode(),0,1,SCC,0);//以市價發出現有空頭持倉數的買平委托 T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托 } ELSE IF(F_Sig()==SPK&&SCC==0)//如果信號為賣平開且未持有賣單 { T_Deal(F_DealCode(),1,1,BCC,0);//以市價發出現有多頭持倉數的賣平委托 T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托 } } WriteGlobal("M",M); } VOID KT_Deal()//信號出現處理函數 { IF((C 0))//如果此時C小于B6且持有多單 { T_Deal(F_DealCode(),1,1,BCC,0);//以市價發出現有多頭持倉數的賣平委托 T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托 } ELSE IF((C>A1)&&(SCC>0))//如果此時C大于A1且持有空單 { T_Deal(F_DealCode(),0,1,SCC,0);//以市價發出現有空頭持倉數的買平委托 T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托 } M=2; WriteGlobal("M",M); } VOID FT_Deal()//信號消失處理函數 { IF (F_Sig()==BPK)//如果信號為買平開 { T_Deal(F_DealCode(),1,1,BCC,0);//以市價發出現有多頭持倉數的賣平委托 T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托 } IF(F_Sig()==SPK)//如果信號為賣平開 { T_Deal(F_DealCode(),0,1,SCC,0);//以市價發出現有空頭持倉數的買平委托 T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托 } } VAR SEC()//返回當根k線秒時間自定義函數 { VAR T; VAR N1; T=CurrentTime(); N1=T-(T/60)*60; RETURN(N1); } VAR SFF()//返回當根k線分鐘時間自定義函數 { VAR FF; VAR FF15; VAR T; T=CurrentTime(); FF=T/60-(T/60/60)*60; FF15=FF-(FF/5)*5;//表示加載在5分鐘周期上 RETURN(FF15); } - 贏順技術人員:
您發帖模式有誤導致混亂,請重新以正常設計模式發送。謝謝合作。
- 贏順客服:
VAR A1;
VAR A2;
VAR B6;
VAR H;
VAR L;
VAR BCC;//取當前持有的買單數
VAR SCC;//取當前持有的賣單數
VAR dealcode;
VAR KPN;
VAR C;
VAR M;
VAR SS;//取當前K線的秒時間
VAR SM;//取當前K線的分時間
VOID MAIN()//主函數。
{
SS=SEC();
SM=SFF();
H=F_High(0);//定義H為最后一根K線的最高價
L=F_Low(0);//定義L為最后一根K線的最低價
A1=H-(H-L)*0.25;
A2=H-(H-L)*0.26;
B6=L+(H-L)*0.25;
BCC=F_BuyPosition();//定義BCC為當前模型的多頭持倉
SCC=F_SellPosition();//定義SCC為當前模型的空頭持倉
dealcode=F_DealCode();//定義dealcode為模型加載的合約名稱
KPN=2;//定義默認開倉手數為2
C=F_Close(0);//定義C為當前模型加載最后一根K線收盤價
M=ReadGlobal("M");//M的意義:2 進入止損函數KT_DEAL,1 進入最后15秒
IF(F_FreshSig()==1)//取得新信號
{
IF(F_Sig()==BPK)
{
IF(SCC>0)
{
T_Deal(F_DealCode(),0,1,SCC,0);//以市價發出現有空頭持倉數的買平委托
T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托
}
IF(SCC==0)
{
T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托
}
M=2;
WriteGlobal("M",M);
}
ELSE IF(F_Sig()==SPK)
{
IF(BCC>0)
{
T_Deal(F_DealCode(),1,1,BCC,0);//以市價發出現有多頭持倉數的賣平委托
T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托
}
IF(BCC==0)
{
T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托
}
M=2;
WriteGlobal("M",M);
}
}ELSE IF(F_FreshSig()==1&&F_SigValid()==0)//信號消失
{
FT_Deal();
}
//-----------------------------------
IF(M==2)
{
KT_Deal();
}
//------------------------------------
IF(SM==5&&SS==45)//如果當前時間到了當根K線的14分45秒時
{
M=1;
WriteGlobal("M",M);
}
//-------------------------------------
IF(M=1)
{
IF(F_Sig()==BPK&&BCC==0)//如果信號為買平開且未持有買單
{
T_Deal(F_DealCode(),0,1,SCC,0);//以市價發出現有空頭持倉數的買平委托
T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托
}
ELSE IF(F_Sig()==SPK&&SCC==0)//如果信號為賣平開且未持有賣單
{
T_Deal(F_DealCode(),1,1,BCC,0);//以市價發出現有多頭持倉數的賣平委托
T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托
}
}
WriteGlobal("M",M);
}
VOID KT_Deal()//信號出現處理函數
{
IF((C<B6)&&(BCC>0))//如果此時C小于B6且持有多單
{
T_Deal(F_DealCode(),1,1,BCC,0);//以市價發出現有多頭持倉數的賣平委托
T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托
}
ELSE IF((C>A1)&&(SCC>0))//如果此時C大于A1且持有空單
{
T_Deal(F_DealCode(),0,1,SCC,0);//以市價發出現有空頭持倉數的買平委托
T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托
}M=2;
WriteGlobal("M",M);
}
VOID FT_Deal()//信號消失處理函數
{
IF (F_Sig()==BPK)//如果信號為買平開
{
T_Deal(F_DealCode(),1,1,BCC,0);//以市價發出現有多頭持倉數的賣平委托
T_Deal(F_DealCode(),1,0,KPN,0);//以市價發出規定手數(KPN)的賣開委托
}
IF(F_Sig()==SPK)//如果信號為賣平開
{
T_Deal(F_DealCode(),0,1,SCC,0);//以市價發出現有空頭持倉數的買平委托
T_Deal(F_DealCode(),0,0,KPN,0);//以市價發出規定手數(KPN)的買開委托
}
}
VAR SEC()//返回當根k線秒時間自定義函數
{
VAR T;
VAR N1;
T=CurrentTime();
N1=T-(T/60)*60;
RETURN(N1);
}
VAR SFF()//返回當根k線分鐘時間自定義函數
{
VAR FF;
VAR FF15;
VAR T;
T=CurrentTime();
FF=T/60-(T/60/60)*60;
FF15=FF-(FF/5)*5;//表示加載在5分鐘周期上
RETURN(FF15);
} - 網友回復:
這樣就正常了,剛才可能點到什么了
- 網友回復:
第一個問題:是不是想在外盤測試交易組件是否正確不只是把國內的下單信號改成國外的下單信號這么簡單?例如把BK換成BUYLONG這樣?
第二個問題:寫了一個交易組件,其中有個功能不能實現,下面會把交易組件貼出來,不能實現的功能是在C>
A1時候,滿足C>A1并且持有空倉或者C<B6且持有多倉才下單,而是只要滿足C>A1或者C<B6就不停下單一直到沒有錢申報失敗。當然失敗了之后還會繼續下單。 第三個問題:時間控制沒有效果,是因為下單之后的持倉總是和信號方向相同所以沒效果還是什么原因?我怎么能測試出時間控制這個部分是否生效?
第四格問題:如果我春節期間想測試我的下單組件,請問用什么方式?
- 上一篇:關于數據調用問題的思考
- 下一篇:沒有了!
相關文章
-
沒有相關內容