Monday, October 08, 2007

Stock

   在论坛已潜水很久了,自己操盘的同时也关注着散户们的喜怒哀乐,对于大多数散户来说,2003年又成了不堪回首的一年,04年虽有反弹,但离回本还有相当的距离.更糟糕的是,付出了这么大的代价,依然找不到走向成功的道路,这才是最痛苦的.谈到百万,简直是痴人说梦.其实在股市中赢与亏并没有太大的距离,关键就在于你有没有一套适合自己的稳健的赢利模式,如果你有一套赢利模式,那么只要等着符合模式的买点到来就进场,卖点出现就出场,放弃所有其他的机会和诱惑,挣钱不是很简单的事情吗?如果你能有几套这样的赢利模式 , 那每年资金翻番也不是什么很难的事情.这样用不了几年,你就可以实现百万之梦了.在我身边的朋友中,03年资金翻倍的并不少见。  畡G鼉?? 
  因为受到一家机构的邀请,我所掌管的资金将要增加十倍以上,这是一个很大的挑战,原来用得得心应手的许多赢利方式已不再适用,必须潜心研究一些适用于大资金的赢利模式, 故而我将离开论坛全力迎接新的人生挑战.在03年"稳定指数,击溃个股"的暴跌中,我目睹了许多散户在寒风中悲痛的神情,这也勾起了我对97年刚进股市时买进长虹,发展的惨败的极其痛苦的回忆,那永生难忘的一幕又在新一代股民身上重现,令人不忍,故在临走之前写下此文,将一套赢利模式送与论坛上有缘的朋友,希望能有助于你们从此摆脱人生的困境.
捧LV[佁  
  杨百万的告别文章中有一段话给我留下了很深的印象-----作为一个散户一定要理解风险和机会共存的真切含义,除了自已掌握自已的命运,任何人都不可能越疽代苞,把希望寄托在别人身上的散户一定是失败的终结者。只有学习才是成功的基础,除了在证券市场搏击中的磨练,凤凰涅磐升华后的心态是任何人无法教授的,它是成功的必然基础,技巧就是精通一两个技术指标的内在含义,从中解读股市的内在规律。它和操作策略有机地结合,是股市搏奕的工具。 再看看我们的散户朋友都是怎么炒股的,看电视,听小道消息,熟人荐股等等, 根本没有自己独立判断的能力.这样炒股,焉能不败多胜少.其实如果真的有一个高手愿意帮你,买卖股都通知你跟着,那也不失为一个致富的好方法,问题是有几个这样好心的高手?那些券商,咨询机构平常也有说对的时候,但一到关键时候就会给你下套,宰你没商量.比如说624,非常明显的出货行情,但舆论一致看多,让无数散户跟进吃套.其实这也不能怪人家,你又没给别人一分钱,别人不帮自己的衣食父母还帮你呀.而市面上公开出版的书籍,上面的方法被大家熟知,威力大减,有时反而可能成为主力借机出货的法宝.论坛上众多高手的文章 ,多是一些预测大盘之类的应景之作,只授鱼不授渔,偶有一些传授方法的文章也只是就事论事,没有系统性,故而散户朋友难以形成自己的赢利模式.其实说白了,这个世界上又有谁会心甘情愿把自己赚钱的绝招无私的公开呢?即便有,这些绝招公开后也会失效的。
睱雘z.g︱  
  要想有稳健的赢利模式,首先要有正确的操作思路。下面我就散户们常见的思维误区谈一下。
L纁?ld? 
  1,喜欢抄底,尤其是处于历史低位的股票。看到自己的成本比别人都低,心里简直是乐开了花。却没有想到,一个股票既然已创出了历史新低,那么很可能还会有很多新低出现,甚至用不了几个月你的股票就被腰斩了。抄底抄底,最后抄死自己。
cfx噪?? 
  2,不愿止损。这个问题相关的文章很多,有的散户见一次止损后没几天股价又涨了回来,下次就抱有侥幸心理不再止损,这是不行的。就我而言,决不容许出现超过5%的亏损。"截断亏损,让利润奔跑",确是至理名言啊。但话又说回来,如果你没有自己的赢利模式,你的结局也就是买入,止损,再买入再止损。
'铅|.骬I  
  3不敢追高,许多散户都有恐高症,认为股价已经涨上去了,再去追涨被套住了怎么办?其实股价的涨跌与价位的高低并没有必然的联系,关键在于"势",在上涨趋势形成后介入安全性是很高的,而且短期内获利很大,核心问题在于如何判断上升趋势是否已经形成,这在不同的市场环境中有不同的标准,比如在大牛市中,放量创出新高的股票是好股票,而在弱市中,这往往是多头陷阱。对趋势的判断能力是衡量炒手水平的重要标准之一。
?K姜v铬  
  4,不敢追龙头股,一个股票开始上涨时,我们不知道它是不是龙头,等大家知道它是龙头时,已经有一定的涨幅了。这时散户往往不敢再跟进,而是买一个涨幅很小的跟风股,以为可以稳健获利,没想到这跟风股涨时慢涨,跌时却领跌,结果弄了半天,什么也没捞到。其实在强势时,涨逝越强的股票,跟风越多,上涨越是轻松,见顶后也会有相当时间的横盘,让你有足够的时间出局。当然,如果涨幅太大,自然不可贸然进场。
k@.Zu g? 
  5,喜欢预测大盘,除了极少数情况下次日大盘必涨外,短线大盘的走势其实是不可预测的。这也就说,平日里我们散户关注的机构测市等节目并没有多大意义。对于看大盘做个股的朋友来说,我以为可以把大盘分为可操作段与不可操作段更有意义,至于具体区分方法有很多,比如说30日均线,MACD,或者是一些更敏感的指标。
碄髸? x? 
  6持股数目太多,这主要是因为没有自己选股的方法,炒股*别人推荐。今天听朋友说这个股票好,明天看电视说那个股也好,结果一下就拿了十多只股票,搞得自己手忙脚乱。也有人说,江恩不是说要把资金十等份吗?哎,那是对大资金说的,你一个小散户区区几万元资金也要十等份吗?我认为,散户持股三只左右是比较合适的。
檞`珷??  
  7对主力的操盘方法没有一个系统的认识,炒股就像盲人摸象,毫无章法,运气好时也能赢两把,运气不好了就一败涂地。所以散户总是唱"为什么受伤的总是我"的那个人。
>?>?i??  
  8不愿放过每一个机会,看见大盘涨了一点就急忙杀入,根本不清楚自己能有几成胜算,结果一下又被套住了,其实这是由于水平低下,缺乏自信所致,如果你能有几套适用于不同环境市场的赢利模式,那么不管大盘涨,跌还是盘整,你都有稳健的获利办法,你就能从容不迫的等待上升趋势形成后再介入,把风险降到最低。
X駜[? 
  9不能区分牛市和熊市的操作方法,散户们总是抱有多头思维,总是想着第二天要涨,这种思维让大家在01年后的大熊中吃够了苦头。其实在沪深股市,牛短熊长是不变的主旋律,机构喜欢唱多,那是因为只有散户做多,他们才有饭吃。对于我们散户来说,看紧你的钱袋才是最重要的。我们要做的就是像猎豹一样,时机不成熟决不动手,一旦出手,至少要有七成以上的胜算。在沪深股市,其实有一些胜率将近100%的法,虽然出现的频率较低,但你若能抓住,平均每年也能给你带来十个点左右的收益。
wL?靖Y絵  
  以上几点,不知是否能对你有所启示,一个人要否定原来已形成的固定思维是很痛苦的,但要想成功,就必须不断的否定自我,不断的学习新的理念,才能最终走向成熟。
E埳\塭d  
  下面简单谈谈我的一些感想:
屎b@w翄鯖  
  1,基本面与技术面,随着蓝筹股的崛起,对基本面的研究的重要性已被提到了近几年的最高峰,但对于小散户来说,白天要上班,晚上有那么多杂事,你能有多少时间,又有多少水平去研究基本面?至于去上市公司调研更是瞎掰,你以为你是谁呢?你有能力帮上市公司圈钱吗?你能给老总多少好处吗?其实基本面的变化自会反映在股价的变化中,对技术面的研究我以为还是散户的根本出路.
悀д怹X(v? 
  2中线和短线,严格的区分中线和短线我以为意义不大,如果你介入之后上涨不久即滞涨回落逼近你的成本,那你当然要先出来以免被套,毕竟任何时候资本的安全性是第一位的.如果你介入后一直处于上升趋势,那你自然可以中线持股,即便其后出现震荡,因为远离你的成本你也能安心持股.我以为如果股价不能远离你的成本 ,那根本谈不上中线,对于那种介入盘整的股票等其拉升的做法我是不喜欢的.你又不是主力的亲戚,怎能知道他何时启动,是不是龙头?主力洗盘时,在你的成本之上还好,如果在你的成本之下,而你又重仓,那你不但捞不到一点便宜,很可能还要止损出局.就算你坚持挺住,运气也够好,获利出局,你赚的那点钱,可能还不够买心脏药的.我们炒股,不但要挣钱,还要从中感受到乐趣,如果整天提心吊胆,寝食难安,最后还要赔钱,还不如干脆放弃算了.
模}詾腵裳  
  3,重大盘,轻个股.因为80%的个股都是与大盘保持一致的,所以看清了大盘的走向也就看清了大部分个股的走向,这是一种稳健的操作方法,我的师傅就喜欢这样操作,自96年入市以来从无一年亏损.03年他出手二十余次,仅失手一次,平五次,其余的全部获利而归,他全年介入的股票并不多,就是盯住几只大主力重仓的票,熟悉股性,研究透彻,随大盘波动反复套利,年收益也达到70%.对于时间不多的散户.这种方法是不错的 .
嚬/??n  
  4轻大盘,重个股,只要大盘不是在大跌(暴跌反而好抢反弹).只要有符合赢利模式条件的个股出现就以一定仓位大胆出击,既追涨(上升趋势形成)也买跌(最后一根阴线).这种方法不参与个股的吸货,盘整和出货,是一种暴利的方法,但风险并不大,关键是你要能达到这样的操作水平.在03年 ,像凌钢和梅林两大牛股都有非常安全的买点,错过是非常可惜的.你能发现这样的买点吗?一旦你达到这样的水准,那么距离百万也就不远了.
B-s?!㎏? 
  写了这么多思路,但赢利还是要*具体的操作方法.最后我把一套比较独特,能适用于不同市道的操作方法送给去年仍亏损的朋友,希望能帮助你们从此远离亏损, 多多赢利.为避免为主力利用,至于你能得到的年收益是30%,50%或更多,更少就看你自己的努力了.祝大家好运.
M跑+?E簟  
Z(獊.?U蓏  
============================================================
灓?<e.|  
  怎样判断股票有主力进驻:
彑稞~?鐽? 
S]戗醴c  
  判断主力介入某股炒作的方法
O誁裓?3z  
詈暦鶝E  
  (1)股价大幅下跌后,进入横向整理的同时,间断性地出现宽幅振荡。
wNn亪慌v  
z ?贸+?  
  (2)当股价处于低位区域时,如果多次出现大手笔买单,而股价并未出现明显上涨。
窠虰蠰?  
懌懔;WY嵛  
  (3)虽然近阶段股价既冲不过箱顶,又跌不破箱底,但是在分时走势图上经常出现忽上忽下的宽幅震荡,委买、委卖价格差距非常大,给人一种飘忽不定的感觉。
晴D ?h?? 
弤钄gU?U  
  (4)委托卖出笔数大于成交笔数,大于委托买进笔数,且价格在上涨。
1@糘讌X:  
?r咅家噽  
  (5)近期每笔成交数已经达到或超过市场平均每笔成交股数的1倍以上。如:目前市场上个股平均每笔成交为600股左右,而该股近期每笔成交股数超过了1200股。
室?+(鹟  
貀]C加X +  
  (6)小盘股中,经常出现100手(1手=100股)以上买盘;中盘股中,经常出现300手以上买盘;大盘股中,经常出现500手以上买盘;超大盘股中,经常出现1000手以上买盘。
蟔碔袴m  
??D襺4XH? 
  (7)在3-5个月内,换手率累计超过200%。
?cBq稯? 
?宾A???  
  (8)近期的"换手率"高于前一阶段换手率80%以上,且这种"换手率"呈增加趋势。
潯灒鋆"~  
緭)&hE'?  
  (9)在原先成交极度萎缩的情况下,从某天起,成交量出现"量中平"或"量大平"的现象。
S]螸\h塿?  
?ù震P]u? 
  (10)股价在低位整理时出现"逐渐放量"
S涙驹w?? 
*酦﹛錚H? 
  (11)股价尾盘跳水,但第二天出现低开高走。
撦5Uo壪9Y? 
淥樰嶊k玷? 
  (12)股价在低位盘整时,经常出现小"十字线"或类似小十字线的K线。
飉fL`v  
縗会嚼N? 
  (13)在5分钟走势图下经常出现一连串小阳线。
呕*禘姝?  
?<屦?R  
  (14)虽遇利空打击,但股价不跌反涨,或虽有小幅无量回调,但第二天便收出大阳线。
]佮#懵蓷  
稌‐婝+1纎  
  (15)大盘急跌它盘跌,大盘下跌它横盘,大盘横盘它微升。
>?代]Z渋b  
?雔|OG  
  (16)在大盘反弹时,该股的反弹力度明显超过大盘,且它的成交量出现明显增加。
GiG0洠羒凛  
  (17)大盘二、三次探底,一个底比一个底低,该股却一个底比一个底高。
鬯 V椾WA? 
縈J?  
  (18)股价每次回落的幅度明显小于大盘。
<B敊熖??  
0?釲LYB妌  
  (19)当大盘创新高,出现价量背离情况时,该股却没有出现价量背离。
0懐銩棟毎  
鮱}詛?  
  (20)股价比同类股的价格要坚挺。
?[$攮q?I  
礘?洓Y?? 
  (21)日K线走势形成缩量上升走势。
) n鏼,BE  
洙ㄆg\涢?  
  如果同时出现5个信号,说明该股很可能有主力进驻了.如果同时出现8个信号,说明该股十有***有主力进驻了.如果同时出现11个信号,基本可以断定该股有主力进驻了.
傘檸j? 
  当发现主力进驻后,跟进要讲究时机.最好选择股价有效突破时跟进.
禸誸貎~5挛  
uU欇徘ul?  
蘶v栤ィ詔  
止损的至高境界
b???l謸  
谳? H洖? 
我没有时间去回复那么多的质疑。至诚网的很多朋友,真的都很至诚。令我很感动。这是我今日略谈操作方法的原因。
?喅P? 
  止损的最高境界在心。见诸相非相,即见如来。
屒骪>赊鳏  
  任何的有为方法,都会有一定的适用范围,都会有一定的局限。高境界的止损在无为。
侢卋B絟憬? 
  无为以有为做基础,二者不可分离。
\茿逮P? 
  止损是整体的止损才是最高的止损。止损无固定的方法。
{窳B(篐  
  有的朋友会说,来点具体的。其实最高的止损无法具体描述,一描述就会变成有形的东西,有形的东西就易引起种种误解,这是我不愿的。
脢畫 -7?  
  但不具体讲,又无法让大家明白。我首先须明确告诉大家的是,我下面说的止损其方法是错误的!因为高境界的方法只要一落到纸上就一定是错的!诸位千万不要以为真有那么一个具体的 固定的最高止损方法!套用佛经的格式,可以这么说:最高止损,非最高止损,是名最高止损。
?sv6a啰K? 
  诸位千万不要学习我的具体方法,而要学的只是我的思路!(因笔者时间有限,几日后再继续写)
Q榟窵pU  
  一 ,止损的最高境界在心,见诸相非相,即见如来。
7???U球  
  卖股票时不要相信自己的眼睛,而要相信自己的心。大多数股民,卖出股票时都有一个误区,那就是要等看清楚再卖。其实等看清楚时,大多数情况下为时已晚。比如,一只个股当我们经过严密的思考而得出结论时,就应卖出。此时不要管这只股票现在是否大涨,是否指标都在走好,业绩预期是否良好。不要被眼睛所见的各种表面现象蒙敝了我们心灵的智慧和宁静。略举一例:有一次,我买入了广电电子,买入后发现主力是在出货,再加上大盘不好,我决定第二日出局止损。第二日大盘暴涨,几乎所有股票都以涨停开盘,我开盘就抛了出去。我不想看清楚再抛,因为我已想透了。此时的所有技术一定是向好的,此时的政策一定是向好的,我看也不看,我就抛了,那日广电就是开盘封于涨停,我也卖它。我相信我的判断,我不太相信我的眼睛。
T?+蔭燿B  
  二,止损首先是整体的止损。
8僉傋Oh&  
  我认为采取何种止损方法,应和操作者的功力有极为密切的关系。止损应以操作者的功力为基础。可以这么说,止损的灵魂是操作者的功力,而不是止损的方式。因此不同功力的操作者采取不同的止损方法,不同时机,不同形势下也要采取不同的止损方法。反观现今,比如短线操作破5日线止损这一方法,似乎成了各种水平操作者,各种形势下都可采用的方法。毫不质疑,这类一刀切式的止损方法是不科学的!这也是我为什么在前文中讲没有固定的止损方法的原因之一。
罳g峗V? 
  我认为真正的止损一定是有机的 整体的,没有游离于操作者整体操作功力之外的单独存在的止损方法!至高止损的第一法则是:当事件发展到超出操作者的能力之外时,止损就必须实施了。
饚芨敐37Q  
  这句话主要包含两个意思:1. 当股票走势发展到自己的功力 能力已不能很好把握时,就必须止损。举例来说,有一次我买入银广厦,买入后此股连拉三阳,当我告诉朋友我想卖出时,朋友很诧异地问我'为什么要卖出?它走得很好啊'我回答说:"这三天的上涨都在我的能力范围之内,我可以判断和分析。可是明日它无论怎样走,我都判断不出来它将来的走势了。我只赚我的能力所能赚的钱,我从不做超出自己能力的事。"第二日,开盘我就抛出了。如今的很多股民,哪里是在炒股,分明是在赌博。当自己心中疑惑时,已不能判断后市时,仍然持股不抛,我认为那就是非分之想。2. 当由于客观原因自己无法操作时,必须止损。例如,有一次我的电脑坏了,朋友家也去不了,已无法很好分析手中股票走势,我马上就卖出所有股票,尽管股票正在上涨。有的朋友会说,不必这么着急卖吧,等电脑好了再卖不行吗?依靠侥幸,是我从来都 反对的。
=鄷w郗f鵨? 
  四,高级止损和普通止损的实战区别:
ɡ=蹑:E9狘  
  1. 高级止损是主动的 积极的 止损,不是被动的止损。
Y?欒4W36? 
  在至高止损(一)的回复中,操纵兄很准确地讲述了普通止损的特点:大意为股价下跌触发止损的产生 止损从来都是被迫的之类。
噁]坊兇P=  
  我不想说这种止损方法没有效果。而是说这是一种较为机械的 被动的 低级的止损。不客气地说,因股价下跌到明确发出卖出信号的程度再止损,无异于主力甩手给了你一记大耳光(破位大阴等恶劣指标)时,才知道主力不想和你做朋友了!高级的止损是主动的 灵活的止损,在主力出货之初,主力还在维护指标 形态时 高级止损就开始了。这样才可以化解风险于无形,占据有利的时机于无意。
孨鋝 8|锡X  
  正所谓明医治病头,庸医治病尾。
{ $M鴧薌  
  由于高级止损是主动的止损,所以卖出时常是获利的,这也是高级止损中止损止盈常分不清的原因。
窢蛮胣y妘? 
  2. 高级止损的核心是与主力的斗智斗法。
?d?炡  
  因此其止损方法是不拘形式的,是因势变化的,都是针对当时和特定环境采取的。因而都是暂时的应对方法,或者说是"当时且仅是当时有效的止损方法"。但其核心与主力的斗智斗法是恒久不变的。高级止损在实战中无时无刻不体现与主力的斗智斗法这一核心。(因电脑连续出现问题,我篇文章已经打了第四次,为了防止再出问题,现在就先发了吧,以免 文章再次消失 !我一会,继续打。)
?K鱘P?F  
  五,至高止损是无为法
倶2?Y澪鎐  
  什么叫无为法?不按自己的主观意志而是顺应客观形势的变化来行动。
憑}?刼r噂  
  如,水,装在杯中就是杯的形状。倒在盆中就是盆的形状。洒在地上就没有什么形状。其本身没有形状,为无形。当遇到各种客观环境,因环境的不同而显现各种不同的有形。无为法是无为而无不为,无形而无不形。至高止损本身没有固定的公式 条框,它顺应外界的形势,因势而显现不同的止损方法。下面我多举了几个例子,由于笔者打字速度很慢,时间紧张,每种止损方法都是简单的分析一下,有的解释得过于简略 笼统,望朋友们谅解。(因担心电脑出毛病,暂且发表,一会再续写)
臓:$  
  1.股价止损法
羕2隡[狞  
  几年前,一朋友打来电话,说已买入一个科技股,并说据可靠消息,有一个大机构正在吃货,而另一机构正在卖出。即正在换庄。我打开电脑一看,现在确实在放量。此股从70多元,跌至现在的30多元,然后开始长期横盘,近几日开始上涨。我忍不住笑了,说:哪个大构会这么傻呀!这么高的价位接货,以后准备卖给谁去?快跑吧,主力想套牢你。(目前此股10多元)
d要n71  
  2.成交量止损法
?W%F艵? 
  几个月前,一朋友想重仓杀入生益科技,问我怎么样。我看了一下,此股严重超跌,大多数人都被高高套在上方,近日连放巨量上涨,我说:不但不能买,如果有还应卖!大部分人被套在上方,谁还会在大涨时抛售?既然卖的人少,哪来的这么大成交量?如果是主力对倒作量,作这么大量又有何意义?无非是吸引散户入局而已。
кN莩q鄅s  
  3.五日线止损法
桛醾矛睠x? 
  一次,上海金陵大涨,我买入后即开始整理。其间无论大盘怎样涨跌,此股始终在5日线上方整理,一连几日。我于是马上止损卖出,因为此种情况下,主力的最佳策略应是打破5日线进行洗盘,而现在主力始终不洗盘,说明其已有派发之意。(三日后,大跌破10线)
蘭??暋竫  
  4.即时走势止损法
3 -?x? 
  有一天早晨,我在营业部看见一男青年正在电脑前观注深深房,当时此股为龙头股。我对青年说:"今早开盘25分钟内,深房如果不能大涨4%以上,它就完了。"青年冷冷的说:"你是操盘手啊!"我只能叹息一下。主力洗盘已久,到应控盘的时侯,不去控盘,说明主力已无意拉高,后市看淡。(此后不久,深房做一假突破,回落后,盘整一个月多,最终向下成头)
T*?x疛WG  
  5.整理幅度止损法
U気逫嫇?  
  一日,我介入狮头股份。当日即小有落利。第二日此股进行强势整理,其整理时的股价大部分时间在我的买入价上方1%左右,于是在下个交易日我马上出局了,原因是股价整理位置较低,主力没有控制散户的介入成本,即推高散户的介入成本。(卖出的第二日即大跌成中期头部)
Zk!p?MA2? 
  6.整理时间止损法
=紙?杗? 
  有一次,我重仓买入大元股份。买入后上涨不多,即开始无量横盘,少的日子,一天仅成交十万股,显现主力持仓很重,一日此股向上突破,第二日上午即开始又无量横盘。我算了一下,已无量盘了三周了,于是决定砸盘出局。因为无量横盘时间过久,说明主力有可能因故不能动用资金拉升。(当时的价位为20多元)
w攇}鋃睜  
  7.开盘价止损法
Q_7$锑n? 
  一日,我见一老太太持有第一百货,前日涨停,今日想加仓。早盘低开后,此股即一路下行,我劝老入不应买,反应卖出。老太太不听,又逢低吸了20手,结果过后老人被套长达一个月。在这种环境下低开,说明主力不想动用资金玩真的,残酷的洗盘或出货随时都可能发生。
?P橥  
  8.上下影线止损法
U頬俅 6c  
  有一次,我买入大连热电,第三个交易日即涨停。第四个交易日全天此股上下大幅震荡。快收盘我清仓出局。止损理由是,主力居然会任由股价大起大落!这对于主力日后的拉升,埋下了很大的隐患,散户的持仓成本相差太大!显然为控盘不力。主力一定是借机在出货,那么我先走了。(此后又慢慢上涨了10%,最后成中期头部,大跌70%以上)
蒁禪1籎榜? 
  9.涨幅排行榜止损法
)錇RE ?H  
  一日,我买入津劝业后,大盘一直较弱。每日能上涨2%以上的个股,当日就能进涨幅前十名。此期间津劝业,数次以3%或2%的涨幅出现在涨幅排行榜上,我一看不好,马上买了。因为弱市中通过上涨幅排行榜来坚定人们的持股信心和短线客的追买热情,为主力的常用出货手法。
辊P蝬蘷? 
  10.流通盘止损法
}隲椺﹩钒? 
  一天,来到朋友家,他让我看浪潮软件的走势。此股当时处历史低位,呈底部放量后振荡向上的走势,涨时放量,跌时缩量,朋友说已介入。并说各项指标都不错。我一看,一个多月来才涨了不到20%,我问多大流通盘,朋友说是小盘股。我一听,说:准备撤吧!小盘股在目前的市场环境下,不能这样建仓,也不能这样拉高。(一周后大跌成头)
?鷑脀g  
  11.涨停盘止损法
垥蝭$U1$撧  
  有一次,我全仓介入氯碱化工,买入后十分钟即涨停。第二日开盘即十分钟即涨停。第三日上午大量换手,下午封于涨停后,成交量迅速减少。接着又有一天,也是上午大量换手,下午牢牢封于涨停,封停后成交稀少。我立即开始清仓。因为两次封停前上午的大量换手累积足有70%以上,足够主力混水摸鱼出局了。下午的封停是做给人看的,要想封停,这么大的换手,早盘就能封停。
?腢?]  
  时间是流动的,事物是发展变化的,不要执著于任何方法是我的真心忠告,金则经说一切有为法,如梦,如幻,如露,如电, 当作如是观 因电脑有问题,才不得已分几部分发表,因为打了三次,都因电脑死机,而功亏一旦。发表此篇文章目的是为了打破一些人心中的束缚,也为了使一些有悟性的朋友,能得到点启发。此文发表一定会遭到很多批评和质疑,笑骂任由人评说好了。只要能给有缘的立志探索股道的朋友在黑暗中点燃一点火星,我就满足了。
?繖[飨k?

Ring Buffer

Character Ring Buffer

Character buffers are often useful in embedded systems for a variety of tasks. This article presents a suggested implementation, which you can download from the articles page.

  1. Typical Uses
  2. Interface
  3. Design
  4. Implementation
    1. buffer_put
    2. buffer_get
    3. buffer_size

Typical Uses

Ring buffers are often used in hardware drivers, for example in interrupt-driven UART and SPI. Another use for character buffers is 'task queues': tasks can be represented as non-zero characters and 'queued' in the buffer. An application program then pulls the next task from the buffer and runs the corresponding routine. This can be useful when dealing with asynchronous user input (for example, from buttons). Simple task queues can be used as part of a very basic operating system.

Design

The ring buffer design allows a 'circular queue' data structure to be implemented in a statically allocated array. Dynamic memory allocation is best avoided in most embedded systems in order to reduce code size and performance while ensuring that memory use is 'bounded'.

A queue can be implemented as an array, with each element storing one byte of data (typically a character). 'head' and 'tail' indexes keep track of buffer occupancy. The 'ring' is formed by allowing the indexes to 'wrap' around the end of the array back to the beginning. This is especially useful since these buffers are typically written to and read from at somewhat random times.

Interface

The buffer interface should provide some version of the following routines:

  • initialization - set the buffer up in an 'empty' state
  • 'put' - insert a character into the buffer
  • 'get' - remove a character from the buffer
  • 'size' - report the occupancy of the buffer

Implementation

Here is my implementation of the 'ring' buffer, which you can download from the articles page. We begin by defining a simple 'buffer' data structure to hold the buffer array and 'head' and 'tail' indexes. I have chosen to allow array sizes that are powers of 2 because it allows me to use bitwise operations rather than comparisons when 'wrapping' the head and tail. In this case, the BUFFER_BITS must not be larger than 8 (for a buffer size of 256).

struct buffer
{
   
unsigned char data[1<<BUFFER_BITS];
    uint8_t head
, tail;
};

There are many possibilities for how to use the head and tail pointers. In my implementation, I chose the following rules:

  1. head and tail start at 0, head == tail indicates an 'empty' buffer.
  2. to write to the buffer, advance the tail and write at its new location.
  3. to read from the buffer, advance the head and then read from it.
  4. the head and tail advance to the 'right'

The rules are somewhat arbitrary, as long as you follow them consistently and ensure that your scheme works. I suggest trying it out of a piece of paper before writing any code. My scheme results in one buffer position being 'wasted' due to rule 1 above.

buffer_put

The following function puts a byte into the buffer. Its first step is to attempt to advance the tail pointer, wrapping it if needed. An error code is returned if the next tail position would collide with the head (that is, the buffer is full).

char buffer_put( struct buffer  *b, char c )
{
   
/* buffer is full if the next tail pointer position is the position of the
     * head pointer */

   
if ( ( b->tail+1 == b->head ) ||
       
( b->head == 0 && ( (b->tail+ 1) & (1<<BUFFER_BITS ) ) )
     
)
       
return 0; /* failed to put */
   
if ( (++(b->tail)) & (1<<BUFFER_BITS) ) /* adjust the tail pointer */
        b
->tail = 0;
    b
->data[b-> tail] = c; /* put into buffer at tail */
   
return c;
}

This function takes advantage of the 2^n size of the buffer. The tail pointer will only have a '1' in the same position as the mask 1<<BUFFER_BITS if it has reached the value of the size of the buffer array. Since we start counting at 0, this means that the tail must be wrapped to 0 because it has exceeded the last allowed value. For example, in an 8-position buffer, an index may have values between 0 and 7. At 7, the next index is 0 rather than 8.

buffer_get

This function adjusts the head and then returns the byte found at its new position. The same 'wrapping' technique is used when moving the head index.

char  buffer_get( struct buffer *b ) 
{
   
if( b->head == b->tail ) /* buffer is empty: nothing to get */
       
return 0;
   
if( (++(b->head)) & (1<<BUFFER_BITS) ) /* adjust the head pointer */
        b
->head = 0;
   
return b->data[b-> head];
}

buffer_size

This function returns the occupancy of the buffer. The buffer is either empty (head == tail) or not. A non-wrapped buffer's size is simply the difference between the tail and head positions. A wrapped buffer's size is the opposite of that.

uint8_t buffer_size( struct buffer * b )
{
   
if( b ->head == b->tail )
       
return 0;
   
return b-> head < b->tail ?
        b
->tail - b->head : (1<< BUFFER_BITS) - b->head + b->tail;
}

Implement an UART Driver (cc)

Writing an Interrupt-Driven UART Driver

Generally speaking, a driver's purpose is to provide an application or operating system with an interface to hardware. In this case, we will discuss designing and writing a driver for the UART.

The code examples presented here are snippets from my driver for the Atmel AVR microcontroller. The buffer data structure and functions mentioned are available as well. You may download the complete driver from the articles page.

  1. Design
  2. Receiver
  3. Transmitter
  4. Buffers
  5. Interface
    1. putchar()
    2. puts()
    3. getchar()
  6. Interrupt Handlers
    1. Receiver Interrupt
    2. Transmitter Interrupt
  7. Initialization

Design

An interrupt-driven device such as a UART can be represented as a three-level design on top of the hardware: the interrupt handlers, buffers, and application interface. For the UART, the interrupt handlers that we are most interested in are for the 'receiver has data' event and the 'transmitter is empty' (and thus can accept more data) event. The application interface may be the familiar 'getchar()' and 'putchar()' routines.

The following figure shows the three software layers, arranged from left to right by their 'closeness' to the hardware:

design

Receiver

The receiver is a physical shift register into which data arrives. A UART receiver generally has the capacity to store one byte of data at a time. In interrupt-driven mode, the UART will generate some sort of 'receiver has data' interrupt when data arrives. Because a UART is asynchronous and data can arrive at any moment, the application code running on the processor may not be ready to deal with the data. In fact, the application will not actually need the data until a routine like 'getchar()' is explicitly called. However, the received byte will be overwritten by the next byte if it is left in the receiver data register.

The receiver interrupt handler, therefore, will read the newly arrived byte (step '1' in the figure above) and copy it into the receive buffer (step '2'). Whenever it is called in application code, 'getchar()' will read the next available character from the receive buffer.

Transmitter

The UART transmit side copies a byte into a physical shift register, from which a hardware state machine actually shifts the data to the outside world. The transmitter register typically can hold one byte at a time and therefore some amount of time must pass before the next byte of data may be written. The transmitter is considered to be ready for the next byte when it is empty (that is, the data from the register has been shifted out). The UART typically provides an interrupt for 'transmitter is empty', allowing the transmitter to be dealt with only when it is ready.

In order to free the application code from having to wait for the UART transmitter to be ready, a transmit buffer is provided. Calls to routines like 'putchar()' simply copy characters to the transmit buffer. When the 'transmitter is empty' interrupt occurs, the transmit interrupt handler will read the next byte from the transmit buffer (step '1' in the figure above) and copy it into the UART transmitter register (step '2').

Buffers

The buffers placed between the UART interrupt handlers and application interface can be identical in implementation. A typical approach is a 'ring' buffer (similar to a circular queue). Please see "Character Ring Buffer" for an explanation of the buffer and example code. The buffer data type and interface used in that article is used in the examples here.

The transmit and receive buffers should be accessible both interrupt handlers and interface routines that need access to them. This can be accomplished by declaring them in global scope. Additionally, they (along with any global variables used by an interrupt handler) should be declared 'volatile' to prevent problems introduced by compiler optimization.

Interface

This section suggests implementations for the typical 'putchar()', 'puts()' and 'getchar()' functions. The code is written in a generic manner with processor-specific tasks such as interrupt configuration abstracted away as macros that are assumed to be defined.

putchar()

The 'putchar()' routine simply takes a byte and stores it in the transmit buffer. Typically, it returns the byte that was passed to it or an error code. Assuming that 0x00 (character NULL) is not expected to be transmitted, 0 may be a good choice of error code. -1 is also often used. Here is an example:

int uart_putchar( char c  )
{
   
if( buffer_put( &transmit_buffer, c ) ) {
        UCSR0B
|= (1<<UDRIE0); /* enable TX interrupt */
       
return -1 ;
   
}
   
return c;
}

puts()

It is usually helpful to provide a 'put string' function along with 'putchar()' unless the C stdio library functions puts() and printf() are going to be available. The 'puts()' routine can either copy the string into the transmit buffer as part of the buffer interface or it can simply call 'putchar()' repeatedly for each byte in the string. Assuming that we are using the version of 'putchar()' presented here, an implementation of 'puts()' can be written like this:

int uart_puts( const char * s )
{
   
int i = 0;
   
   
while( *s != '\0' )
       
if( uart_putchar( *s ++ ) == 0 )
           
break;
       
else
            i
++;
   
return i;
}

Recall that a C string is a character array with a terminating 0x00 byte. This version of 'puts()' attempts to copy each byte in the string to the transmit buffer, returning the number of bytes that it was able to copy.

getchar()

There are two typical ways to implement 'getchar()': blocking and non-blocking. Occasionally, it is helpful to have both available. A blocking 'getchar()' will wait until there is data in the receive buffer, effectively halting the application program if no data is available. This is similar to console input in a shell application and is sometimes desirable. However, a blocking call may be inappropriate in, for example, a control system. A non-blocking 'getchar()' will instead return a status code in the event that no data was available. This allows the routine to be called without potentially halting application code.

A blocking 'getchar()' can be written like:

char getchar( void  )
{
   
while( buffer_size ( &receive_buffer ) == 0 ); /* wait for data, if none is available */
   
return buffer_get( &receive_buffer );
}

The caller, of course, can also check the buffer capacity before calling 'getchar()'. The non-blocking version can be written in several ways. A status code (such as 0x00 or -1) can be used, or 'getchar()' could take a pointer to the 'destination' character and return only status codes. A simple implementation taking a pointer and returning the status code can be:

char uart_getchar( char  *c )
{
   
if( buffer_size ( &receive_buffer ) > 0 ) {
       
*c = buffer_get ( &receive_buffer );
       
return 1;
   
}
   
return 0 ;
}

Interrupt Handlers

Implementation for interrupt handlers greatly depends on the processor that you are using. Suggested implementations of 'receiver has data' and 'transmitter is empty' are discussed here in a very generic manner. You should read your processor and toolchain documentation for the details. Additionally, processors differ in the way UART interrupts occur. Some processors provide individual interrupts for various UART events. Others provide one general 'UART event' interrupt, whose handler must first decide what event has occurred and then handle that event. This is normally done by checking a status register. In such cases, the 'read' of the status register usually clears the interrupt flag.

The 'receiver has data' interrupt handler usually just needs to read from the UART data register and write to the receive buffer. Similarly, the 'transmitter is empty' handler simply reads from the transmit buffer and writes to the UART data register. In the 'transmit' handler, it is often helpful to check the occupancy of the transmit buffer after performing the read and copy. When the transmit buffer is empty, the 'transmitter is empty' interrupt can be turned off as it is no longer needed until 'putchar()' is called again (and re-enables the interrupt). This prevents the 'transmit' interrupt from happening again when the last byte is shifted out but no new data is ready.

Receiver Interrupt

Here is an example of a receiver interrupt handler for the AVR:

ISR(USART_RX_vect) 
{
   
char temp;

   
/* receiver has data */
   
if( UCSR0A & (1<< RXC0) ) {
        temp
= UDR0;
        buffer_put
( &receive_buffer, temp );
   
}
}

Transmitter Interrupt

Here is an example of a transmitter interrupt handler for the AVR:

ISR(USART_UDRE_vect) 
{    
   
/* we have data to send */
   
if( buffer_size( &transmit_buffer.g ) > 0 ) {
        UDR0
= buffer_get( &transmit_buffer );
       
if( buffer_size( &transmit_buffer ) == 0 ) /* no more data to send */
            UCSR0B
&= ~(1<<UDRIE0); /* disable TX interrupt */
   
}
   
else
        UCSR0B
<= ~(1<<UDRIE0); /* disable TX interrupt */
}

This interrupt handler transmits a byte if the transmit buffer had any data. It then ensures that the "transmitter is empty" interrupt is disabled when there is no more data in the transmit buffer.

Initialization

One final piece of software that your driver should provide is an 'init' routine. This routine should ensure that the UART is ready to use. Typically it will:

  • initialize the transmit and receive buffers
  • enable the UART transmitter and receiver (and configure IO pins, if needed), configure the baud rate and other UART settings
  • enable the UART 'receiver has data' interrupt

The 'transmitter is empty' interrupt is typically not enabled during 'init' because it is not needed until 'putchar()' is called. Here is an example for the AVR:

 inline void uart_init( uint16_t brr )
{
   
/* set up buffers */
    buffer_init
( receive_buffer );
    buffer_init
( transmit_buffer );
   
   
/* set up UART */
    UBRR0L
= (uint8_t)brr ;
    UBRR0H
= brr>>8;
#ifdef UART_X2
    UCSR0A
|= (1<<U2X0);

Saturday, October 06, 2007

Keyboard Shortcuts of Gmail


What are the keyboard shortcuts?

Keyboard shortcuts help you save time since you never have to take your hands off the keyboard to use the mouse. You'll need a Standard 101/102-Key or Natural PS/2 Keyboard to use the shortcuts.

To turn these case-sensitive shortcuts on or off, click Settings, and then pick an option next to Keyboard shortcuts.

Shortcut Key Definition Action
c Compose Allows you to compose a new message. <Shift> + c allows you to compose a message in a new window.
/ Search Puts your cursor in the search box.
k Move to newer conversation Opens or moves your cursor to a more recent conversation. You can hit <Enter> to expand a conversation.
j Move to older conversation Opens or moves your cursor to the next oldest conversation. You can hit <Enter> to expand a conversation.
n Next message Moves your cursor to the next message. You can hit <Enter> to expand or collapse a message. (Only applicable in 'Conversation View.')
p Previous message Moves your cursor to the previous message. You can hit <Enter> to expand or collapse a message. (Only applicable in 'Conversation View.')
o or <Enter> Open Opens your conversation. Also expands or collapses a message if you are in 'Conversation View.'
u Return to conversation list Refreshes your page and returns you to the inbox, or list of conversations.
y Archive*
Remove from current view
Automatically removes the message or conversation from your current view.
  • From 'Inbox,' 'y' means Archive
  • From 'Starred,' 'y' means Unstar
  • From any label, 'y' means Remove the label
* 'y' has no effect if you're in 'Spam,' 'Sent,' or 'All Mail.'
m Mute Archives the conversation, and all future messages skip the Inbox unless sent or cc'd directly to you. Learn more.
x Select conversation Automatically checks and selects a conversation so that you can archive, apply a label, or choose an action from the drop-down menu to apply to that conversation.
s Star a message or conversation Adds or removes a star to a message or conversation. Stars allow you to give a message or conversation a special status.
! Report spam Marks a message as spam and removes it from your conversation list.
r Reply Reply to the message sender. <Shift> + r allows you to reply to a message in a new window. (Only applicable in 'Conversation View.')
a Reply all Reply to all message recipients. <Shift> +a allows you to reply to all message recipients in a new window. (Only applicable in 'Conversation View.')
f Forward Forward a message. <Shift> + f allows you to forward a message in a new window. (Only applicable in 'Conversation View.')
<Esc> Escape from input field Removes the cursor from your current input field.

<Ctrl> + s

Save draft

Holding the <Ctrl> key while pressing s when composing a message will save the current text as a draft. Make sure your cursor is in one of the text fields -- either the composition pane, or any of the To, CC, BCC, or Subject fields -- when using this shortcut.

Macintosh users should use <Cmd> + s.

#

Delete

Moves the conversation to Trash.

Combo-keys - Use the following combinations of keys to navigate through Gmail.

Shortcut Key Definition Action
<tab> then <Enter> Send message After composing your message, use this combination to send it automatically. (Supported in Internet Explorer and Firefox, on Windows.)
y then o Archive and next Archive your conversation and move to the next one.
g then a Go to 'All Mail' Takes you to 'All Mail,' the storage site for all mail you've ever sent or received (and have not deleted).
g then s Go to 'Starred' Takes you to all conversations you have starred.
g then c Go to 'Contacts' Takes you to your Contacts list.
g then d Go to 'Drafts' Takes you to all drafts you have saved.
g then i Go to 'Inbox' Returns you to the inbox.


Top 20 Tallest Buildings(CH)

全球最高建筑前20位排名


排名 建筑名称 层数 高度(米) 竣工年份

1: [台北] 台北101 101 508 2004

2: [吉隆坡] 佩特纳斯大厦 88 452 1996 (双子星)

3: [芝加哥] 西尔斯大厦 108 443 1974

4: [上海] 金茂大厦 88 421 1998

5: [香港] 国际金融中心第二期 88 415 2003

6 :[广州] 中信广场 80 391 1997

7: [深圳] 地王大厦 69 384 1996

8: [纽约] 帝国大厦 102 381 1931

9: [香港] 中环广场 78 374 1992

10: [香港] 中国银行大厦 72 369 1990

11: [杜拜] 阿联酉首领塔 54 355 2000

12: [高雄] 东帝士大厦 85 347 1997

13: [芝加哥] 阿摩珂大厦 83 346 1973

14: [香港] 中环中心 79 346 1998

15: [芝加哥] 约翰-汉考克大厦 100 344 1969

16: [杜拜] 阿拉伯塔酒店 60 321 1999

17 :[纽约] 克莱斯勒大厦 77 319 1930

18: [亚特兰大] 国家银行广场大厦 55 312 1992

19: [洛杉矶] 第一洲际世界中心 75 310 1990

20: [吉隆坡] 电信大厦 55 310 2001

Tuesday, October 02, 2007

Travel to Genting Malaysia

Took travel bus 707, we got Genting Malaysia, which lay on a hill. Enjoyed ourselves above clouds.
 
3 star hotel but the environment is not that good. we even dont have toothbrush to use.
 
theme park is a good place to enjoy...  called "fun at the peak"
 
and also, genting is famous for the casino, people above 21 years old can enter casino room.

Monday, October 01, 2007

Back from Malaysia

For the visa reason, i have to go to Malaysia for fewdays and back to singapore in order to stay here ligally.
I went to Genting together with girlfriend on 20, Sept.. We had nice days at Genting and Kula Lumpur.
 
Genting is a visit and play place on a hill. We enjoyed a life above cloud :). Oh, i must say that , there is a gambling place there ...
 
Another day we went to Kula Lumpur, and went accross streets together with citizens.