投资者咨询:请老师帮助看看 (文华财经wh9)
来源:文华财经 日期:2018-5-24 10:53
请老师帮助看一下,为什么我每次开仓都是两手。
if(Close > REF(High, 1))
{
Buy(1,Limit_Order);
}
if(Close < REF(Low,1))
{
Sellshort(1,Limit_Order);
}
TBAP = A_BuyAvgPrice(); //取得持仓栏中该合约多头持仓均价
TSAP = A_SellAvgPrice();
TBP = A_BuyPosition();
TSP = A_SellPosition();
LatestPrice = Q_Last;
NB = BarsLast(Minute<>Ref(Minute,1))+1;
BB = CountSig(Buy,NB);
SS = CountSig(SellShort,NB);
If(F_CurrentSig == Sig_Buy)
{
if(TBP == 0)
{
data0.A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
}
else if(TBP != 0 && LatestPrice > TBAP * 1.0015 && BB == 0)
{
data0.A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
}
}
If(F_CurrentSig == Sig_SellShort)
{
if(TSP == 0)
{
data0.A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
}
else if(TSP != 0 && LatestPrice < TSAP * 0.9985 && SS == 0)
{
data0.A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
}
}
{
Buy(1,Limit_Order);
}
if(Close < REF(Low,1))
{
Sellshort(1,Limit_Order);
}
TBAP = A_BuyAvgPrice(); //取得持仓栏中该合约多头持仓均价
TSAP = A_SellAvgPrice();
TBP = A_BuyPosition();
TSP = A_SellPosition();
LatestPrice = Q_Last;
NB = BarsLast(Minute<>Ref(Minute,1))+1;
BB = CountSig(Buy,NB);
SS = CountSig(SellShort,NB);
If(F_CurrentSig == Sig_Buy)
{
if(TBP == 0)
{
data0.A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
}
else if(TBP != 0 && LatestPrice > TBAP * 1.0015 && BB == 0)
{
data0.A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
}
}
If(F_CurrentSig == Sig_SellShort)
{
if(TSP == 0)
{
data0.A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
}
else if(TSP != 0 && LatestPrice < TSAP * 0.9985 && SS == 0)
{
data0.A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
}
}
技术人员回复
日期:2018-5-24 11:09
投资者咨询:请老师帮助看看 (文华财经wh9)
来源:文华财经 日期:2018-5-24 10:53
不好意思,没有给您贴完全,这个是我的模型,我用了您说的那个SignalNoTrading:1;
Data
data0:"CF901";
Params
Vars
Numeric LatestPrice;
Numeric NB;
Numeric BB;
Numeric SS;
Numeric TBP;
Numeric TSP;
Numeric TBAP;
Numeric TSAP;
Numeric Turn;
Numeric OverallProfit;
Numeric TotalPosition;
Numeric UnitPrice;
Setting
SignalNoTrading:1;
AddTimes:1000;
Begin
if(Close > REF(High, 1))
{
Buy(1,Limit_Order);
}
if(Close < REF(Low,1))
{
Sellshort(1,Limit_Order);
}
TBAP = A_BuyAvgPrice();
TSAP = A_SellAvgPrice();
TBP = A_BuyPosition();
TSP = A_SellPosition();
LatestPrice = Q_Last;
NB = BarsLast(Minute<>Ref(Minute,1))+1;
BB = CountSig(Buy,NB);
SS = CountSig(SellShort,NB);
If(F_CurrentSig == Sig_Buy)
{
if(TBP == 0)
{
data0.A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
}
else if(TBP != 0 && LatestPrice > TBAP * 1.0015 && BB == 0)
{
data0.A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
}
}
If(F_CurrentSig == Sig_SellShort)
{
if(TSP == 0)
{
data0.A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
}
else if(TSP != 0 && LatestPrice < TSAP * 0.9985 && SS == 0)
{
data0.A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
}
}
End
技术人员回复
日期:2018-5-24 11:25
我们测试下,下午给您回复
投资者咨询:请老师帮助看看 (文华财经wh9)
来源:文华财经 日期:2018-5-24 10:53
谢谢
技术人员回复
日期:2018-5-24 14:18
这么试试
建议您把思路完整说下,重新给您写下
Data
data0:"CF901";
Params
Vars
Numeric LatestPrice;
Numeric NB;
Numeric BB;
Numeric SS;
Numeric TBP;
Numeric TSP;
Numeric TBAP;
Numeric TSAP;
Numeric Turn;
Numeric OverallProfit;
Numeric TotalPosition;
Numeric UnitPrice;
Setting
SignalNoTrading:1;
AddTimes:1000;
Begin
if(Close > REF(High, 1))
{
Buy(1,Limit_Order);
}
if(Close < REF(Low,1))
{
Sellshort(1,Limit_Order);
}
TBAP = A_BuyAvgPrice();
TSAP = A_SellAvgPrice();
TBP = A_BuyPosition();
TSP = A_SellPosition();
LatestPrice = Q_Last;
NB = BarsLast(Minute<>Ref(Minute,1))+1;
BB = CountSig(Buy,NB);
SS = CountSig(SellShort,NB);
If(F_CurrentSig == Sig_Buy&&GetGlobalVar(0)==1)
{
if(TBP == 0)
{
data0.A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
SetGlobalVar(0,1);
}
else if(TBP != 0 && LatestPrice > TBAP * 1.0015 && BB == 0)
{
data0.A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
SetGlobalVar(0,1);
}
}
If(F_CurrentSig == Sig_SellShort&&GetGlobalVar(0)==0)
{
if(TSP == 0)
{
data0.A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
SetGlobalVar(0,1);
}
else if(TSP != 0 && LatestPrice < TSAP * 0.9985 && SS == 0)
{
data0.A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
SetGlobalVar(0,1);
}
}
If ((BarsSellShort==1||BarsBuy==1)&&GetGlobalVar(0)==1)
{
SetGlobalVar(0,0);
}
End
投资者咨询:请老师帮助看看 (文华财经wh9)
来源:文华财经 日期:2018-5-24 10:53
老师您好,我的思路是这样的:
1. 多头开仓条件A:(突破前高,并且MA5在MA10以上),开一手多仓;在条件A下,如果最新价突破均价1%以上,加一手多仓;如果条件合适,可以连续加仓;
3. 平仓条件C:在持仓条件下(可能同时拥有多空仓,或者只有持单边仓),只要该合约的(多头持仓浮盈+空头持仓浮盈)的数值 大于(该合约总持仓量 * 30)的数值,就平掉所有持仓
4. 每根K线上只有一次操作:或开仓,或加仓,或平仓。如果有过上述任何一种操作,则当前K线不会再次进行其他操作。
1. 多头开仓条件A:(突破前高,并且MA5在MA10以上),开一手多仓;在条件A下,如果最新价突破均价1%以上,加一手多仓;如果条件合适,可以连续加仓;
2. 空头开仓条件B:跌破前低,并且MA5在MA10以下,开一手空仓;在条件B下,如果最新价跌破均价1%以上,加一手空仓;如果条件合适,可以联系加仓;
3. 平仓条件C:在持仓条件下(可能同时拥有多空仓,或者只有持单边仓),只要该合约的(多头持仓浮盈+空头持仓浮盈)的数值 大于(该合约总持仓量 * 30)的数值,就平掉所有持仓
4. 每根K线上只有一次操作:或开仓,或加仓,或平仓。如果有过上述任何一种操作,则当前K线不会再次进行其他操作。
5. 如果在主界面主观手动加仓,或减仓,或平仓,希望程序能够正确识别。即如果有手动加仓,那么上述的平仓条件里的持仓浮盈就要大于(程序单跟手动单的所有多空仓*30)的数值。
我已经在WH8通过模组出信号,算法下单的方式解决了上述问题。现在也在考虑套利程序化,所以需要转到MQ上来。
谢谢老师的帮助。
技术人员回复
日期:2018-5-24 21:49
我们分析下,明日给您回复
投资者咨询:请老师帮助看看 (文华财经wh9)
来源:文华财经 日期:2018-5-24 10:53
投资者咨询:请老师帮助看看 (文华财经wh9)
来源:文华财经 日期:2018-5-24 10:53
还有老师,请问这个 GetGlobalVar跟SetGlobalVar 的用途是什么?我尝试在软件的‘函数列表’里和 软件右上角》帮助》软件说明书》常见问题里面寻找答案,源于编程知识浅薄,实在看不明白,还请老师帮忙解释一下。我也尝试在论坛的历史帖子里面找,也不是很幸运。
谢谢
