網格交易加入條件

  •   406 
  • 最後發表   風期會  2021 七月 30
風期會 發文於   2021/07/28

小幫手請教

根據下方的網格交易,我想要加入兩條長短ema均線(60ma、200ma),不知道該加入在哪裡呢?
邏輯是預設做多,但這個做多條件要在close>200ma才開始執行網格交易,一旦close<200ma,就一律清倉=0。
在此感謝幫忙。

//參數定義
input:P_LS(1,"多空啟動",inputkind:=dict(["多方啟動",1],["空方啟動",-1]));
input:P_UpLimit_Percent(1,"區間上緣%");
input:P_DnLimit_Percent(-1,"區間下緣%");
input:P_Grid(5,"網格數");
input:P_GridV(1,"每筆張數");

//變數定義
var:V_LS(0);//多空方向
var:V_Grid(0);//網格點數
var: P_UpLimit(0);//區間上緣
var: P_DnLimit(0);//區間下緣
var:intrabarpersist V_GridNo(0);//網格編號
var:intrabarpersist V_GridPosition(0);//網格目標部位

//多空方向,預設做多
if P_LS=-1 then V_LS=-1 else V_LS=1;

// 計算區間上緣與區間下緣
once begin
    P_UpLimit = intPortion(ema("close",60)[1] * (100 + P_UpLimit_Percent) / 100);
    P_DnLimit = intPortion(ema("close",60)[1] * (100 + P_DnLimit_Percent) / 100);
    print(date, time, P_UpLimit, P_DnLimit);
end;


//網格計算
//計算每格點數
once V_Grid = intPortion((P_UpLimit-P_DnLimit)/P_Grid);
if V_LS=1 then
value1=MaxList((close-P_DnLimit)/V_Grid,0)
else
value1=MaxList((P_UpLimit-close)/V_Grid,0);
//計算目前所處網格編號,最低網格為0號
V_GridNo = intPortion(value1);

//計算網格應有部位
if V_LS=1 then begin
V_GridPosition = P_GridV * maxList(P_Grid - V_GridNo,0);
//啟動策略或價格下跌造成部位不足,以網格下價買齊
if filled < V_GridPosition then begin
setposition(V_GridPosition, P_DnLimit + V_Grid*V_GridNo);
end else begin
//價格上漲造成部位太多,以網格上價賣出
setposition(V_GridPosition, P_DnLimit + (V_Grid+1)*V_GridNo);
end;
end else begin
V_GridPosition = - P_GridV * maxList(P_Grid - V_GridNo,0);
//啟動策略或價格上漲造成部位不足,以網格上價放空
if filled > V_GridPosition then setposition(V_GridPosition, P_UpLimit - V_Grid*V_GridNo);
//價格下跌造成部位太多,以網格下價回補
setposition(V_GridPosition, P_UpLimit - (V_Grid+1)*V_GridNo);
end;

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

Hello 風期會,

 

您說想要加入兩條ema (60和200),但是腳本內原本就有使用60ema作區間上緣下緣計算。

所以您是要先計算好上緣下緣,然後再用作多條件來判斷是否啟動網格交易?

還是要當符合作多條件的時候,才計算上緣下緣並啟動網格交易?

如果是第一種的話,那麼就需要用if...else...包住第36行以後的腳本。

如果是第二種的話,那麼就需要用if...else...包住第18行以後的腳本。

需注意,計算上緣下緣有用 once 關鍵字,所以就算您用第二種,也不會在每次觸發作多條件的時候重新計算。只會在第一次觸發時計算。

附上小幫手修改的腳本,視情況註解第20行或40行。

您可以測試看看是不是符合需求。

附加文件

  • 按讚來自於
  • greg750
風期會 發文於   2021/07/30

感謝小幫手替我設想到兩種情況,

我原先是想要透過60EMA,先行做出上下緣區間計算,然後再用做多條件=c>200ema啟動網格。

第二種是我倒是沒有想到的會產生怎樣的結果;我再來做比較看看,感謝您。

發表回覆
Close