自動交易中心沒有賣出

  •   137 
  • 最後發表   阿頂  2021 十一月 08
阿頂 發文於   2021/11/04

1. 到了停損點沒有賣出

2.我在手機賣出或是買進,但是執行中的策略沒有即時更新目前的部位,這要如何是好?

 

我的設定是

指定組合:1101內有10支觀察股票

自動加入商品:啟用

執行頻率:日-原始值

逐筆洗價:啟用

策略部位計算地點:不指定,筆數:100

交易帳號:已啟用

策略部位:依庫存

{

多單移動停利(點)

 

設定停損點(如果不設定的話, 請把loss_point設定成0), 以及停利點, 跟回跌點數

價格下跌到停損時出場

價格上漲到停利點後啟動移動停利, 如果價格繼續上漲, 則繼續持有, 如果價格回檔超過回跌點數時, 則停利出場

}

以下是程式

input:profit_percent(3,"停利(%)");

input:profit_drawback_percent(1,"停利回跌(%)");

input:loss_percent(2, "停損(%)");

 

var:intrabarpersist profit_point(0);            //停利點數

var:intrabarpersist profit_drawback_point(0);   //回檔停利點數

var:intrabarpersist loss_point(0);              //停損點數

 

var: intrabarpersist max_profit_point(0); { 啟動停利後最大獲利點 }

 

 

 

if Position > 0 then 

   begin

     if profit_point=0 then

    begin

   profit_point=FilledAvgPrice*(1+(0.01*profit_percent));

           profit_drawback_point=profit_point*(1-(0.01*profit_drawback_percent));

           loss_point=FilledAvgPrice*(1-(0.01*loss_percent));

    end;

    //如果低於成本價2%時要停損

  

if Close <= loss_point then 

   begin

if (FilledAvgPrice-close)*Position > 5000 then  SetPosition(0);   { 停損:單一檔最大損失2%且金額大於5000元 }

max_profit_point = 0;

print("1當天最高價位:",q_dailyhigh);

         print("1目前價位:",close);

         print("1成本價::",FilledAvgPrice);

         print("1停利價位:",profit_point);

         print("1停損價位:",loss_point);

         print("1目前部位:",position);

print("停損賣出");

       end 

  else 

   begin

{ 判斷是否要啟動停利:當close大於停利點時,啟動停利作業max_profit_point<>0 }

     if max_profit_point = 0 and Close >= profit_point then 

    begin

      max_profit_point = close; //最高點停利點往上移到本日最高,下一行重算獲利回跌點1%

  profit_drawback_point=max_profit_point*(1-(0.01*profit_drawback_percent));

  print("2當天最高價位:",q_dailyhigh);

              print("2目前價位",close);

              print("2成本價::",FilledAvgPrice);

              print("2停利價位:",profit_drawback_point);

              print("2停損價位:",loss_point);

              print("2目前部位:",position);

    end;

if max_profit_point <> 0 then       {已經啟動停利}

    begin

      if Close <= profit_drawback_point then 

         begin

       SetPosition(0);  { 停利賣出 }

   print("停利賣出");

   max_profit_point = 0;

   print("3當天最高價位:",q_dailyhigh);

                   print("3目前價位",close);

                   print("3成本價::",FilledAvgPrice);

       print("3目前最高點:",max_profit_point);

       print("3獲利回吐價位:",profit_drawback_point);

                   print("3停利價位:",profit_point);

                   print("3停損價位:",loss_point);

                   print("3目前部位:",position);

     end 

   else 

     if Close > max_profit_point then 

    begin

      { 移動最大獲利點 }

      max_profit_point = Close;

  profit_drawback_point=max_profit_point*(1-(0.01*profit_drawback_percent));

  print("4當天最高價位:",q_dailyhigh);

                      print("4目前價位",close);

                      print("4成本價::",FilledAvgPrice);

          print("4目前最高點:",max_profit_point);

          print("4獲利回吐價位:",profit_drawback_point);

                      print("4停利價位:",profit_point);

                      print("4停損價位:",loss_point);

                      print("4目前部位:",position);

        end;

end;

 

   end;

   end;

 

 

XQ小幫手 發文於   2021/11/08

Hello 阿頂,

 

1. 

由於是停損部分有問題,所以小幫手就探討停損部分。

if Close <= loss_point then begin

    if (FilledAvgPrice-close)*Position > 5000 then  SetPosition(0);   { 停損:單一檔最大損失2%且金額大於5000元 }

需注意一張股票是1000股,所以在計算金額時要多乘上1000才會是正確的虧損金額。

舉例來說,10張10元買進的股票跌到9.4元的話會是下跌6%,但是 (10-9.4) * 10 會是 6。

推測應該是此處導致沒有出場。

如果不是的話,需要麻煩您告知是什麼商品的進出場有問題,並提供詳細的時間點和價位讓小幫手確認該如何修改。

 

2.

自動交易策略啟動後部位就不會受外部(手動、其他策略)的影響。

所以若您在已啟動該策略的狀況下去手動下單,策略內的庫存部位是不會變動的。

策略部位:依庫存 只會在啟動的時候去讀取帳戶庫存。

所以如果您後來下單的部位也要納進該策略來控管的話,需要手動重啟讓其再次讀取部位庫存才行。

目前相關人員有在研議替代方案讓用戶可以在策略啟動的狀況下更改部位庫存。

發表回覆
Close