Params
numeric offset(5);
Vars
Series<array<numeric>> pft_price;
Series<array<numeric>> lst_price;
numeric profit_price;
numeric lost_price;
numeric size;
Defs
Events
OnInit()
{
printclear;
}
OnBar(ArrayRef<Integer> indexes)
{
If(close[1] > open[1] and CurrentContracts < 5 and CurrentBar>MaxBarsBack)
{
print("***"+dateTimeToString(date+time)+"***");
print("开仓");
buy(1, open);
profit_price = open + 2*offset * minmove * PriceScale;
lost_price = open - offset * MinMove * PriceScale;
numeric size;
//记录止盈价格
{
size = GetArraySize(pft_price[0]);
print(text(size));
if(size == 0)
{
pft_price[0][0] = profit_price;
}
Else
{
numeric i;
for i = 0 to size - 1
{
If(profit_price > pft_price[0][i])
{
If(i == size - 1) ArrayPushBack(pft_price[0], profit_price);
else Continue;
}
Else
{
ArrayInsert(pft_price[0], i, profit_price);
break;
}
}
}
print("pft:" + textarray(pft_price[0]));
}
//止盈价格记录结束
//记录止损价格
{
{
size = GetArraySize(lst_price[0]);
print(text(size));
if(size == 0)
{
lst_price[0][0] = lost_price;
}
Else
{
numeric i;
for i = 0 to size - 1
{
If(lost_price < lst_price[0][i])
{
If(i == size - 1)
{
ArrayPushBack(lst_price[0], lost_price);
print("末尾插入");
}
else Continue;
}
Else
{
ArrayInsert(lst_price[0], i, lost_price);
break;
print("中间插入");
}
}
}
print("lst:" + textarray(lst_price[0]));
}
}
//止损价格记录结束
PlotNumeric("pft",pft_price[0][0]);
PlotNumeric("lst",lst_price[0][0]);
}
//while开始
If(BarsSinceEntry>0 and low<=lst_price[0][0])//止损触发//
{
sell(1,min(open,lst_price[0][0]));
print("***"+dateTimeToString(date+time)+"***");
print("止损");
ArrayErase(lst_price[0], 0, 1);
size = GetArraySize(pft_price[0]);
ArrayErase(pft_price[0], size-1, 1);
}//while结束
//while开始
If(BarsSinceEntry>0 and high>=pft_price[0][0])//止盈触发
{
sell(1,max(open,pft_price[0][0]));
print("***"+dateTimeToString(date+time)+"***");
ArrayErase(pft_price[0], 0, 1);
size = GetArraySize(lst_price[0]);
ArrayErase(lst_price[0],size-1, 1);
print("止盈");
}//while结束
If(BarStatus == 2)
{
print("---2---");
print("pft");
print(textarray(pft_price[0]));
print("lst");
print(textarray(lst_price[0]));
}
PlotString("ct", text(CurrentContracts));
}
v2版本,完稿