【教學】所有策略強制上架
2018-02-27
教學分享
用戶可修改 OutputByTick 程式碼,來達到所有策略強制上架。

方法一:
MR 提供預設上下架的程式碼區塊,如下:

{ActMode setting}  
vars:LD(0),checkdd(0),RetrDD(0),RH(0),ActModeTurn(0);
if openprofit>RH then begin RH=openprofit; ActMode=1; end;                            // Highest Profit 
checkdd=(openprofit-RH);                                                              // DD after Re-act
if checkdd<LD then LD=checkdd;                                                        // Lowest DD and date after Re-act
RetrDD=checkdd-LD;                                                                    // Recover profit
if checkdd=0 then LD=0 ;                                                              // New high profit after Re-act then LD re-set
if RetrDD[1]>500*bigpointvalue then begin RH=openprofit; ActMode=1; end;                 // DD Active threshold
if LD[1]<-1000*bigpointvalue then ActMode=0 ;                                            // DD Inactive threshold
if ActMode>ActMode[1] then begin ActModeTurn=ActModeTurn+1;RH=openprofit;end;         // ActMode Swich times & Reset RH after Re-act
{ActMode setting}   

可以將「控制策略上下架的程式碼註解」,便可強制所有策略上架。

修改後如下:
{ActMode setting}  
vars:LD(0),checkdd(0),RetrDD(0),RH(0),ActModeTurn(0);
if openprofit>RH then begin RH=openprofit; ActMode=1; end;                            // Highest Profit 
checkdd=(openprofit-RH);                                                              // DD after Re-act
if checkdd<LD then LD=checkdd;                                                        // Lowest DD and date after Re-act
RetrDD=checkdd-LD;                                                                    // Recover profit
if checkdd=0 then LD=0 ;                                                              // New high profit after Re-act then LD re-set
// if RetrDD[1]>500*bigpointvalue then begin RH=openprofit; ActMode=1; end;                 // DD Active threshold
// if LD[1]<-1000*bigpointvalue then ActMode=0 ;                                            // DD Inactive threshold
if ActMode>ActMode[1] then begin ActModeTurn=ActModeTurn+1;RH=openprofit;end;         // ActMode Swich times & Reset RH after Re-act
{ActMode setting}   


方法二:
MR 提供輸出文字檔的程式碼區塊,如下:
{--Output file--}
if date=lastcalcdate and t=lastcalctime then begin 
DefineDLLFunc:"C:\MCOutput64.dll",void,"outputfile",lpstr,lpstr;
output=getsymbolname+","+Strategyname+","+MaxContracts+","+NumToStr(Date,0)+","+NumToStr(Time,0)
  +","+NumToStr(ActMode,0)+","+NumToStr(Eva1,3)+","+NumToStr(Eva2,3)+","+NumToStr(Eva3,3)+","+NumToStr(Eva4,3)
  +","+NumToStr(i_AvgEntryPrice,0)+","+NumToStr(cp,0)+","+NumToStr(NowProfit,0)+","+NumToStr(EntryD,0)
  +","+NumToStr(checkdd,0)+","+NumToStr(LD,0);
  outputfile("C:\AutoTradingMonitor\"+Strategyname+".txt",output);
end;
{--Output file--} 
可以將 Actmode 欄位,強制修改為 1,即可強制所有策略上架。

修改後如下:
{--Output file--}
if date=lastcalcdate and t=lastcalctime then begin 
DefineDLLFunc:"C:\MCOutput64.dll",void,"outputfile",lpstr,lpstr;
output=getsymbolname+","+Strategyname+","+MaxContracts+","+NumToStr(Date,0)+","+NumToStr(Time,0)
  +","+NumToStr(1,0)+","+NumToStr(Eva1,3)+","+NumToStr(Eva2,3)+","+NumToStr(Eva3,3)+","+NumToStr(Eva4,3)
  +","+NumToStr(i_AvgEntryPrice,0)+","+NumToStr(cp,0)+","+NumToStr(NowProfit,0)+","+NumToStr(EntryD,0)
  +","+NumToStr(checkdd,0)+","+NumToStr(LD,0);
   outputfile("C:\AutoTradingMonitor\"+Strategyname+".txt",output);
end;
{--Output file--}