m********0 发帖数: 2717 | 1 小青蛙一只,轻拍。
最近比较focus on money management,尤其是position sizing。
这里绝大部分都是跟我一样的beginner,基本上很看重入点,什么时候买最好。我转到
期货和外汇以后在这上面下了挺大的功夫,并没有达到原先预想的效果(包括SVM,
Linear,Non-Linear,Wavelets,HONN, Kalman Filter,这些可能以后会有一定的突
破,但现有的概念和理论,实践起来的效果并不会提高多少,甚至没有提高,所以投入
产出比不佳),加上我一年多几千次浅显的交易经验给我的感觉是,入点远没有想象的
重要。50%的正确率够不够?我感觉远大于盈利的需求。
下面的blog有介绍expectancy的重要性,前两天我也引用了他的Risk Adjusted Profit
的概念,把纯profit 算作profit realized - stop loss level(the risk you took,
in fact,
should be more than stop level as it's dangerous to use stp limit order)。
http://www.tradermike.net/2004/05/trading_101_expectancy/
一两句话稍微解释一下,你每次盈利1000块就止赢,亏损2000块才止损(或者从不止损
或者被动止损),那66%的胜率也不能保证你盈利。反之,每次2000块止赢,1000块止
损,大于33%的胜率就可以盈利了。
我也假设过,即便是纯粹的random walk,合适的exit plan也是能够盈利的(这时候
entry plan就完全没有意义了,因为只有50%的chance)。所以最近没有投入在尝试比
较好的可以量化的高概率的模式识别,而把精力都放在money management。
在俱乐部转发了一个投票,不过没有人投。
http://www.earnforex.com/blog/2011/10/what-is-best-forex-positi
从这个网站的小样本统计看,大部分人还是投了
Risk-based position sizing (42%, 8 Votes)
这说明这种每天设置整个Equity和每笔交易的损失上限的主意还很流行。这是最基本的
常识,如果你想在市场里生存得久一点。
第二是
Fixed position size (26%, 5 Votes)
比较死板,但是最直接的想法。
突然发现我的概念也有点模糊了,sizing和money management也有点区别。对于fixed
size的这种办法,我以前看过一些grid trading的方法,无非就是手动trailing,每笔
交易,不加仓不减仓,止损如果为D,价格每上升D,手动改变止损也上升D,这有点
discrete trailing的意思。和continuous trailing order比较哪个更好,我没有想法
。不过这种手动grid trailing我试过,盈利和止损显得无比清晰,整数比,在哪个区
间很清晰明了。而且压力大大减少。
原始的Grid就是一笔止“损”了就清掉所有size。我在这个基础上试了很多别的优化办
法,例如盈利到2倍止损相同的量,假设为2d,就把一半的仓位止赢,剩下的到4d的利
润再出一半,最后1/4 “free run”或者trailing。
用EUR/USD Backtest了一下非常简单的momentum indicator,稍微tune一下一个月大概
最多能到300%的盈利。但是out of sample效果不好。如何优化每次止赢的比例,和止
损大小。很容易在range market的时候被来回止损。不过这是意料之中的,困难的是每
次的range period的幅度不一样。filter out一些会无法filter out另外一些。(ATR
? 我觉得true range这种东西也没有预测的价值)。
在另外一些论坛上也看到别人说grid method开始用的很好,很喜人,时间久了总会爆
几次仓。其实及时止损,让盈利奔跑说的轻松,仔细想想是两难的事情。如果谁能同时
做到缩紧止损还加大盈利目标,那我要好好膜拜一下。
Anyway,最近还看到一些人称做Antigrid的方法,这就是Pyramiding的范例,浮盈加仓
,而不是止赢,损了就损了,而不是加仓。我就不多介绍了,7zip的主页上有
https://sites.google.com/site/prof7bit/snowball
这个有点reverse martingale的意思。在trending market应该比较有前途。这个人自
己写了一个半自动交易的脚本,有点辅助的意思,就是手动下单以后,自动止损止赢,
加仓(也有手动的功能)。不是很好backtest,但是作者自己有个认证的live account
,好像一个月是翻了一翻
http://prof7bit.mt4stats.com/analyses
我以这个主意,写了一个全自动的脚本。有兴趣可以自己试试。全部是trailing stop
to enter,第一单filled了以后,grid 加仓,grid stop level up。如果tryLong没有
filled出现tryShort信号,会删除tryLong的pending order,反向尝试。美国的forex
broker被规定了不能再有hedge了,不能有双向的pending order了。
TryLong和TryShort函数根据自己的需求改,我只是随便填了一个。
//+------------------------------------------------------------------+
//| Antigrid.mq4 |
//| Copyright ?2020, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
//extern double TakeProfit = 0.0;
extern double Lots = 1.0;
extern double TrailingStop = 0.0;
extern double StopLoss = 100.0;
extern double StopSpread = 50.0;
//extern double StopLoss2 = 70.0;
extern double ErgLongLevel=-50;
extern double ErgShortLevel=50;
double MATrendPeriod=20;
double Slippage = 3;
//extern int ErgPeriod = 8;
//extern double first_t = 2.0;
//extern double second_t = 4.0;
//extern double SetBreakEven = 5.0;
extern double LeastErgMom = 0.0;
extern double ErgThreshold = 20.0;
extern bool ecnBroker = true;
int total = 0;
//bool noMaFilter = True;
//bool FirstTarget = False;
//bool SecondTarget = False;
//bool SetBreakEven = False;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
/*
int LongOneUnit(double StopLevel){
int ticket;
double myPrice = MarketInfo(Symbol(), MODE_ASK);
double myStopLoss = 0;
if (StopLoss > 0) myStopLoss = myPrice - StopLoss * Point ;
//if (myStopLoss != 0) ValidStopLoss(OP_SELL, myStopLoss);
//double myTakeProfit = myPrice + TakeProfit * Point;
// Normalize all price / stoploss / takeprofit to the proper # of
digits.
double digits = MarketInfo(Symbol(), MODE_DIGITS);
if (digits > 0)
{
myPrice = NormalizeDouble(myPrice, digits);
myStopLoss = NormalizeDouble(myStopLoss, digits);
//myTakeProfit = NormalizeDouble(myTakeProfit, digits);
//myTakeProfit = 0.0;
StopLevel = NormalizeDouble(StopLevel, digits);
}
if (ecnBroker)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, myPrice, Slippage, 0, 0,
"Erg Sell", 16384, 0, Red);
if(ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
{
OrderModify(ticket,OrderOpenPrice(),StopLevel, 0.0,0,CLR_NONE
);
Print("Sell order opened : " , OrderOpenPrice());
}
}
else Print("Error opening Sell order : ", GetLastError());
}
else
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, myPrice, Slippage,
StopLevel, 0.0, "Erg Sell", 16384, 0, Red);
if(ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
{
Print("Sell order opened : " , OrderOpenPrice());
}
}
else Print("Error opening Sell order : ", GetLastError());
}
return(0);
}
int ShortOneUnit(double StopLevel)
{
int ticket;
double myPrice = MarketInfo(Symbol(), MODE_BID);
double myStopLoss = 0;
if (StopLoss > 0 ) myStopLoss = myPrice + StopLoss * Point ;
//if (myStopLoss != 0) ValidStopLoss(OP_SELL, myStopLoss);
//double myTakeProfit = myPrice - TakeProfit * Point;
// Normalize all price / stoploss / takeprofit to the proper # of digits.
double digits = MarketInfo(Symbol(), MODE_DIGITS);
if (digits > 0)
{
myPrice = NormalizeDouble(myPrice, digits);
myStopLoss = NormalizeDouble(myStopLoss, digits);
StopLevel = NormalizeDouble(StopLevel, digits);
//myTakeProfit = NormalizeDouble(myTakeProfit, digits);
//myTakeProfit = 0.0;
}
if (ecnBroker)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, myPrice, Slippage, 0
, 0, "Erg Sell", 16384, 0, Red);
if(ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
{
OrderModify(ticket,OrderOpenPrice(),StopLevel, 0.0,0,CLR_
NONE);
Print("Sell order opened : " , OrderOpenPrice());
}
}
else Print("Error opening Sell order : ", GetLastError());
}
else
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, myPrice, Slippage,
StopLevel, 0.0, "Erg Sell", 16384, 0, Red);
if(ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
{
Print("Sell order opened : " , OrderOpenPrice());
}
}
else Print("Error opening Sell order : ", GetLastError());
}
return(0);
}
*/
int StopLongOneUnit(double StoptoEnterLevel){
int ticket;
double myStopLoss = 0;
if (StopLoss > 0) myStopLoss = StoptoEnterLevel-StopLoss*Point ;
//if (myStopLoss != 0) ValidStopLoss(OP_SELL, myStopLoss);
//double myTakeProfit = myPrice + TakeProfit * Point;
// Normalize all price / stoploss / takeprofit to the proper # of
digits.
double digits = MarketInfo(Symbol(), MODE_DIGITS);
if (digits > 0)
{
StoptoEnterLevel = NormalizeDouble(StoptoEnterLevel, digits);
myStopLoss = NormalizeDouble(myStopLoss, digits);
//myTakeProfit = NormalizeDouble(myTakeProfit, digits);
//myTakeProfit = 0.0;
}
if (ecnBroker)
{
//ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, myStoptoEnter,
Slippage, 0, 0, "Erg Sell", 16384, CurTime()+5*60, Red);
ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, StoptoEnterLevel,
Slippage, 0.0, 0.0, "Erg Sell", 16384, 0, Red);
if(ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
{
OrderModify(ticket,OrderOpenPrice(),myStopLoss, 0.0,0,CLR_
NONE);
Print("Buy order opened : " , OrderOpenPrice());
}
}
else Print("Error opening Buy order with ECN broker : ",
GetLastError());
}
else
{
//ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, myStoptoEnter,
Slippage, myStopLoss, 0.0, "Erg Sell", 16384, CurTime()+5*60, Red);
ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, StoptoEnterLevel,
Slippage, myStopLoss, 0.0, "Erg Sell", 16384, 0, Red);
if(ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
{
Print("Buy order opened : " , OrderOpenPrice());
}
}
else Print("Error opening Buy order : ", GetLastError());
}
return(0);
}
int StopShortOneUnit(double StoptoEnterLevel)
{
int ticket;
double myStopLoss = 0;
if (StopLoss > 0 ) myStopLoss = StoptoEnterLevel + StopLoss*Point ;
//if (myStopLoss != 0) ValidStopLoss(OP_SELL, myStopLoss);
//double myTakeProfit = myPrice - TakeProfit * Point;
// Normalize all price / stoploss / takeprofit to the proper # of digits.
double digits = MarketInfo(Symbol(), MODE_DIGITS);
if (digits > 0)
{
StoptoEnterLevel = NormalizeDouble(StoptoEnterLevel, digits);
myStopLoss = NormalizeDouble(myStopLoss, digits);
//myTakeProfit = NormalizeDouble(myTakeProfit, digits);
//myTakeProfit = 0.0;
}
if (ecnBroker)
{
//ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, myStoptoEnter,
Slippage, 0, 0, "Erg Sell", 16384, CurTime()+5*60, Red);
ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, StoptoEnterLevel
, Slippage, 0, 0, "Erg Sell", 16384, 0, Red);
if(ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
{
OrderModify(ticket,OrderOpenPrice(),myStopLoss, 0.0,0,CLR_
NONE);
Print("Sell order opened : " , OrderOpenPrice());
}
}
else Print("Error opening Sell order with ECN broker : ",
GetLastError());
}
else
{
//ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, myStoptoEnter,
Slippage, myStopLoss, 0.0, "Erg Sell", 16384, CurTime()+5*60, Red);
ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, StoptoEnterLevel
, Slippage, myStopLoss, 0.0, "Erg Sell", 16384, 0, Red);
if(ticket > 0)
{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
{
Print("Sell order opened : " , OrderOpenPrice());
}
}
else Print("Error opening Sell order : ", GetLastError());
}
return(0);
}
int hour = 0;
int closeAllOrders(){
for(int cnt=OrdersTotal()-1; cnt>=0 ; cnt--){
//RefreshRates();
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_SELL){
if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage+MarketInfo
(Symbol(),MODE_SPREAD), Black)){
Print("Sell order close error");
}
}
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY){
if(OrderClose(OrderTicket(), OrderLots(), Ask, Slippage+MarketInfo(
Symbol(),MODE_SPREAD), Black)){
Print("Buy order close error");
}
}
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && (OrderType()==OP_
BUYSTOP || OrderType()==OP_SELLSTOP)){
if(OrderDelete(OrderTicket(), CLR_NONE)){
Print("Pending order delete error");
}
}
Print("Strange case");
}
return(0);
}
bool noTradeTime(){
return (DayOfWeek()==5 && Hour()>=16);
}
bool tryLong(){
return(High[0] > High[1] && Low[0] >= Low[1] && Close[0] > Open[0]);
}
bool tryShort(){
return(High[0] <= High[1] && Low[0] < Low[1] && Close[0] < Open[0]);
}
int start()
{
double ErgCurrent, ErgPrevious, SigCurrent, SigPrevious;
double MaCurrent, MaPrevious;
//double DTISigFilter;
double myStopLoss = 0, myTakeProfit = 0, myPrice = 0;
double CurrentPrice = 0.0;
int cnt, ticket, digits;
//cancel all pending orders if some orders exited, there should be only
one order left at this time
//close all orders on friday 16:00 pm
if(noTradeTime() && OrdersTotal()>0){
Print("Attempted to close all orders");
closeAllOrders();
return(0);
}
if(!noTradeTime()){
if(total > OrdersTotal() && OrdersTotal()==1){
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
OrderDelete(OrderTicket(), CLR_NONE);
}
total=OrdersTotal();
if(total<1){
if(AccountFreeMargin()<(1*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// check for long position (BUY) possibility
//if(ErgCurrent>SigCurrent && ErgPrevious<=SigPrevious){
if(tryLong()){
StopLongOneUnit(Ask+Point*StopSpread);
return (0);
}
// check for short position (SELL) possibility
if(tryShort()){
//if(true){
StopShortOneUnit(Bid-Point*StopSpread);
return(0);
}
}
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
// can only have one side open, if there is long order pending, it won
't open any short order
// have open orders
// have only one order pending
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP){
if(OrderType()==OP_BUYSTOP){
CurrentPrice = Bid;
if(OrderOpenPrice()-CurrentPrice>StopSpread*Point && OrderSymbol
()==Symbol()){
OrderModify(OrderTicket(),CurrentPrice+StopSpread*Point,
CurrentPrice+StopSpread*Point-StopLoss*Point,0.0,0,Green);
}
//still pending and signal reversed
if(tryShort()){
OrderDelete(OrderTicket(), CLR_NONE);
}
}
if(OrderType()==OP_SELLSTOP){
CurrentPrice = Ask;
if(CurrentPrice-OrderOpenPrice()>StopSpread*Point && OrderSymbol
()==Symbol()){
OrderModify(OrderTicket(),CurrentPrice-StopSpread*Point,
CurrentPrice-StopSpread*Point+StopLoss*Point,0.0,0,Green);
}
//still pending and signal reversed
if(tryLong()){
OrderDelete(OrderTicket(), CLR_NONE);
}
}
return(0);
}
// at least one order get filled
//order select is sorted by order ticket number which will increment
only
//OrderSelect(total-1, SELECT_BY_POS, MODE_TRADES);
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
// can only have one side open, if there is long order pending, it won
't open any short order
// have open orders
// have only one order pending
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP){
if(OrderType()==OP_BUYSTOP){
CurrentPrice = Bid;
if(OrderOpenPrice()-CurrentPrice>StopSpread*Point && OrderSymbol
()==Symbol()){
OrderModify(OrderTicket(),CurrentPrice+StopSpread*Point,
CurrentPrice+StopSpread*Point-StopLoss*Point,0.0,0,Green);
}
}
if(OrderType()==OP_SELLSTOP){
CurrentPrice = Ask;
if(CurrentPrice-OrderOpenPrice()>StopSpread*Point && OrderSymbol
()==Symbol()){
OrderModify(OrderTicket(),CurrentPrice-StopSpread*Point,
CurrentPrice-StopSpread*Point+StopLoss*Point,0.0,0,Green);
}
}
return(0);
}
//open one more pending order the moment last one in the series gets
filled
OrderSelect(total-1, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY){
StopLongOneUnit(OrderOpenPrice()+StopLoss*Point);
return(0);
}
if(OrderType()==OP_SELL){
StopShortOneUnit(OrderOpenPrice()-StopLoss*Point);
return(0);
}
// can only have one side open, if there is long order pending, it won
't open any short order
// have open orders
// have only one order pending
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY){
CurrentPrice = Bid;
if(CurrentPrice-OrderStopLoss()>StopLoss*Point && OrderSymbol()==
Symbol()){
for(cnt=0;cnt
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY){
//OrderModify(OrderTicket(), CurrentPrice+StopSpread*Point
, CurrentPrice+StopSpread*Point-StopLoss*Point ,0.0, 0, Green);
//}
OrderModify(OrderTicket(), OrderOpenPrice(), CurrentPrice-
StopLoss*Point ,0.0, 0, Green);
}
}
}
}
if(OrderType()==OP_SELL){
CurrentPrice = Ask;
if(OrderStopLoss()-CurrentPrice>StopLoss*Point && OrderSymbol()==
Symbol()){
for(cnt=0;cnt
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_SELL){
//OrderModify(OrderTicket(),CurrentPrice-StopSpread*Point,
CurrentPrice-StopSpread*Point+StopLoss*Point,0.0,0,Green);
//}
OrderModify(OrderTicket(), OrderOpenPrice(), CurrentPrice+
StopLoss*Point ,0.0, 0, Green);
}
}
}
}
}
return(0);
}
暂时停止对出点的尝试,思想有点枯竭了。适合这种position sizing的入点也重要,
作为青蛙,只能孜孜不倦了。 | m********0 发帖数: 2717 | 2 类似于图上那样,但不是完全一致(图上的跟我想的不一样,有bug,已经修改了)。
理想的情况是没有那么多whipsaw trades,只有图上中间的那部分。
线性止损和线性止赢,变成了线性止损,quadratic止赢。问题是等距离的grid,
好像要trigger第四次加仓以后才能超过grid trading,体现优势。
Profit
took,
【在 m********0 的大作中提到】 : 小青蛙一只,轻拍。 : 最近比较focus on money management,尤其是position sizing。 : 这里绝大部分都是跟我一样的beginner,基本上很看重入点,什么时候买最好。我转到 : 期货和外汇以后在这上面下了挺大的功夫,并没有达到原先预想的效果(包括SVM, : Linear,Non-Linear,Wavelets,HONN, Kalman Filter,这些可能以后会有一定的突 : 破,但现有的概念和理论,实践起来的效果并不会提高多少,甚至没有提高,所以投入 : 产出比不佳),加上我一年多几千次浅显的交易经验给我的感觉是,入点远没有想象的 : 重要。50%的正确率够不够?我感觉远大于盈利的需求。 : 下面的blog有介绍expectancy的重要性,前两天我也引用了他的Risk Adjusted Profit : 的概念,把纯profit 算作profit realized - stop loss level(the risk you took,
| P*B 发帖数: 2876 | | z********r 发帖数: 179 | | t***2 发帖数: 209 | 5 顶一下。从蝌蚪到青蛙的进化过程中,最重要的一个转变是,认识到money management
, psychological effect比知道什么时候买股票重要多了。
另外,楼主发贴可不可以不要paste那么多code呀,没有人会去看那些code的
Profit
took,
【在 m********0 的大作中提到】 : 小青蛙一只,轻拍。 : 最近比较focus on money management,尤其是position sizing。 : 这里绝大部分都是跟我一样的beginner,基本上很看重入点,什么时候买最好。我转到 : 期货和外汇以后在这上面下了挺大的功夫,并没有达到原先预想的效果(包括SVM, : Linear,Non-Linear,Wavelets,HONN, Kalman Filter,这些可能以后会有一定的突 : 破,但现有的概念和理论,实践起来的效果并不会提高多少,甚至没有提高,所以投入 : 产出比不佳),加上我一年多几千次浅显的交易经验给我的感觉是,入点远没有想象的 : 重要。50%的正确率够不够?我感觉远大于盈利的需求。 : 下面的blog有介绍expectancy的重要性,前两天我也引用了他的Risk Adjusted Profit : 的概念,把纯profit 算作profit realized - stop loss level(the risk you took,
| G*******m 发帖数: 16326 | | G*******m 发帖数: 16326 | 7 一招就可以了。
trending day,中午有一跌,收盘之前有一跌。
抓住了也是不少哦。 | j*****h 发帖数: 3292 | 8 大姐, 你看懂了么有啊?
【在 G*******m 的大作中提到】 : 一招就可以了。 : trending day,中午有一跌,收盘之前有一跌。 : 抓住了也是不少哦。
| j****0 发帖数: 799 | | j****0 发帖数: 799 | | | | o**y 发帖数: 3065 | 11 楼主啊,我以前就发觉你是外汇高手,进来拜一下! | G*******m 发帖数: 16326 | 12 知道英语,但是确实没有看明白。
【在 j*****h 的大作中提到】 : 大姐, 你看懂了么有啊?
| G*******m 发帖数: 16326 | | S********t 发帖数: 1600 | | j*****h 发帖数: 3292 | 15 顶,一通不通的蝌蚪来顶
记得有个大牛说过(不是股版的),多数人觉得何时买要比买什么重要的多 (从股版的验
证就是不管什么烂股,见反弹就跳)
楼主的意思是:怎么买比何时买还要重要
可能大家的time frame 不同吧,你是从微观到宏观了
理解了, 楼主应该完全是trader's approach
又理解了,楼主做FX,理论上就是random walk,不用太多想买什么了 | G*******m 发帖数: 16326 | 16 这些话我一直在说,而且说了无数遍了。
难道你们都没有印象?
对牛弹琴了,都?
【在 j*****h 的大作中提到】 : 顶,一通不通的蝌蚪来顶 : 记得有个大牛说过(不是股版的),多数人觉得何时买要比买什么重要的多 (从股版的验 : 证就是不管什么烂股,见反弹就跳) : 楼主的意思是:怎么买比何时买还要重要 : 可能大家的time frame 不同吧,你是从微观到宏观了 : 理解了, 楼主应该完全是trader's approach : 又理解了,楼主做FX,理论上就是random walk,不用太多想买什么了
| j*****h 发帖数: 3292 | 17 真得没注意过,可能大姐平时精华太多,一时漏了
罪过罪过
【在 G*******m 的大作中提到】 : 这些话我一直在说,而且说了无数遍了。 : 难道你们都没有印象? : 对牛弹琴了,都?
| b******u 发帖数: 3215 | 18 forex单向收手续费,用这种方法有可能赚钱,
做股票我觉得够呛,手续费会吃掉90%以上都不止。 | b******u 发帖数: 3215 | 19 逻辑非常混乱,
一两句话稍微解释一下,你每次盈利1000块就止赢,亏损2000块才止损(或者从不止损
或者被动止损),那66%的胜率也不能保证你盈利。反之,每次2000块止赢,1000块止
损,大于33%的胜率就可以盈利了。
这句称述内部逻辑太混乱了。打个比方,在一个下降的趋势中,你止赢执行的可能行为
0。也就是说你suppose市场完全是随机的,事实上并不是这样的。 | j*****h 发帖数: 3292 | 20 大牛:未冕大牛有没有给你发悄悄话?
【在 b******u 的大作中提到】 : 逻辑非常混乱, : 一两句话稍微解释一下,你每次盈利1000块就止赢,亏损2000块才止损(或者从不止损 : 或者被动止损),那66%的胜率也不能保证你盈利。反之,每次2000块止赢,1000块止 : 损,大于33%的胜率就可以盈利了。 : 这句称述内部逻辑太混乱了。打个比方,在一个下降的趋势中,你止赢执行的可能行为 : 0。也就是说你suppose市场完全是随机的,事实上并不是这样的。
| | | t**e 发帖数: 2379 | 21 顶。有见地。
Profit
took,
【在 m********0 的大作中提到】 : 小青蛙一只,轻拍。 : 最近比较focus on money management,尤其是position sizing。 : 这里绝大部分都是跟我一样的beginner,基本上很看重入点,什么时候买最好。我转到 : 期货和外汇以后在这上面下了挺大的功夫,并没有达到原先预想的效果(包括SVM, : Linear,Non-Linear,Wavelets,HONN, Kalman Filter,这些可能以后会有一定的突 : 破,但现有的概念和理论,实践起来的效果并不会提高多少,甚至没有提高,所以投入 : 产出比不佳),加上我一年多几千次浅显的交易经验给我的感觉是,入点远没有想象的 : 重要。50%的正确率够不够?我感觉远大于盈利的需求。 : 下面的blog有介绍expectancy的重要性,前两天我也引用了他的Risk Adjusted Profit : 的概念,把纯profit 算作profit realized - stop loss level(the risk you took,
| b******u 发帖数: 3215 | 22 未冕股神不屑理我等蝌蚪
【在 j*****h 的大作中提到】 : 大牛:未冕大牛有没有给你发悄悄话?
| v*****k 发帖数: 7798 | 23 re.最牛的走势:拉起横盘等两点lol
【在 G*******m 的大作中提到】 : 一招就可以了。 : trending day,中午有一跌,收盘之前有一跌。 : 抓住了也是不少哦。
| j*****h 发帖数: 3292 | 24 哦,他肯定在找砖头,要不自已在撞墙
【在 b******u 的大作中提到】 : 未冕股神不屑理我等蝌蚪
| g*****u 发帖数: 14294 | 25 内容很丰富。鼓掌!
以我一己的经验,操作中遇到自己难以驾驭的杠杆,便会开始关注到money management
/position sizing。降低了杠杆,时间框架变了,入点自然就开始变得不那么重要了。
Profit
took,
【在 m********0 的大作中提到】 : 小青蛙一只,轻拍。 : 最近比较focus on money management,尤其是position sizing。 : 这里绝大部分都是跟我一样的beginner,基本上很看重入点,什么时候买最好。我转到 : 期货和外汇以后在这上面下了挺大的功夫,并没有达到原先预想的效果(包括SVM, : Linear,Non-Linear,Wavelets,HONN, Kalman Filter,这些可能以后会有一定的突 : 破,但现有的概念和理论,实践起来的效果并不会提高多少,甚至没有提高,所以投入 : 产出比不佳),加上我一年多几千次浅显的交易经验给我的感觉是,入点远没有想象的 : 重要。50%的正确率够不够?我感觉远大于盈利的需求。 : 下面的blog有介绍expectancy的重要性,前两天我也引用了他的Risk Adjusted Profit : 的概念,把纯profit 算作profit realized - stop loss level(the risk you took,
| u********e 发帖数: 4950 | 26 好贴
实际上, 你没说出的是"在入点风险都是一样的情况下"如何position sizing.
低风险投资和高风险投资本身是两个截然不同的概念,不能放在一起来比较的.
在"在入点风险都是一样的情况下"肯定是fixed size
至于"profit taking" versus "stop loss", 这已经不是"position sizing" 的issue
了.
呵呵
Profit
took,
【在 m********0 的大作中提到】 : 小青蛙一只,轻拍。 : 最近比较focus on money management,尤其是position sizing。 : 这里绝大部分都是跟我一样的beginner,基本上很看重入点,什么时候买最好。我转到 : 期货和外汇以后在这上面下了挺大的功夫,并没有达到原先预想的效果(包括SVM, : Linear,Non-Linear,Wavelets,HONN, Kalman Filter,这些可能以后会有一定的突 : 破,但现有的概念和理论,实践起来的效果并不会提高多少,甚至没有提高,所以投入 : 产出比不佳),加上我一年多几千次浅显的交易经验给我的感觉是,入点远没有想象的 : 重要。50%的正确率够不够?我感觉远大于盈利的需求。 : 下面的blog有介绍expectancy的重要性,前两天我也引用了他的Risk Adjusted Profit : 的概念,把纯profit 算作profit realized - stop loss level(the risk you took,
| g********5 发帖数: 10335 | 27 哈哈 学习
Profit
took,
【在 m********0 的大作中提到】 : 小青蛙一只,轻拍。 : 最近比较focus on money management,尤其是position sizing。 : 这里绝大部分都是跟我一样的beginner,基本上很看重入点,什么时候买最好。我转到 : 期货和外汇以后在这上面下了挺大的功夫,并没有达到原先预想的效果(包括SVM, : Linear,Non-Linear,Wavelets,HONN, Kalman Filter,这些可能以后会有一定的突 : 破,但现有的概念和理论,实践起来的效果并不会提高多少,甚至没有提高,所以投入 : 产出比不佳),加上我一年多几千次浅显的交易经验给我的感觉是,入点远没有想象的 : 重要。50%的正确率够不够?我感觉远大于盈利的需求。 : 下面的blog有介绍expectancy的重要性,前两天我也引用了他的Risk Adjusted Profit : 的概念,把纯profit 算作profit realized - stop loss level(the risk you took,
| m********0 发帖数: 2717 | 28 partially disagree.
I don't think fixed size is optimal when entry risk is the same.
I am not even very clear what you meant by "entry risk is the same"
of course, different position sizing methods fit different strategies and
instruments. but tp/sl ratio is close related to your choice.But which one
is optimal is instrument dependent.
these concepts are closely related and I did jump between them.
Just some random thoughts, you expect concrete logic and structure
like a textbook which is too much for me.
issue
【在 u********e 的大作中提到】 : 好贴 : 实际上, 你没说出的是"在入点风险都是一样的情况下"如何position sizing. : 低风险投资和高风险投资本身是两个截然不同的概念,不能放在一起来比较的. : 在"在入点风险都是一样的情况下"肯定是fixed size : 至于"profit taking" versus "stop loss", 这已经不是"position sizing" 的issue : 了. : 呵呵 : : Profit : took,
|
|