Monday, October 19, 2020

A_buyposition在TB中的应用

 

交易开拓者对多周期交易的问题

1、在不同时间周期上交易同一个品种

http://www.tradeblazer.net/forum/thread-1348-1-44.html

假定我有两个程序,程序A以半小时周期交易品种X;程序B以5分钟周期交易品种X;这两个程序能同时运行吗?

假定可以同时运行,有没有一种机制能够使这个两个程序间可以交换信息?我不清楚TB对硬盘文件读写支持到什么程度。这两个程序是否可以通过对硬盘文件操作的办法进行信息传递或信息共享?

发表于 2008-1-3 11:25 | 只看该作者
现在不支持这样的功能,以后可以考虑支持文件读写的功能。
发表于 2008-1-9 14:48 | 只看该作者

回复 #4 tradeblazer 的帖子

我觉得开拓者应该站得更高,跳出在K线图中做文章的框框,做基于“数据”的系统,而不是基于单一“K线图”的系统。这里的“数据”包括不同时间周期,不同市场的数据。这样,开拓者面对的是整个“投资组合”,而不是一部分。

2、【交易规模】使用多重系统时如何进行头寸管理

http://www.tradeblazer.net/forum/thread-3994-1-28.html

Managing Positions When Using Multiple Systems

使用多重系统时如何进行头寸管理

In our last Bulletin we presented our reasoning for using multiple systems in multiple markets in order to produce more consistent profits and to generate a smoother equity curve. In this Bulletin we will address some of the practical aspects of controlling our position sizes when employing this strategy.

在上一贴中我们解释了在多重市场中使用多重系统,有助于获得持续一致的盈利和更为平滑的资金曲线。在本帖中,我们将给出在实践中使用这种策略时会碰到的一些有关控制头寸规模的问题。

When using multiple strategies/systems in one market we are inevitably faced with the question of how many positions to trade and what to do when long and short trades appear at the same time. Many potential problems can be reduced if the systems are designed to integrate well so that one type of system will be turning off just as a different type of system is turning on. It is certainly not that difficult to devise rules that will serve to eliminate most of the contradictory trading signals.

我们要建立多少头寸?当多头信号和空头信号同时出现时我们该如何建立头寸方向?等等这些问题是我们在同一市场中使用多重策略/系统时必然要面对的问题。其中一些问题是可以避免的,只要能协调好系统间的关系,当一种系统被触发时与之相反的系统就会自动关闭。我们不难通过建立一些规则来排除大部分相互矛盾的交易信号。

For example we can require that prices be above a specified moving average in order to initiate buy signals and below that same moving average to generate signals to sell short. Although such a rule might appear to avoid contradictory signals it is not foolproof. It is possible that an existing long position initiated at prices above the specified moving average might still be in place when a new entry is signalled in the opposite direction as a result of prices having drifted below the moving average. In this instance we have an open long position and a new signal to sell short.

例如,在产生买入信号前我们要求价格必须在某一移动平均线之上,在产生卖空信号前我们要求价格必须在某一移动平均线之下。尽管这样的规则能避免产生一些相互矛盾的信号,但不能完全避免。比如当价格低于某一移动平均线时系统发出卖空信号,然而此时我们还持有在价格高于该移动平均线时建立的多头仓位,也就是说在我们持有多头仓位的时候又接到一个卖空的入场信号,这种相互矛盾的情形是有可能出现的。

Although it is theoretically possible to have two or more accounts and hold both long and short positions at the same time, the common solution is to simply trade the net position. Two longs and a short is a net position of one long. A long and a short is a net position of no contracts. The large CTAs who are trading multiple systems usually trade net positions and some of them easily operate 50 or more systems at a time.

尽管理论上我们可以同时持有两个或两个以上的账户,因而能同时持有多头和空头头寸,但一般的解决方法是简简单单的持有两者相互抵消后的净头寸。两个多头头寸和一个空头头寸相互抵消后的净头寸是一个多头头寸;一个多头头寸和一个空头头寸相互抵消后的净头寸为零。许多使用多重系统的商品交易顾问(CTA)通常只建立净头寸,其中有些人能同时轻松的使用50种以上的系统。(译者的疑问:同时使用50种系统,太夸张了吧)

Another possibility with the multiple position strategy is to operate with a limited exposure in terms of the maximum number of contracts traded at one time. For example, assume we wanted to trade all six of our bond systems and never have more than three contracts on at one time. For starters, the design of the bond systems makes it unlikely that we would ever have more than three positions in the same direction. But let's assume that it does happen and we are holding three long positions and a fourth system kicks in and says to go long again. We could choose to operate on a first come basis and simply ignore the fourth signal. However, as the designer of these systems I believe there might be a better solution.

当我们要限定交易暴露的风险时,也即规定同时持有的合约数目的最大量,我们会面对另一种可能出现的问题。例如,假定我们同时使用6个债券交易系统,而且我们同时持有的合约数量不得超过3个。一开始债券交易系统被设计成不会让我们在同一个方向建立3个以上的仓位,然后我们持有3个多头头寸,再然后出现第四个信号让我们再次入场做多。我们可能选择忽略第四个信号,仅按原先的入场基准坚持仓位。然而,作为这些债券系统的设计者,我相信还有更好的解决办法。

for starters 第一;首先;作为开头

I would suggest trading on the basis of giving priority to the most recent signal. If we were long three contracts and got a signal to go long again, I would switch the oldest open position and trade it as though it were the new signal. Lets say that we are long on systems A, B, and C. Then system D gives a buy signal. No new trade is entered and we operate the exits as though we are long in systems B, C and D.

我则建议根据最新的信号进行交易。如果我们已经建立了3笔多头仓位,然后又得到一个入场做多的信号,我会将之前建立的第一笔多头仓位的交易基准转换到最新信号上,这样该仓位就像是根据最新的入场信号建立起来的。比如,我们根据系统A 、 B 和 C建立起3笔多头仓位,然后系统D给出一个买入信号,虽然此时我们没有再次进行新的交易,但效果上相当于做了一次虚拟的交易,因为我们现在是根据系统B , C和D来持有多头仓位的。

The reason I prefer this method is because I know the effort that is put into designing the pre-entry setups for each system. These pre-entry setups are designed to give us an accurate reading of market conditions just as we enter each trade. These pre-entry conditions not only tell us the direction (up, down or sideways) but often tell us the present strength of the directional trend and the best time frame to be trading right now. By switching from the old position in system "A" into the new position in system "D", we will gain the benefit of using system "D's exit strategy which is most likely to be in tune with current market conditions. I like to call this process "System Updating". There is no order needed or entered with our broker to "Update" our systems. We simply stop placing exit orders for system A and commence placing exit orders for system D instead.

我之所以选择这种方法是因为每个系统的设置都是经过精心设计的。设计这些设置的目的是在我们入场交易前市场背景必须满足一定的条件。这些市场背景不仅告诉我们趋势方向(上升、下降还是横盘整理),在很多情况下还能告诉我们当前趋势的力度以及我们应该选择的交易时间框架。把原先系统“ A ”的头寸转换为系统“ D ”的头寸,我们就能使用系统D的离市策略,这会使我们受益,因为系统D有可能更适合当前的市场状况。我喜欢把这种转换过程叫做“系统更新”。在这个系统“更新”过程中,我们既不需要下订单,也不需要经纪人,需要的仅仅是取消原来系统 A设置的止损单,代之以系统D设置的止损单。

Another possibility is to limit our open positions to one long term strategy and one short term strategy so that we can monitor all six systems without having more than two positions on at one time. If we have one long term position on we will only enter a second position when it is a short term entry signal. All additional long term signals are ignored or we employ the "Updating" technique described above.

[ 本帖最后由 一朵祥云 于 2009-1-31 23:08 编辑 ]
另一种情况是我们可以将我们的交易限定在长线交易策略和短线交易策略范围内,这样即使我们同时检测6个交易系统,我们同时持有的仓位也不会超过2笔。如果我们已经建立了一个长线仓位,那么我们仅当得到短线交易信号的时候才入场建立第二笔仓位。我们要么忽略以后得到的所有长线交易信号,要么采用前面所示的“更新”技术。

As you can see, trading six systems at once does not require that we ever have six positions on at any time. In fact the specific intent designed into the multiple bond strategies is to never have more than one or two positions on at one time unless we are in a strong bull market where trading is easy and usually very low risk. In that ideal market environment we want to have as many positions on as our capital and system signals will allow. If the systems operate as designed we might have as many as four open positions under these ideal conditions. Any more than that would be very unlikely and easily handled.

如上讨论,同时使用6个交易系统并不意味着在交易过程中的某时某刻我们会同时持有6笔仓位。事实上,我们的债券市场多重交易策略的一个内含准则是:我们一般不同时持有一笔或两笔以上的仓位,除非我们正处在一个强劲的牛市,此时交易即简单而且通常风险也很低,在这种理想的市场环境中我们会在资金和系统允许的范围内持有尽可能多的头寸。按照我们设计的系统,在这种理想的条件下,我们最多同时持有4笔头寸。超过该头寸规模的可能性很小而且也很难管理。

In summary, the systems themselves should take care of most of the position sizing automatically. But in case we want to limit our exposure or use other position sizing methods there are many ways of applying logical and creative strategies that will limit our open positions to whatever number we desire. We have only illustrated a few of the many possibilities

总之,多重系统本身应该能自动照顾自己的头寸规模。但是,如果我们想限制我们的头寸暴露或者使用其他头寸调整方法,我们还能通过许多合理的有创造性的策略来限制我们的头寸规模,我们仅列举了其中部分可能的方法。

3、【抛砖引玉贴】如何精确控制实时交易

http://www.tradeblazer.net/forum/thread-4510-1-23.html

关于控制同方向重复发单,在第一页,已解决;
关于控制不同方向反复平仓、开仓的问题,从第二页开始,已解决;



改系统基于5min,由历史测试代码转换而来。
只是在模拟交易中,只有当日的第一根BAR有交易动作,后面其它符合开平仓条件的bar上都没有交易。
请各位帮忙看下,问题出在什么地方?
非常感谢
其中全局变量等于0表示不持仓;等于1表示持多仓;等于-1表示持空仓。
当满足条件时,平仓后立刻反手开仓。

Begin
... ...
If(BarStatus==0)
       SetGlobalVar(0,0);   //将交易系统的初始持仓状态设为“不持仓”。
If((Time<0.145500)&&(BarStatus==2))   //在14:55时之前,且为超级图表的当前Bar时。
{
       If(condition1)   //达到价格买入条件。
       {
               If((A_BuyPosition==0)&&(A_SellPosition==0))   //达到账户买入条件:检查交易账户的持仓状态为“不持仓”。
               {
                       If(GetGlobalVar(0)==0)   //且全局变量所记录的系统账户的持仓状态也为“不持仓”。
                       {
                               A_SendOrder(Enum_Buy,Enum_Entry,P,BuyPrice);   //发多单。
                               SetGlobalVar(0,1);   //一旦发出多单,便将交易系统的持仓状态设为“持多仓”,记录全局变量为1。
                       }
                }
               If((A_BuyPosition==0)&&(A_SellPosition<>0))   //达到账户买入条件:检查交易账户的持仓状态为“持空仓”。
               {
                       If(GetGlobalVar(0)==-1)   //且全局变量所记录的系统账户的持仓状态也为“持空仓”。
                       {
                               A_SendOrder(Enum_Buy,Enum_ExitToday,P,BuyPrice);   //发平空单。
                               A_SendOrder(Enum_Buy,Enum_Entry,P,BuyPrice);   //发多单。
                               SetGlobalVar(0,1);   //一旦平空单及多单发出,便将交易系统的持仓状态设为“持多仓”,记录全局变量为1。
                        }
                }
        }
        If(condition2)   //达到价格卖出条件。
        {
                If((A_BuyPosition==0)&&(A_SellPosition==0))   //达到账户卖出条件:检查交易账户的持仓状态为“不持仓”。
                {
                        If(GetGlobalVar(0)==0)   //且全局变量所记录的系统账户的持仓状态也为“不持仓”。
                        {
                                 A_SendOrder(Enum_Sell,Enum_Entry,P,SellPrice);   //发空单。
                                 SetGlobalVar(0,-1);   //一旦空单发出,便将交易系统的持仓状态设为“持空仓”,记录全局变量为-1。
                         }
                 }
                 If((A_BuyPosition<>0)&&(A_SellPosition==0))   //达到账户卖出条件:检查交易账户的持仓状态为“持多仓”。
                 {
                         If(GetGlobalVar(0)==1)   //且全局变量所记录的系统账户的持仓状态也为“持多仓”。
                         {
                                 A_SendOrder(Enum_Sell,Enum_ExitToday,P,SellPrice);   //发平多单。
                                 A_SendOrder(Enum_Sell,Enum_Entry,P,SellPrice);   //发空单。
                                 SetGlobalVar(0,-1);   //一旦平多单及空单发出,便将交易系统的持仓状态设为“持空仓”,记录全局变量为-1。
                          }
                  }
         }
}
If((Time>0.145500)&&(BarStatus==2))   //在14:55时后,且为超级图表的当前Bar时。
{
         If(A_BuyPosition<>0)
                  A_SendOrder(Enum_Sell,Enum_ExitToday,P,Open);
         If(A_SellPosition<>0)
                  A_SendOrder(Enum_Buy,Enum_ExitToday,P,Open);
}
End

发表于 2009-4-13 10:21 | 只看该作者

我觉得您没有必要再用A_BuyPosition和A_SellPosition判断了,都用全局变量来记录就行了。

因为您用A_SendOrder发单之后,但A_BuyPosition不会马上变,可能需要1-N秒钟才会更新,这样就可能导致您的控制出错。

您可以用一个全局变量来记录你的实际仓位。只有初始化的时候才读取A_BuyPosition的值,后面就自行记录了。
发表于 2009-4-15 21:09 | 只看该作者
原帖由 nopain 于 2009-4-13 10:21 发表
我觉得您没有必要再用A_BuyPosition和A_SellPosition判断了,都用全局变量来记录就行了。

因为您用A_SendOrder发单之后,但A_BuyPosition不会马上变,可能需要1-N秒钟才会更新,这样就可能导致您的控制出错。

您可以用一个 ...


这样可能是行不通的,不使用A函数来查询实时账户持仓,使用高频数据会产生锁仓。
例如:当你持多仓,并发出平多反空单时,一般不会及时成交。
如果在撤单重发期间,系统又平空反多。那么就会“无空单可平”,并造成锁仓。

究其原因,使用全局变量+sendorder都不能反应实时账户的情况,只能控制重复发单。
因此,使用A函数是为了和实时账户同步
使用全局变量是为了控制重复发单。

使用A函数查询实时账户的确有延时,但在这里它只会造成滑点加大,不会控制出错。
发表于 2009-4-15 22:10 | 只看该作者
原帖由 saji 于 2009-4-13 21:19 发表
本来是开盘时,只成交一次。
经过,本人按7楼方法修改后,变为一个上午成交几百次。

看来代码还要进一步改进。用个TB好累啊


上述原因已找到:代码中我的开仓条件语句if(condition1或2)
其实是if(Low<=BuyPrice)及if(High>=SellPrice),其中BuyPrice和sellprice为变量。
这些语句返回的是True或Fause。

如果语句成立,每更新一个tick,系统都重新运行一遍,则每次都会返回True。
所以又反复交易了,只不过由于使用了全局变量记录持仓,因此系统不会朝一个方向重复开仓。
但是,如果在当前bar中Low<=BuyPrice且High>=SellPrice,那么系统就会不停的平多反空,再平空反多。
这就造成了交易上百次的情况出现。

因此,还需要再用个全局变量,来控制当前bar来回成交一次后,就不再反复交易了。
请各位指教。

[ 本帖最后由 saji 于 2009-4-15 22:12 编辑 ]
发表于 2009-4-17 11:49 | 只看该作者
原帖由 saji 于 2009-4-17 07:11 发表
艾~~看来不加个群不行啊,这里帖子都没人回。
关于控制当前bar来回成交一次的想法已经实现。
不能用全局变量,而是使用一个普通变量就可以了。
当前bar每发出一个开仓单,便使用该变量计数一次,计数器大于2则不能再开仓了。

...

盲目乐观了 ,鄙视下自己。。。。

使用简单变量作为计数器后,所得的结果仍是不断的重复开平仓。我估计原因如下:
如果每个Tick到来,系统都要重新计算的话,那么使用简单变量就不对了。
每次更新,简单变量都是重新从初始值(0)开始计算的,基本不可能超过2(Tick更新的速度肯定比交易快)。
于是“计数器大于2则不能开仓”的条件等于没说。

初步看来,要使用变量来作为计数器的思路是对的,但是需要使用一个在当前BAR范围内能记录变量变化过程的变量。
目前系统三种变量中:简单变量,不纪录变化过程,仅保留最后计算结果;
                                 序列变量,不记录当前BAR变化过程,仅记录之前BAR与BAR之间的变化过程;
                              全局变量,记录整个系统的变化过程;
而我所需要的变量是在当前BAR范围内的全局变量,一旦当前BAR更新,则全局变量需要复位归零。
因此,只能使用全局变量,并使用合适的语句控制。
目前看来,只要能够识别当前BAR更新的过程,那么就可以在BAR更新时,使全局变量归零,达到目的。

但识别当前BAR更新,意味着要判别更新的那一刻(瞬时状态),而非一个持续状态。用变量大于或小于某个值似乎只能用于持续状态,不能适用于瞬时状态。
本人目前所想到的思路是使用时间函数来控制,若是5min频度的话,那么当Time==5分钟节点,则全局变量归零。

各位大人有什么好主意,请执教。
1
评分人数

发表于 2009-4-17 12:52 | 只看该作者
谢谢nopain老大的加分!

如何判断时间节点:本人设想,
先设置一参数,TimeFreq(5),代表当前系统所应用的时间频率,初始值为5;
使用CurrentTime与TimeFreq相除的余数为0来判断。

If(FracPart(CurrentTime*1000/TimeFreq)==0)
{
        SetGlobalVar(1,0);       //将计数器归零
}

等下午开盘后,测试下。。。
实盘验证上述方法完全可行。
4、关于回溯测试和自动交易同步的处理
http://www.tradeblazer.net/forum/thread-423-1-7.html
最近,总有一些朋友问到如何编写公式代码,来处理测试和自动交易的资金、持仓及成交价等信息不匹配的问题。此问题是自动交易一个普遍存在的问题,因此,单独开贴进行讨论。

首先,我们需要理清几个概念:

回溯测试:(Back-Testing),将交易系统应用到历史数据当中,产生相应的买卖动作,并根据这些买卖动作产生详细的测试报表。

自动交易:将回溯测试在最新数据(图表中最后一个Bar)下产生的买卖讯号,应用到指定的帐号中,进行实时自动交易。

根据上面的叙述,我们可以得知,回溯测试在图表中最后一个Bar的讯号反映到交易账户中即自动交易,但是实际运行中,很多情况下用户不会完全按照交易指令的指示进行交易。这样就会出现真实交易时,通过回归测试产生的交易数量及价格并不是我们期望的。这个时候就需要我们通过编写公式代码进行控制,达到预期的效果。(最完美的处理方式是尽量让测试资金,持仓和真实情况一致,这样就不需要进行任何同步操作,以下的信息也都可以忽略啦

在需要处理的情况下,可分为开仓和平仓两种情况,以下分别进行讨论。
发表于 2007-9-13 22:23 | 只看该作者

开仓的处理

开仓情况下,以多头买入为例:

在回溯测试中产生开仓买入的指令,然后将该指令应用到交易账户中,可能出现2种情况:
1、交易账户的资金和回溯测试的资金不匹配,此时我们应该按照交易帐户的资金量来进行开仓。
2、交易账户的持仓和回溯测试的持仓不匹配,此时我们应该考虑是进行仓位同步,还是忽略该买入操作。
大致的处理代码如下:
If(BuyCondition) // 买入开仓条件满足
{
    lots = ...;       // 回溯测试计算出的交易数量
    entryPrice = ...; // 回溯测试计算出的交易价格
   
    If(BarStatus == 2) // 当前Bar为最后的一个Bar
    {
        lots = (A_FreeMargin*0.2)/(Q_AskPrice*ContractsUnit*BigPointValue*MarginRatio); // 假定按照可用资金的20%开仓
        lots = IntPart(lots);   // 取整
        entryPrice = Q_AskPrice;        // 按当时的叫卖价买入
       
        If(CurrentContracts()!=A_TotalPosition()) // 回溯测试的仓位和真实仓位不一致
        {
            // 根据您的需要进行处理,A_TotalPosition是合计的仓位,可通过A_BuyPosition,A_SellPosition取出买卖持仓.
                   
        Buy(lots,entryPrice);
    }else
    {
        Buy(lots,entryPrice);   // 回溯测试的其他Bar直接买入
    }
}

平仓的处理

平仓的情况,以多头卖出为例:

在回溯测试中产生平仓买出的指令,然后将该指令应用到交易账户中,可能出现2种情况:
1、交易账户的持多仓不足,或者是持有空仓。这个时候我们可以是平掉不足的多仓,也可以选择忽略该平仓操作,还可以平掉空仓。
2、交易账户的持多仓比回溯测试要平的多,这个时候我们可以选择只平测试讯号产生的部分,也可以全部平掉。

大致的处理代码如下:
If(SellCondition) // 卖出平仓条件满足
{
    lots = ...;      // 回溯测试计算出的交易数量
    exitPrice = ...; // 回溯测试计算出的交易价格
   
    If(BarStatus == 2) // 当前Bar为最后的一个Bar
        
        exitPrice = Q_BidPrice; // 用当时的叫买价卖出
       
        If(CurrentContracts()!=A_TotalPosition()) // 回溯测试的仓位和真实仓位不一致
        {
            // 根据您的需要进行处理,A_TotalPosition是合计的仓位,可通过A_BuyPosition,A_SellPosition取出买卖持仓.
        }
       
        If(A_BuyPosition >= lots)
        {
            Sell(lots,exitPrice);
        }
    }else
    {
        Sell(lots,exitPrice);   // 回溯测试的其他Bar直接卖出
    }
}
5、A_buyposition函数的用法?

A_buyposition函数的用法?

1. A_buyposition函数调用的当前帐户的持仓量?或是持仓状态(空与多)?
  2.marketposition是指持仓状态,在实盘程序测试中,买卖信号反复,导置同时拥有多单与空单,等买卖信号在次出现时,就拥有几手空单或多单.
  3.如果要消除上述的情况,上述可结合使用吗?该如何编写?
发表于 2007-11-9 11:20 | 只看该作者
1、A_buyposition是当前真实账户,当前商品的持多仓量。
2、MarketPosition是指测试过程中的持仓状态,不会出现锁仓的情况。在做真实交易时,需要尽量同步真实账户和测试的仓位及资金等信息。

您可以看看这个帖子:
http://www.tradeblazer.net/forum/thread-423-1-7.html
6、能说说:MarketPosition和A_TotalPosition的区别吗?
[转载]交易开拓者对多周期交易的问题 发表于 2008-3-21 19:18 | 只看该作者
也搞了很长时间,体会如下:
1)MarketPosition 用于回溯帐户,A_TotalPosition的用于交易帐户;
2)两个标识在开仓时相互不会影响;
3)注意!平仓时,A_TotalPosition指示有仓位,而MarketPosition指示空仓,或相反仓位,交易帐户平不了仓!交易帐户平仓还要对应回溯帐户的仓位,不可思议!!我现在就这个问题一直解决不了!!!

试想:如果有不一致的地方,交易帐户的止损就实现不了,这还怎么实现自动交易,让人怎么能放心走开?不就失去了自动交易的意义吗?

自己的体会,不一定正确,希望有权威的回答,和权威的解决方案(有关信号消失、同步问题的处理,坛子里的帖子我都看了,解决的并不彻底或不可靠!)
再研究一阵子,如果还是解决不了,我就只好放弃了,重新研究MT了,民生银行现在用MT平台了。
发表于 2008-3-22 12:33 | 只看该作者

真实交易状态和测试状态不同步的问题我相信MT4一样存在。
委托单不能保证成交的从理论上就没有可能得到完全的解决。
要想完全控制可以考虑全部用A函数来实现。在测试上把系统的各项参数测试稳定了,然后做一个直接交易的版本,通过获取委托单的状态,自行控制撤单重发。当然复杂程度大增。
如果您觉得测试+交易助手的写法不能实现您的系统,那就研究一下A函数及全局变量控制吧。

7、刀疤老二:“风险报酬比”

http://www.tradeblazer.net/forum/thread-3967-1-29.html

 

刀疤老二:“风险报酬比”

这波强力的拉抬,很多人被轧空(看融券余额即知),必须提醒一件事,这波初期会做错很正常,但如果从头错到尾(被轧1000点!?),那就是操作的问题了。或者如果你目前为止操作的并不顺手,下面这个例子,务必反复看到懂为止,一定要领悟出何谓操盘,你会发现操盘并不难。
  我举个例子,我在12/29尾盘时放空台指,放空原因很简单:
  1、12/13-12/29是个下跌势;
  2、在下跌势中,未过12日线都是良好空点,12/28又大拉200点,下跌势中逢弹放空,天经地义;
  3、尾盘高点比早盘低,为衰弱现象。
  这笔交易最后停损出场,亏损在100点内。我在刚建立部位时,部位是有利润的,但是利润并不多。当我认为利润会有300点以上时,我会进场交易,停损在100点“内”(即使亏损只有50点,我认为我看错了就会平仓出场)。
  我的想法是,“这是个跌势的中途,所以我在反弹时放空”。12/28-1/2的5分线构成一个“组合”,这种组合为良好的交易良机,怎么说呢?12 /28大拉上攻,以10:30为中线,分两段攻击,所以10:30那个低点在5分线上就是个支撑。12/29回档(买卖差 -40几万),早盘高点就是压力,所以操作上只有两条路:
  1、看涨的:12/28中场支撑处(约4675)做多,卖压出笼(之所以强调要有卖压是怕假突破)杀破就停损;
  2、看跌的:12/29早盘高点压力处(约4810)放空,买卖差如为正数(同理,也是怕假突破)拉抬过此点就停损。
  当然不论选择哪个,亏损100点就强迫停损,这是最后底限。
  会看涨的理由,是因为10/19低点、11/21低点和12/28低点,3点连起来有一个下降信道,12/29仍在轨道下缘,有机会弹升。而我是看跌的,我认为破信道下缘会展开大跌的跌势,就像7月-9月那样,如按照我预期的走,会有一段可观的利润(就像9/5那笔交易,信道一跌破,放空利润可达 2000-3000点!),可能风报比(风险与报酬)超过1:10,能错过吗?
  不过,后来这笔交易在我看错之下,停损出场,但是思考一下,这笔交易如果我没出手对吗?
  要强调的是,不论你看对或看错,那都不重要,你必须要有自己的交易系统,必须知道何时该出手,何时不该出手。该出手时不一定会赚,但那些交易机会你必须把握。风报比1:3是我个人最低可接受范围,也就是说,当我认为会有300 点以上的行情时,我会进场交易,否则其它时刻不是我该出手的时机(因为当风报比为1:3时,10次交易只要抓到3次,报酬率就是正的,再将资本放大到 100万做一口,每笔最大损失约为总资本的2%,这样的资金控管为一个良好的配置,可能风险都在可接受范围,也不会对波动太为敏感)。如果中间抓到 1:10的机会,赚钱对你来说将是轻而易举,中间看错几次行情又如何呢?请记住,交易的目的是什么,不是当一个神准的算命师,而是要赚钱。你之所以来交易,目的是赚钱,而不是让自己变成一个预言家受人尊敬景仰。许多人花了太多时间想让自己的预测能力达到100%,中间大大小小的反弹都要抓出来,这样花下的时间过于庞大,且常会事倍功半。
  我认为许多人失败的原因不在看错行情,看错行情是交易的一部份,没有人可以避免看错,因为他不是神。许多老手进出了老半天,交易了10几年,报酬率还是负的,因为他仍停留在“猜行情”阶段,最大亏损与最大利润不成比例。只要简单问一个人他交易中每笔最大利润是多少,每笔最大亏损是多少,就知道他是赢家还是输家。
  基于以上所说的,研究盘势,只有一个目的,那就是找寻交易机会。永远将潜在利润与风险做为做大考量,不要对中间的小亏损斤斤计较,整个交易系统才是你要放最多心思的地方。
  下面是风报比为1:3时,交易进出为10次的盈亏情形,停损为100点,假设只做一口单:
  0胜:-1000点 = -20万
  1胜9负:-600点 = -12万
  2胜8负:-200点 = -4万
  3胜7负: 200点 = 4万(扣掉交易成本约2.5万还有赚)
  4胜6负: 600点 = 12万
  5胜5负:1000点 = 20万
  6胜4负:1400点 = 28万
  7胜3负:1800点 = 36万
  8胜2负:2200点 = 44万
  9胜1负:2600点 = 52万
  10胜:3000点 = 60万
  由上面得知,10次交易只要赢2次,亏损就会大幅减少,换言之,假设平均一个月进出10次,目标只要放在3胜即可,接下来都是获利。甚至于,我很肉脚,这个月进出10次全杠龟,只要某个月出现5胜5负,则又打平了。在这样的系统架构下,我们才会有较佳的获利机会。
  因为每个人的资金大小不同,操作风格也不同,能忍受的风险也不同,操作周期长短也不同,所以每个人自己的操作系统也不同。由这个观点,会出现一些情形:
  1、有些点,你知道他还会涨,但并不适合进场,因为风报比不佳;
  2、有些点,你并不知道他会涨或会跌,但仍可以进场,因为获利可能很可观;
  3、别人买进的点,并不一定适合你进场;
  4、你进场的点,别人也不一定适合进场;
  5、所以别人认为会涨或跌,对你来说可能没有意义。
  如果,这个部份可以真正领悟弄懂,“稳定的绩效“将不会再只是梦幻似的目标。“要成功必须跳脱猜行情阶段”,你一定要领悟这句话的含意。任何技术分析、基本分析、求神问卜…,都是猜行情。换言之,当你花下所有时间在判断行情走势时,你几乎无法成功。我们不能将命运交给上帝,不能将胜败ㄠ在行情的涨或跌上。系统的建立就是在为交易创造一个对交易者有益的环境,每个想成功的人都应该有一个适合他自己的交易系统。
  某位外国期货交易员,在自己建立一套成功的交易系统后,他说,交易很无趣,部位一建立,设好停损和停利后,中间的时间就很无聊,不知要怎么打发,呵,交易本来就是这么单纯,不是吗?

No comments: