盤中外盤大單交易

  •   150 
  • 最後發表   黑框  2021 十一月 10
黑框 發文於   2021/11/08

小幫手您好,如果我希望在盤中6筆交易內,其中有三筆外盤成交金額大於50萬的時候買入

可以用以下的寫法嗎:

///////////////////////////////////////////////////////////////////////////

var: intraBarPersist tick_count(0);

array: intraBarPersist q_last1[6](0);

array: intraBarPersist q_TickVolume1[6](0);

array: intraBarPersist BidAskFlag1[6](0);

/////////////////////////////////////////////////////////////////////////////////////

if tick_count = 0 and GetInfo("IsRealTime") = 1 then begin

    q_last1[1] = q_last;

    q_last1[1] = q_last;

     tick_count += 1;

     end

else if tick_count > 0 and GetInfo("IsRealTime") = 1 then begin

    q_last1[1] = q_last1[2];

    q_last1[2] = q_last1[3];

    q_last1[3] = q_last1[4];

    q_last1[4] = q_last1[5];

    q_last1[5] = q_last1[6];

    q_last1[6] = q_last;

    tick_count += 1;

    end;

//-----------------------------------------------------------

if tick_count = 0 and GetInfo("IsRealTime") = 1 then begin

    q_TickVolume1[1] = q_TickVolume;

    q_TickVolume1[1] = q_TickVolume;

    tick_count += 1;

    end

else if tick_count > 0 and GetInfo("IsRealTime") = 1 then begin

    q_TickVolume1[1] = q_TickVolume1[2];

    q_TickVolume1[2] = q_TickVolume1[3];

    q_TickVolume1[3] = q_TickVolume1[4];

    q_TickVolume1[4] = q_TickVolume1[5];

    q_TickVolume1[5] = q_TickVolume1[6];

    q_TickVolume1[6] = q_TickVolume;

    tick_count += 1;

    end;

//-----------------------------------------------------------

if tick_count = 0 and GetInfo("IsRealTime") = 1 then begin

    BidAskFlag1[1] = q_BidAskFlag;

    BidAskFlag1[1] = q_BidAskFlag;

    tick_count += 1;

    end

else if tick_count > 0 and GetInfo("IsRealTime") = 1 then begin

    BidAskFlag1[1] = BidAskFlag1[2];

    BidAskFlag1[2] = BidAskFlag1[3];

    BidAskFlag1[3] = BidAskFlag1[4];

    BidAskFlag1[4] = BidAskFlag1[5];

    BidAskFlag1[5] = BidAskFlag1[6];

    BidAskFlag1[6] = q_BidAskFlag;

    tick_count += 1;

    end;

///////////////////////////////////////////////////////////////

Value1=countIf(BidAskFlag1*q_last1*q_TickVolume1>500,6);

If value1>3 then setposition (1,market);

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/11/10

Hello 黑框,

 

您應該是想要用6格array來記錄近6筆資訊,1最舊6最新,那其實只要:

if GetInfo("IsRealTime") = 1 then begin

    q_last1[1] = q_last1[2];   //這筆會把原本在 q_last1[2] 的資訊 放入 q_last1[1] 裡

    q_last1[2] = q_last1[3];

    q_last1[3] = q_last1[4];

    q_last1[4] = q_last1[5];

    q_last1[5] = q_last1[6];    //q_last1[6]的資料放入q_last1[5]

    q_last1[6] = q_last;       //q_last1[6] 會用來存最新的資料

    end;

應該就可以了。

 

countIf 需要給的參數是序列數值而不是array。

雖然兩者取值有相似之處但還是不同的。

建議您可以自行撰寫函數腳本,或是直接在原腳本中判斷:

value1 = 0;

for value2 = 1 to 6 begin

    if (BidAskFlag1[value2]*q_last1[value2]*q_TickVolume1[value2]) > 500 then value1 += 1;

    end;

if value1 > 3 then setposition(1, market);

黑框 發文於   2021/11/10

謝謝小幫手,我再試試看~

發表回覆
Close