Haydn 發表於 18-3-31 16:39

請問怎麼讓StrategyQuant v3.8.2轉成MC的程式程式碼能在MC上正.....

本帖最後由 Haydn 於 18-3-31 16:41 編輯

這程式碼是從定量策略大師 StrategyQuant v3.8.2轉成MC的程式碼
放進MC後 編譯成功 但是放進圖形後沒有反應 請問要修改哪裡讓城市能正常運作


inputs:


//------------------------------------------------------------------
// Strategy Options
MaxTradesPerDay(0),
ExitOnClose(true),
LimitSignalsToRange(true),
TimeRangeFrom(0800),
TimeRangeTo(0400),


//------------------------------------------------------------------
// Money Management Parameters
// MoneyManagementType:
//0 - fixed size (from TradeSize)
//1 - risk fixed % of account equity
//2 - risk fixed amount in $
//------------------------------------------------------------------
CapitalSize(10000),
MoneyManagementType(0),
TradeSize(1.0),
SizeRounding(0),
RiskPerTrade(0), // in % or in $, depending on MM type
MaxTradeSize(0);


vars:
tickSize(MinMove/PriceScale),
PriceLevel(0), NumberOfShares(0),
LongSL(0),LongPT(0),
ShortSL(0),ShortPT(0),
SLSize(0),
LongEntryCondition(false),ShortEntryCondition(false),
LongExitCondition(false),ShortExitCondition(false);


// ------------------------------------------
// ENTRY RULES
// ------------------------------------------
if(LimitSignalsToRange = false or (Time >= TimeRangeFrom and Time < TimeRangeTo)) then begin


    // Long --------
    if(MaxTradesPerDay = 0 or EntriesToday(Date) < MaxTradesPerDay) then begin
      LongEntryCondition = ((Average(Close,2) < Average(Close,9)) and (Average(Close,2) >= Average(Close,9)));
      if(LongEntryCondition = true) then begin
            SLSize = 31 * tickSize;
            //NumberOfShares = SQ_MoneyManagement(CapitalSize, SLSize, MoneyManagementType, TradeSize, SizeRounding, RiskPerTrade, MaxTradeSize);


            if(MarketPosition = 0) then
                Buy("LongMarket") NumberOfShares shares next bar at market;
                end;
    end;


    // Short --------
    if(MaxTradesPerDay = 0 or EntriesToday(Date) < MaxTradesPerDay) then begin
      ShortEntryCondition = ((Average(Close,2) > Average(Close,9)) and (Average(Close,2) <= Average(Close,9)));
      if(ShortEntryCondition = true) then begin
            SLSize = 31 * tickSize;
            //NumberOfShares = SQ_MoneyManagement(CapitalSize, SLSize, MoneyManagementType, TradeSize, SizeRounding, RiskPerTrade, MaxTradeSize);
            if(MarketPosition = 0) then
                SellShort("ShortMarket") NumberOfShares shares next bar at market;
      end;
      end;
end;


// ------------------------------------------
// MANAGE TRADE & EXIT RULES
// ------------------------------------------


// Long --------
if(MarketPosition > 0) then begin
    If BarsSinceEntry = 0 then begin
      LongPT = 0;
      LongSL = EntryPrice - 31 * tickSize;
    end;




      // Stop trailing
    PriceLevel = Round2Fraction(Open + (0.2) * (AvgTrueRange(112)));
    if(PriceLevel > 0) then begin
      if(LongSL = 0 or LongSL < PriceLevel) then
            LongSL = PriceLevel;
    end;


    if(LongPT > 0) then
      Sell("LongPT") next bar at LongPT limit;
    if(LongSL > 0) then
      Sell("LongSL") next bar at LongSL stop;
end;


// Short --------
if(MarketPosition < 0) then begin
    If BarsSinceEntry = 0 then begin
      ShortPT = 0;
      ShortSL = EntryPrice + 31 * tickSize;
    end;




      // Stop trailing
    PriceLevel = Round2Fraction(Open + (-0.2) * (AvgTrueRange(112)));
    if(PriceLevel > 0) then begin
      if(ShortSL = 0 or ShortSL > PriceLevel) then
            ShortSL = PriceLevel;
    end;


    if(ShortPT > 0) then
      BuyToCover("ShortPT") next bar at ShortPT limit;
    if(ShortSL > 0) then
      BuyToCover("ShortSL") next bar at ShortSL stop;
end;


if(ExitOnClose) then
      SetExitOnClose;




goldriverxie 發表於 18-3-31 17:32

本帖最後由 goldriverxie 於 18-3-31 17:47 編輯

因為有兩行被註解掉了

//NumberOfShares = SQ_MoneyManagement(CapitalSize, SLSize, MoneyManagementType, TradeSize, SizeRounding, RiskPerTrade, MaxTradeSize);



是不是因為這兩行編譯會出錯,所以就註解掉?NumberOfShares是決定下單部位大小的變數,初值為0當然不會下單


使用前應該先將SQ的公式匯入MC,這樣編譯才不會出現錯誤


SQ的公式位於:C:\StrategyQuant\custom_indicators\SQ_TRADESTATION.ELD

請先匯入公式,並將那兩註解恢復,再編譯一次

參數也不能用預設值,要改掉,例如
1, true, true, 0845, 1345, ......

Haydn 發表於 18-3-31 19:17

goldriverxie 發表於 18-3-31 17:32
因為有兩行被註解掉了

//NumberOfShares = SQ_MoneyManagement(CapitalSize, SLSize, MoneyManagementTy ...

謝謝老闆!
已將SQ的公式匯入MC,並恢復註解編譯成功
參數設定的部分
我是做外期的日內交易 數據源是用CQG 希望程式只限於在台灣時間的AM08:00~次日的AM04:00間運作
能請老闆幫忙指導一下如何設定嗎?

TKS!!!
.......................................................................................................................................................
inputs:

//------------------------------------------------------------------
// Strategy Options
MaxTradesPerDay(0),
ExitOnClose(true),
LimitSignalsToRange(true),
TimeRangeFrom(0800),
TimeRangeTo(0400),

//------------------------------------------------------------------
// Money Management Parameters
// MoneyManagementType:
//0 - fixed size (from TradeSize)
//1 - risk fixed % of account equity
//2 - risk fixed amount in $
//------------------------------------------------------------------
CapitalSize(10000),
MoneyManagementType(0),
TradeSize(1),
SizeRounding(0),
RiskPerTrade(0), // in % or in $, depending on MM type
MaxTradeSize(0);




goldriverxie 發表於 18-3-31 21:10

Haydn 發表於 18-3-31 19:17
謝謝老闆!
已將SQ的公式匯入MC,並恢復註解編譯成功
參數設定的部分


抱歉,跨日交易沒有試過,不知如何設定{:4_93:}

Haydn 發表於 18-3-31 22:24

goldriverxie 發表於 18-3-31 21:10
抱歉,跨日交易沒有試過,不知如何設定

我再研究看看 謝謝!{:4_160:}

Haydn 發表於 18-3-31 22:52

再請問一下 如果不理會交易時間的問題 要如何將信號顯示在圖中呢?

goldriverxie 發表於 18-4-1 00:09

Haydn 發表於 18-3-31 22:52
再請問一下 如果不理會交易時間的問題 要如何將信號顯示在圖中呢?

參數 MaxTradesPerDay,應該要大於0,否則不會有任何交易產生,
參數 LimitSignalsToRange,設為 false (不受限交易時段)
測試過,有交易訊號產生

Haydn 發表於 18-4-1 00:51

goldriverxie 發表於 18-4-1 00:09
參數 MaxTradesPerDay,應該要大於0,否則不會有任何交易產生,
參數 LimitSignalsToRange,設為 false ( ...

感恩師父 讚嘆師父{:4_154:}信號跑出來了 只要將 LimitSignalsToRange 設成False 就可以了.
MaxTradesPerDay(0) 這個應該是每天最大的交易量.
設(1) 變成一天只有一個信號 設(0) 則所有信號都出現.

再次謝謝您啊!!!




goldriverxie 發表於 18-4-1 00:54

Haydn 發表於 18-4-1 00:51
感恩師父 讚嘆師父信號跑出來了 只要將 LimitSignalsToRange 設成False 就可以了.
MaxTradesP ...

原來如此,祝您交易順利{:4_113:}
頁: [1]
查看完整版本: 請問怎麼讓StrategyQuant v3.8.2轉成MC的程式程式碼能在MC上正.....