固定止盈点数=止损价格-开仓价格
这个公式怎么写
我自己写的
ZYDS=mylossprice-myentryprice;(做空为例)
if(low<=myentryprice-zyds*minpoint)
{
buytocover(ss,open);
}
按照这个写,在图表上计算出来的止盈点数不等于止损价格和开仓价格的差值
感觉时间都用在编辑策略上了,比手动盯盘做单都要少了,建议TB编辑策略还要优化一下,最好是各种功能组装就能直接用,复杂的做不到,简单的止盈和止损可以做到吧
老兄,你这问题描述得也太不知所云了吧!if里面都是省略号,这也叫公式可以运行?我都看不懂你在说什么,也难怪tb工作人员答非所问了吧
你用最低价来判断 但是却用开盘价来作为信号价格?难道不是应该用止盈价格吗
我现在求助的是如何计算建仓价格和止损价格相差多少个点的问题
你问的难道不是这个么?你平仓价格用open,open是你的止盈价格么?你等价格跌到空止盈价格,却用当前bar的开盘价去平空?这是什么逻辑?这怎么可能和你算的差值相等?
你的提问和我的问答完全不在同一条线上,而且我写的只是策略的一部分。
If(MarketPosition==0)//当前空仓
{
If( ……)
{
If(……)
{
myEntryPrice=……;
Mylossprice=……;
Buy(SS,myEntryPrice);
Commentary("mylossprice;"+Text(mylossprice));
TrailingStart1=MyEntryPrice - mylossprice;
TrailingStart2=2*(MyEntryPrice - mylossprice);
Commentary("TrailingStart1;"+Text(TrailingStart1));
Commentary("TrailingStart2;"+Text(TrailingStart2));
}
}
Else If(……)
{
If(……)
{
myEntryPrice=……;
SellShort(SS,myEntryPrice);
mylossprice=……;
Commentary("mylossprice;"+Text(mylossprice));
TrailingStart1=mylossprice-myentryprice;
TrailingStart2=2*(mylossprice - myentryprice);
Commentary("TrailingStart1;"+Text(TrailingStart1));
Commentary("TrailingStart2;"+Text(TrailingStart2));
}
}
}
If(BarsSinceEntry == 0) // 条件满足:开仓Bar
{
HighestAfterEntry = Close;
LowestAfterEntry = Close; // 赋初值为当前最新价格
If(MarketPosition <> 0) // 有持仓时执行以下代码
{
// 开仓Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice);
// 开仓Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice);
}
}Else // 非开仓Bar时进行以下运算
{
// 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
HighestAfterEntry = Max(HighestAfterEntry,High);
// 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
LowestAfterEntry = Min(LowestAfterEntry,Low);
}
Commentary("HighestAfterEntry = "+Text(HighestAfterEntry));
Commentary("LowestAfterEntry = "+Text(LowestAfterEntry));
MinPoint = MinMove*PriceScale;
MyEntryPrice = EntryPrice;
Commentary("myEntryPrice;"+Text(myEntryPrice));
If(MarketPosition == 1 And BarsSinceEntry >= 1) // 有多仓的情况
{
// 第二级跟踪止损的条件表达式
If(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart2*MinPoint)
{
If(Low <= HighestAfterEntry[1] - TrailingStop2*MinPoint)
{
MyExitPrice = HighestAfterEntry[1] - TrailingStop2*MinPoint;// 如果该Bar开盘价即跳空触发,则用开盘价代替
If(Open < MyExitPrice) MyExitPrice = Open;
Sell(SS,MyExitPrice);
}
Else If……)
{
MyExitPrice=Open;
Sell(SS,MyExitPrice);
}
}
Else If(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart1*MinPoint) // 第一级跟踪止损的条件表达式
{
If(Low <= HighestAfterEntry[1] - TrailingStop1*MinPoint)
{
MyExitPrice = HighestAfterEntry[1] - TrailingStop1*MinPoint;
// 如果该Bar开盘价即跳空触发,则用开盘价代替
If(Open < MyExitPrice) MyExitPrice = Open;
Sell(0,MyExitPrice);
}
Else If(……)
{
MyExitPrice=Open;
Sell(SS,MyExitPrice);
}
}
Else If……) //可在此写初始止损处理
{
MyExitPrice = Open;
Sell(SS,MyExitPrice);
}
}
Else If(MarketPosition == -1 And BarsSinceEntry >= 1) // 有空仓的情况
{
// 第二级跟踪止损的条件表达式
If(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart2*MinPoint)
{
If(High >= LowestAfterEntry[1] + TrailingStop2*MinPoint)
{
MyExitPrice = LowestAfterEntry[1] + TrailingStop2*MinPoint;
If(Open > MyExitPrice) MyExitPrice = Open;
BuyToCover(SS,MyExitPrice);
}
}
Else If(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart1*MinPoint)// 第一级跟踪止损的条件表达式
{
If(High >= LowestAfterEntry[1] + TrailingStop1*MinPoint)
{
MyExitPrice = LowestAfterEntry[1] + TrailingStop1*MinPoint;
If(Open > MyExitPrice) MyExitPrice = Open;
BuyToCover(0,MyExitPrice);
}
}
Else If(……) //可在此写初始止损处理
{
MyExitPrice=Open;
BuyToCover(SS,MyExitPrice);
}
}
完整代码如上,图表上显示出来的点数并不等于止损价格和开仓价格的差值
第一 这种不能编译成功的代码算不上完整代码,不能加载到图表上复现问题,就解决不了问题。
第二 计算机是死的,1+1不会算成3,这种简单的止盈计算开发手册里都有模板,都能成功的处理止盈止损点数计算,算错了肯定是你代码问题
第三 已经给你指出了代码里存在的问题,但是如果因为看不懂觉得答非所问,那只能自己通过诊断语句自己排查了
第一公式代码是可以运行的,第二你说的答非所问。
我需要你帮我解决的是为什么我的开仓价格是2909,止损价格是2919,按照这个几个计算出来的止盈点数应该是10而不是20。
我不知道你是否看完我下面的完整代码来回答我的问题,但是我想说的是如果你们TB的客服都是这样帮助解决问题的话,那么你的软件怎么可能会越做越好
您好!麻烦您把Entryprice也输出下,看看计算结果不对,到底问题在哪。您代码没给全,我们没法运行,对调试来说是很不方便的。客服工作本来就很繁重,诊断客户的代码严格来讲并不属于客服的范围,但因为出现问题可能是用户没写对,也可能是系统本身有Bug,所以一般提交客服,我们还是会帮助诊断。所以,希望客户上帝们也要理解下,尽可能地配合调试,别总是觉得自己代码没问题,问题都是TB的。实际上,我服务TB客户这么多年,出现问题是客户原因的概率绝对是大得多的。但我们根据经验这么回复,也是一种正常的诊断顺序,不是为了甩锅,没有谁比我们更希望客户更快解决问题的。