小幫手請教
根據下方的網格交易,我想要加入兩條長短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;
2 評論