设为首页收藏本站

 找回密码
 注册
楼主: sandboy2005
打印 上一主题 下一主题

我从文华转到TB的过程(我也圈一个地啊) [复制链接]

Rank: 6Rank: 6

精华
0
UID
232
积分
1532
帖子
152
主题
6
阅读权限
70
注册时间
2007-8-31
最后登录
2019-3-31
71#
发表于 2007-10-10 01:36:11 |只看该作者

海龟消化笔记(四)1----限制住损失

止损

// 一个好操盘手不在于他能赚多少,而在于他能够限制损失,我希望TB可以给我完成这样任务完全能力,让可以对别人说"我不知道我这张单赚多少钱,但我可以保证我最多损失多少钱"万无一失

海龟以头寸风险为基础设置止损。任何一笔交易都不能出现2%以上的风险。
因为价格波动1N表示1%的帐户净值 ,容许风险为2%的最大止损就是价格波动2N 。海龟的止损设置在多头头寸入市价格以下的2N ,空头头寸入市价格以上的2N
为了保证全部头寸的风险最小,如果另外增加单位,前面单位的止损就提高1/2N。这一般意味着全部头寸的止损将被设置在距离最近增加的单位的2N处 。然而,在后面单位因市场波动太快造成“打滑(skid)” 或者因开盘跳空而 以较大的间隔设置的情况下,止损就有所不同。
在前面的基础上扩展止损,并将增仓的条件中增加等于的判断 注意这句话。
相对于前面的公式做了较多修改:lol 11:lol 让我们看年城哪里,请以最新版本为准。

[ 本帖最后由 sandboy2005 于 2007-10-10 01:46 编辑 ]
当你退回到根本原来这一切都已经只是有障眼法
水无形而利万物

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
232
积分
1532
帖子
152
主题
6
阅读权限
70
注册时间
2007-8-31
最后登录
2019-3-31
72#
发表于 2007-10-10 01:43:34 |只看该作者

海龟消化笔记(四)2----限制住损失

Params
        Numeric Length(20);                        // 短周期
Vars
        Numeric N;                                                // N 值
        Numeric TurtleUnits;                        // 单位
        NumericSeries DonchianHi;                // 唐奇安通道上轨,延后1个Bar
        NumericSeries DonchianLo;                // 唐奇安通道下轨,延后1个Bar
        Numeric myEntryPrice;                        // 开仓价格
        Numeric myExitPrice;                        // 平仓价格
        Bool IsEntryThisBar(False);        // 当前Bar开过仓
        Bool IsAddThisBar(False);          // 当前Bar有过增仓
        Numeric preEntryPrice;                        // 前一次开仓的价格
         Numeric prePosition;                        // 用来记录交易前的持仓数量,和交易后的数量进行比较,可确认是否交易成功
     // 交易可能因为资金不够,连续开仓,持仓限制等导致被忽略这里
Begin
        N = AverageFC(TrueRange,Length);
        TurtleUnits = (CurrentCapital()*0.01) /(N * BigPointValue());
        TurtleUnits = IntPart(TurtleUnits);
        DonchianHi = Highest(Close[1],Length);
        DonchianLo = Lowest(Close[1],Length);
        If(MarketPosition == 0)
        {  If(CrossOver(High,DonchianHi) && TurtleUnits >= 1 )
                {
                        // 开仓价格取突破上轨+一个价位和最高价之间的较小值,这样能更接近真实情况,并能尽量保证成交
                        myEntryPrice = min(high,DonchianHi + PriceScale*MinMove);
                        prePosition = CurrentContracts(); :lol :lol 你知道为什么老大要这样做吗,我也不清楚
                        Buy(TurtleUnits,myEntryPrice);
                        If(CurrentContracts() != prePosition这有什么用:lol )
                        {
                                IsEntryThisBar = True;
                                SetGlobalVar(0,myEntryPrice);                        // 保存第一次开仓的价格
                        }        }
                If(CrossUnder(Low,DonchianLo) && TurtleUnits >= 1)
                {
                        // 开仓价格取突破下轨-一个价位和最低价之间的较大值,这样能更接近真实情况,并能尽量保证成交
                        myEntryPrice = max(low,DonchianLo - PriceScale*MinMove);
                        prePosition = CurrentContracts();
                        SellShort(TurtleUnits,myEntryPrice);
                        If(CurrentContracts() != prePosition)
                        {
                                IsEntryThisBar = True;
                                SetGlobalVar(0,myEntryPrice);                        // 保存第一次开仓的价格
                        }
                } //所有过程都要这里准备好
        }else If(MarketPosition == 1) // 有多仓的情况
        {
                If(IsEntryThisBar增加这里看看吧)
                {
                        // 当前Bar开过仓的情况,如果Close比myEntryPrice大于1/2N.用收盘价加仓。
                        If(Close >= myEntryPrice + 0.5 * N && TurtleUnits >= 1)
                        {
                                myEntryPrice = myEntryPrice + 0.5 * N;
                                prePosition = CurrentContracts();
                                Buy(TurtleUnits,myEntryPrice);
                                If(CurrentContracts() != prePosition)
                                {
                                        SetGlobalVar(0,myEntryPrice);                        // 保存最后一次开仓的价格
                                }
                        }

[ 本帖最后由 sandboy2005 于 2007-10-10 01:52 编辑 ]
当你退回到根本原来这一切都已经只是有障眼法
水无形而利万物

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
232
积分
1532
帖子
152
主题
6
阅读权限
70
注册时间
2007-8-31
最后登录
2019-3-31
73#
发表于 2007-10-10 01:43:53 |只看该作者

海龟消化笔记(四)3----限制住损失

// 加上止损指令
                        If(Close <= MyEntryPrice - 2 * N)
                        {
                                myExitPrice = MyEntryPrice - 2 * N;
                                Sell(0,myExitPrice); // 数量用0的情况下将全部平仓
                        }
                }Else
                {
                        preEntryPrice = GetGlobalVar(0); // 取出上一次开仓的价格
                        If(preEntryPrice!=InvalidNumeric && TurtleUnits >= 1)
                        {
                                If(Open >= preEntryPrice + 0.5*N) // 如果开盘就超过设定的1/2N,则直接用开盘价增仓。
                                {
                                        myEntryPrice = Open;
                                        prePosition = CurrentContracts();
                                        Buy(TurtleUnits,myEntryPrice);
                                        If(CurrentContracts() != prePosition)
                                        {
                                                preEntryPrice = myEntryPrice;
                                                IsAddThisBar = True;
                                                SetGlobalVar(0,preEntryPrice);                        // 保存最后一次开仓的价格
                                        }
                                }
                        
                                while(High >= preEntryPrice + 0.5*N) // 以最高价为标准,判断能进行几次增仓
                                {
                                        myEntryPrice = preEntryPrice + 0.5 * N;
                                        prePosition = CurrentContracts();
                                        Buy(TurtleUnits,myEntryPrice);
                                        preEntryPrice = myEntryPrice;
                                        If(CurrentContracts() != prePosition)
                                        {
                                                IsAddThisBar = True;
                                                SetGlobalVar(0,preEntryPrice);                        // 保存最后一次开仓的价格
                                        }
                                }
                        }
                         // 止损指令
                        If(IsAddThisBar)
                        {
                                // 当前Bar有过增仓,此时不能直接按Low来判断是否止损,因为不能确定Bar的价格的走势,只按收盘价进行止损判断。
                                If(Close <= preEntryPrice - 2 * N)
                                {
                                        myExitPrice = preEntryPrice - 2 * N;
                                        Sell(0,myExitPrice); // 数量用0的情况下将全部平仓
                                }
                        }Else
                        {
                                If(Low <= preEntryPrice - 2 * N)
                                {
                                        myExitPrice = preEntryPrice - 2 * N;
                                        Sell(0,myExitPrice); // 数量用0的情况下将全部平仓:lol :lol :lol
                                }
                        }
                }
        }Else If(MarketPosition ==-1) // 有空仓的情况
        {
                If(IsEntryThisBar)
                {
                        // 当前Bar开过仓的情况,如果Close比myEntryPrice小于1/2N.用收盘价加仓。
                        If(Close <= myEntryPrice - 0.5 * N && TurtleUnits >= 1)
                        {
                                myEntryPrice = myEntryPrice - 0.5 * N;
                                prePosition = CurrentContracts();
                                SellShort(TurtleUnits,myEntryPrice);
                                If(CurrentContracts() != prePosition)
                                {
                                        SetGlobalVar(0,myEntryPrice);                        // 保存最后一次开仓的价格
                                }
                        }
                      // 加上止损指令
                        If(Close >= MyEntryPrice + 2 * N)
                        {
                                myExitPrice = MyEntryPrice + 2 * N;
                                BuyToCover(0,myExitPrice); // 数量用0的情况下将全部平仓:lol :lol
                        }
                }Else
                {
                        preEntryPrice = GetGlobalVar(0); // 取出上一次开仓的价格
                        If(preEntryPrice!=InvalidNumeric && TurtleUnits >= 1)
                        {
                                If(Open <= preEntryPrice - 0.5*N) // 如果开盘就超过设定的1/2N,则直接用开盘价增仓。
                                {
                                        myEntryPrice = Open;
                                        prePosition = CurrentContracts();
                                        SellShort(TurtleUnits,myEntryPrice);
                                        If(CurrentContracts() != prePosition)
                                        {
                                                preEntryPrice = myEntryPrice;
                                                IsAddThisBar = True;                                
                                                SetGlobalVar(0,preEntryPrice);    // 保存最后一次开仓的价格   :lol :lol :lol                                      
                                        }
                                }
                        
                                while(Low <= preEntryPrice - 0.5*N) // 以最低价为标准,判断能进行几次增仓
                                {
                                        myEntryPrice = preEntryPrice - 0.5 * N;
                                        prePosition = CurrentContracts();
                                        SellShort(TurtleUnits,myEntryPrice);
                                        preEntryPrice = myEntryPrice;
                                        If(CurrentContracts() != prePosition)
                                        {
                                                IsAddThisBar = True;
                                                SetGlobalVar(0,preEntryPrice);                        // 保存最后一次开仓的价格
                                        }
                                }
                        }
   // 止损指令  If(IsAddThisBar:lol )
                        {    // 当前Bar有过增仓,此时不能直接按High来判断是否止损,因为不能确定Bar的价格的走势,只按收盘价进行止损判断。
                                If(Close >= preEntryPrice + 2 * N)
                                {
                                        myExitPrice = preEntryPrice + 2 * N;
                                        BuyToCover(0,myExitPrice); // 数量用0的情况下将全部平仓:lol :lol
                                }
                        }Else {
                                If(High >= preEntryPrice + 2 * N)
                                {
                                        myExitPrice = preEntryPrice + 2 * N;
                                        BuyToCover(0,myExitPrice); // 数量用0的情况下将全部平仓:lol :lol :lol
End

[ 本帖最后由 sandboy2005 于 2007-10-10 01:57 编辑 ]
当你退回到根本原来这一切都已经只是有障眼法
水无形而利万物

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
232
积分
1532
帖子
152
主题
6
阅读权限
70
注册时间
2007-8-31
最后登录
2019-3-31
74#
发表于 2007-10-10 02:23:25 |只看该作者

明天再来

明天再来.......明天再来.......明天再来.......明天再来.......明天再来.......
当你退回到根本原来这一切都已经只是有障眼法
水无形而利万物

使用道具 举报

中级操盘手

Auto Trading Learner

Rank: 9Rank: 9Rank: 9

精华
1
UID
7
积分
15417
帖子
216
主题
26
阅读权限
150
注册时间
2007-7-21
最后登录
2007-11-22
75#
发表于 2007-10-10 17:00:54 |只看该作者
好铁好铁。
可任TB讲师团团长 
发个MM  以资鼓励 :lol  :lol

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
232
积分
1532
帖子
152
主题
6
阅读权限
70
注册时间
2007-8-31
最后登录
2019-3-31
76#
发表于 2007-10-10 22:17:44 |只看该作者

又发现一个要注意的问题

prePos = currentContracts;
SetStopLoss...
curPos = currentContracts;
if(prePos!=curPos)
{
    Commentart("止损执行成功");
}

.....
.....

prePos = currentContracts;
SetProfitTarget...
curPos = currentContracts;
if(prePos!=curPos)
{
    Commentart("止赢执行成功");
}
当你退回到根本原来这一切都已经只是有障眼法
水无形而利万物

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
232
积分
1532
帖子
152
主题
6
阅读权限
70
注册时间
2007-8-31
最后登录
2019-3-31
77#
发表于 2007-10-10 22:24:35 |只看该作者

再发现相关的问题已经出现好多次了

uy,Sell只是一个交易动作,在历史测试和真实中都不能保证顺利执行。测试中可能因为资金 不足,多次 开仓条件,最大持仓条 件等因素导致不能成功执行,真实交易中可能:Q 因为价格滑动导致不能成交。
1、在历史测试过程中您可以:Q 通过比较执行前后的仓位是否相同来判断是否执行成功,海龟那个贴中有相应的例子。
2、真实交易中基本 没有办法来确认成交。因为成交信息不是实时返回,需要等好 几秒钟。
只能假定成交,或者用交易助手等辅助手段使其尽量成交。

像上面的问题会出现很多和我系统想法不一样的东西,我们的思想一直停在文华一对一的信号上面,考虑资金,考虑成交与否,考虑,交易中会出现的问题,好杂啊,版主请比较相关的问题列出来好吗,我们总是要一点一点发现问题

[ 本帖最后由 sandboy2005 于 2007-10-10 22:27 编辑 ]
当你退回到根本原来这一切都已经只是有障眼法
水无形而利万物

使用道具 举报

Rank: 6Rank: 6

精华
2
UID
390
积分
2142
帖子
286
主题
45
阅读权限
70
注册时间
2007-9-21
最后登录
2019-4-1
78#
发表于 2007-10-11 08:25:43 |只看该作者
sandboy2005好样的!
送个MM:

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
232
积分
1532
帖子
152
主题
6
阅读权限
70
注册时间
2007-8-31
最后登录
2019-3-31
79#
发表于 2007-10-11 12:10:32 |只看该作者

再发现问题

请问如何才能做到开空仓以后,忽略以后同方向的开空信号,直到平空仓.

开多仓以后,忽略以后同方向的开多信号,直到平多仓
这样完成后就像文华了

Params
    Numeric n1(20);
Vars
        NumericSeries hh;
        numericseries ll;
        Bool a;
        bool b;
Begin
     hh=Highest(high,n1);
     ll=Lowest(low,n1);
         a=(hh==high);
         b=(ll==low);
        
        if(a && MarketPosition!=1 关键在这里)
    {
       buy(1,close);
        }
        if(b && MarketPosition!=-1:lol )
        {
       sellshort(1,close);
    }
End
当你退回到根本原来这一切都已经只是有障眼法
水无形而利万物

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
232
积分
1532
帖子
152
主题
6
阅读权限
70
注册时间
2007-8-31
最后登录
2019-3-31
80#
发表于 2007-10-11 12:15:26 |只看该作者

不出现连续信号

这样会不会清爽多了
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
当你退回到根本原来这一切都已经只是有障眼法
水无形而利万物

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-18 05:27

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部