本文主要是介绍cce2_空头回补cover_Takuri line_Inverted Hammer_Hanging Man_shooting star_double bottom_double top_Umbrel,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Umbrella Lines:Hanging Man and Hammer
Like the previously mentioned candle lines, the Umbrella lines have strong reversal implications伞线具有强烈的反转含义. There is strong similarity between the Dragonfly Doji and this candle line 蜻蜓十字星与这条蜡烛线有很强的相似性. Two of the Umbrella lines are called the Hammer and Hanging Man其中两条伞线被称为锤子线和上吊线, depending upon their location in the trend of the market.
Pattern Description and Criteria模式描述和标准
The hanging man and hammer are single-line candlestick patterns. They both include the following criteria:
- • A small real body forms at, or very near, the upper end (the high) of the candlestick’s range.
- • The color of the small real body is not significant; it can be either black or white.
- • The long lower shadow is typically two or more times the length of the real body.
- The long lower shadow indicates that the stock declined sharply during the trading session. In fact, at the time price was at the low, the candle had a long bearish real body with a shaven bottom. (Recall the discussion at the end of Chapter 2 about how the candlestick line changes shape throughout the session.) The bulls were able to grab control from the bears and push price back up to close near the high by the end of the session.
FIGURE 2.19 Long lower shadow was previously a bearish candle
If, at the close of market, a daily candlestick line shows a small real body near the high of the session with a long lower shadow,
at some point during the session it had a long bearish real body.
Buyers stepped in, putting upward pressure on price, causing the once bearish real body to morph/ mɔːrf / into转变为:逐渐或突然地从一种形态或状态转变为另一种形态或状态 a long lower shadow (see Figure 2.19).
FIGURE 2.18 Daily bar changes shape throughout the session
Figure 2.18 depicts the change in shape of the daily candlestick line as the bulls and bears jockeyed/ˈdʒɑːki /操控 for control throughout the session.
When price was run up during the first 90 minutes, at the high of the session the daily bar would have been a long white candle with a shaven head and bottom.
As the stock started to sell off, an upper shadow began to emerge.
At the point where the bears had pushed price back to near the low of the session, the daily bar would have had a long upper shadow and a small white real body.
As the bulls took over again, the real body became larger and the upper shadow became shorter.
By the close of the session, all that remained of that long upper shadow from earlier in the session was its small tip小尖头 between the close and the high.
FIGURE 2.20 Spinning top陀螺 had both a longer bearish and bullish real body during the session
If, at the close of market, the daily candlestick line has both an upper and a lower shadow and a small real body,
at some time during the session the bar was more bullish and more bearish but closed near the middle of the range (see Figure 2.20).
By the end of the session, the candlestick line formed a spinning top.
- • There should be no upper shadow (Figure 3.1) or a very small one (Figure 3.2). Price must close near the high of the range.
The smaller the real body, the shorter the upper shadow, and the longer the lower shadow, the more consequential the pattern实体越小,上影线越短,下影线越长,对形态来说越重要
Remember, an umbrella day occurs when the body is at the upper end of the day’s range and the lower shadow is considerably longer than the body. One must also take into consideration the length of the upper shadow, if one exists. The body and lower shadow relationship is defined as a percentage of the body length to lower shadow length.
- Umbrella Body / Lower Shadow (0 to 100%)
If this value is set to 50, then the body cannot exceed 50% of the size of the lower shadow. In this example, the lower shadow would be at least twice the length of the body. The upper shadow on an umbrella day can be handled in a similar fashion, such as:
- Umbrella Upper Shadow / High to Low Range (0 to 100%)
The upper shadow is related to the entire day’s range. A value of 10 means that the upper shadow is only 10% (or less) of the high-low range. These variables will help identify the Hanging Man(The lower tail of Hanging Man should be two or three times the height of the body) and Hammer(the lower shadow of a Hammer is a minimum of only twice the length of the body) candle patterns. Patterns such as the shooting Star and Inverted Hammer use just the inverse of these settings.
Pattern Flexibility:Takuri line,Hanging Man,shooting star,Inverted Hammer
- A Takuri line has a lower shadow at least three times the length of the body,
- Features that will enhance the signal of a Hammer or Hanging Man pattern are an extra long lower shadow, no upper shadow, very small real body (almost Doji), the preceding sharp trend, and a body color that reflects the opposite sentiment (previous trend). This trait, when used on the Hammer, will change its name to a Takuri line. Takuri lines are generally more bullish than Hammers.
- Downward leading to the start of the candle pattern.
- A small candle body with no upper shadow, or a very small one, and a lower shadow at least three times the height of the body.
- Look for a candle with an exceedingly long lower shadow—at least three times the body height—and a small body perched at the top of the candle烛身较小位于蜡烛顶部的蜡烛. Candle color is irrelevant. I allow a small upper shadow, but it’s a tiny fraction of the total candle height.
- 第二天,收盘于Takuri lines实体上方,确认反转
- whereas the lower shadow of a Hammer is a minimum of only twice the length of the body.
- The lower shadow should be, at a minimum, twice as long as the body, but not more than three times.
- The upper shadow should be no more than 5 to 10 percent of the high-low range.
- The low of the body should be below the trend for a Hammer and above the trend for a Hanging Man.
- The body color of the Hanging Man and the Hammer can add to the significance of the pattern’s predictive ability.
- A Hanging Man with a black body is more bearish than one with a white body.
- Likewise, a Hammer with a white body would be more bullish than one with a black body.
第二天, 收盘价应该高于锤子的实体
- shooting star AND Inverted Hammer
- The long shadow of the shooting star and inverted hammer patterns points in the opposite direction to that of the hanging man and hammer. Thus, they are inverted umbrella lines. The factor that differentiates one pattern from the other is whether it forms after a price advance (a bearish shooting star) or a price decline (a bullish inverted hammer)区分一种形态与另一种形态的因素在于它是在价格上涨(看跌流星)还是价格下跌(看涨倒锤子)之后形成.
第二天,收盘于倒锤子线的实体上方(确认看涨) - Pattern Description and Criteria模式描述和标准
The shooting star and the inverted hammer are single-line candlestick patterns. They both include the following criteria:- • A small real body forms at, or very near, the bottom (the low) of the candlestick’s range.
- • The color of the small body is not significant; it can be either black or white.
• The long upper shadow is typically two or more times the length of the real body.
• There should be no lower shadow (Figure 3.9) or a very small one (Figure 3.10). Price must close near the low of the range.
The long upper shadow indicates that the stock rallied strongly during the trading session. In fact, at the time price was at the high of the session, the candle had a long bullish real body with a shaven top. The bears were then able to force price back down to close near the low by the end of the session.
The smaller the real body, the shorter the lower shadow, and the longer the upper shadow, the more consequential the pattern实体越小,下影线越短,上影线越长,该形态就越重要. - There should be no lower shadow, or at least not more than 5 to 10 percent of the high-low range.
- Pattern Breakdown模式分解
Even though the Inverted Hammer and the Shooting Starare considered as single-day patterns, the previous day must be used to add to the patterns’ successfulness但必须利用前一天的时间来增加这些形态的成功率.- The Inverted Hammer pattern reduces to a long black candle line, which is always viewed as a bearish indication when considered alone (Figure 3-24).
- The Shooting Star射击之星 pattern reduces to a long white candle line, which almost always is considered a bullish line (Figure 3-25).
- Both of these patterns are in direct conflict with their breakdowns. This indicates that further confirmation should always be required before acting on them.
- The long shadow of the shooting star and inverted hammer patterns points in the opposite direction to that of the hanging man and hammer. Thus, they are inverted umbrella lines. The factor that differentiates one pattern from the other is whether it forms after a price advance (a bearish shooting star) or a price decline (a bullish inverted hammer)区分一种形态与另一种形态的因素在于它是在价格上涨(看跌流星)还是价格下跌(看涨倒锤子)之后形成.
Hammer
The hammer is the bullish counterpart of the hanging man. The hammer is a strong reversal signal. It is meaningful whether it forms after a short-term downside move or after a more significant decline.
Although it does not matter if the small real body is black (Figure 3.6) or white (Figure 3.7), a white body indicates that not only did the bulls wrestle/ ˈres(ə)l / control 争夺控制权:为了控制某个事物而进行激烈的竞争或斗争 away from the bears, but they were able to close the session slightly positive但白色实体表明多头不仅从空头手中夺走了控制权,而且能够以小幅积极收盘. However, that does not necessarily mean that a bullish close will result in a higher likelihood of a bottom reversal than a bearish close这并不一定意味着看涨收盘比看跌收盘更有可能导致底部反转. Since the hammer acts as a reversal of the downtrend, you would expect a white hammer to be more bullish and result in better performance than a black one.
Behavior and Rank
- Theoretical: Bullish reversal.
- Actual bull market: Bullish reversal 60% of the time (ranking 26).
- Actual bear market: Bullish reversal 59% of the time (ranking 29).
- Frequency: 36th out of 103.
- Overall performance over time: 65th out of 103.
- Hammer/Dragonfly Doji : Bullish Candlestick Patterns Formulas Table | Personal Criteria Formulas (PCF) | TC2000 Help Site
5 * ABS(C - O) <= H - L AND H - L <= 10 * ABS(O - C)
AND 2 * O >= H + L AND STOC1 >= 50
AND (20 * O >= 19 * H + L OR STOC1 >= 95)
AND 10 * (H - L) >= 8 * (AVGH10 - AVGL10)
AND L = MINL5 AND H > L
Inverted Hammer :
5 * ABS(O - C) <= H - L AND H - L <=10 * ABS(O - C)
AND 2 * (H - O) >= H - L AND 2 * (H - C) >= H - L
AND (2 * (O - L) <= H - L OR 20 * (C - L) <= H - L)
AND 5 * (H - L) >= 4 * (AVGH10 - AVGL10)
AND 2 * O <= H1 + L1 AND STOC1 <= 50
AND L = MINL5 AND H > L
The hammer is a popular candlestick if only for its name. The single candle line appears in a downtrend with a small body and long lower shadow.
- During the trading day, the bears force price much lower,
- but by day’s end, the bulls have managed a recovery by pushing price back up.
Since the hammer acts as a reversal of the downtrend, you would expect a white hammer to be more bullish and result in better performance than a black one. It does, as we will see. Speaking of performance, a ranking of 26 (bull market) as a bullish reversal is very good. The pattern is plentiful, but the overall performance rank is 65. That is disappointing since 1 is best out of 103 candles. It means the pattern is on the far side of “good” when compared to other candles for performance over 10 days.
sell-off 抛售 :
Rapid selling of a stock快速抛售股票 or other trading instrument. Supply overwhelms demand resulting in a decline in value.
long (long position) 多头(多头头寸):
The purchase of a stock or other trading instrument with the expectation that the price will rise.
short (short position)空头(空头头寸)
The sale of a stock or other trading instrument with the expectation that the price will decline.
stop-loss order止损订单
An order placed with a broker to exit an open position退出未平仓头寸 if a stock reaches a certain price. The order is intended to limit the loss an investor takes if the stock moves against him在股票走势对他不利时. Stop-loss orders become market orders when triggered.
退出空头头寸:cover (buy-to-cover)平仓(买入平仓) :
An order placed with a broker to exit a short position退出空头头寸.
Pattern Psychology
The trend has been down when a sharp sell-off occurs当出现大幅抛售时,趋势就会下跌, which, at first, further emboldens/ ɪmˈboʊldən /使有胆量 the bears. However, when the strong intraday reversal transpires/ trænˈspaɪər /发生,出现:指某事或事件发生或出现, and price closes near its high, the remaining bears may be worrying over their positions. The long lower shadow indicates that bulls are stepping into long positions长下影线表明多头正在建立多头头寸. Some traders who have short positions will either cover them补仓 or tighten their stop-loss orders in order to protect the gains achieved during the prior downswing一些持有空头头寸的交易者要么补仓,要么收紧止损单,以保护之前下跌期间获得的收益. If price continues to rise following the hammer pattern, more traders will be forced to cover their short positions更多交易者将被迫回补空头头寸. Since short covering空头回补 equals buying, and bulls will also be buying, it provides fuel for a rally.
It is not necessary to wait for further confirmation before entering a long position based on the hammer’s signal. For traders who feel more comfortable doing so, though, confirmation occurs when price trades above the hammer’s real body, and ideally it should close above it理想情况下,收盘价应该高于锤子的实体.
The market has been in a downtrend, so there is an air of bearishness. The market opens and then sells off sharply. However, the sell-off is abated抛售有所减弱 and the market returns to, or near, its high for the day. The failure of the market to continue the selling reduces the bearish sentiment, and most traders will be uneasy with any bearish positions they might have. If the close is above the open, causing a white body, the situation is even better for the bulls. Confirmation would be a higher open with yet a still higher close on the next trading day确认将是下一个交易日开盘走高但收盘走高.
How to Trade the Hammer Candlestick Pattern
The Hammer Candlestick Pattern: A Trader’s Guide | TrendSpider Learning Center
Trading the Hammer Candlestick pattern involves the following steps:
- First, identify the Hammer: Look for a candlestick with the characteristics described above. This pattern is more significant if it appears after a downward trend.
- Confirmation: Wait for the next period’s candlestick to confirm the reversal. This could be a gap-up or a long bullish candlestick.
- Entry Point: Enter the trade at the opening of the next period after the confirmation candle.
- Stop Loss: Set a stop loss below the lowest point of the Hammer candlestick to protect your capital.
- Profit Target: Set your profit target based on your trading strategy. A common approach is to aim for a price equal to twice the stop loss.
Stock : AWR
import pandas as pdstock_symbol='AWR'
start_date='2006-09-01'
new_start_date=pd.to_datetime('2005-11-16')
new_end_date='20070101'# stock_symbol='tso'
# start_date='2006-05-01'
# new_start_date = pd.to_datetime('20050617')
# new_end_date = '20060703'df = pd.read_csv(stock_symbol + \str(new_start_date.year).zfill(4) + str(new_start_date.month).zfill(2) + str(new_start_date.day).zfill(2) + \'_{}.csv'.format(new_end_date), index_col='Date', parse_dates=['Date'],#dtype={'Price':'np.float64', 'Open':'np.float64', 'High':np.float64, 'Low':np.float64}#dtype={'Vol.':int})
df.rename(columns={'Price':'Close', 'Vol.':'Volume'}, inplace=True)
def value_to_float(x):if type(x) == float or type(x) == int:return xif 'K' in x:if len(x) > 1:return float(x.replace('K', '')) * 1000return 1000.0if 'M' in x:if len(x) > 1:return float(x.replace('M', '')) * 1000000return 1000000.0if 'B' in x:return float(x.replace('B', '')) * 1000000000return 0.0df['Volume'] = df['Volume'].apply(value_to_float)
df['Open_Close_mean']=(df['Open']+df['Close'])/2.
df['Adj Close']=df['Close']########## only for tso stock
df=df[['Open', 'High', 'Low','Close', 'Adj Close','Volume','Open_Close_mean']]######################since caa stock split
if stock_symbol=='CAA':df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]=df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]/5.#####################since AWR stock split
elif stock_symbol=='AWR':df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]=df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]*2#####################since TSO stock split
elif stock_symbol=='tso':df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]=df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]/2df.sort_index(inplace=True) ma_d_c={'5':'blue', '10':'green', '15':'magenta', '20':'black', '50':'purple', '200': 'red'}sma_ema='sma' #'ema'
# Exponential Moving Average
for d in ma_d_c.keys():if sma_ema =='sma': # Simple Moving Averagedf['{}_{}d'.format(sma_ema, d)] = df['Close'].rolling( int(d) ).mean()elif sma_ema == 'ema': # Exponential Moving Averagedf['{}_{}d'.format(sma_ema, d)] = df['Close'].ewm( ignore_na=False, span=int(d), ###min_periods=0,adjust=True).mean()else:passdf=df.loc[start_date:new_end_date]# 'UNTD'
df
判断umbrella还需要附加条件
Date
2006-09-19 Takuri Line
2006-10-16 Hanging Man
2006-10-30 Hanging Man
2006-11-09 Hammer
2006-12-27 Hanging Man,Bearish Harami
Name: umbrella, dtype: object
Figure 40.1 shows a black hammer that appears after a swift downtrend快速下降趋势.
- A white candle precedes this hammer and that’s the first indication that the bears are growing tired.
- The long lower shadow on the hammer means the bulls have pushed back another down day to close near the day’s high,but price still closes lower than on the prior day锤子上的长下影线意味着多头又推回了一天的下跌,收盘价接近当天的高点,但价格仍然低于前一天的收盘价.
- The next two days extend the confusion as small bodies and long lower shadows suggest a base upon which to launch a new attempt higher.
- That happens on the third day after the hammer when a tall white candle pushes price upward. That begins the new trend from downward to sideways with a slight upward bias这开始了从下降到横盘的新趋势,并有轻微的向上偏差。.
Figure 40.1 A hammer acts as a reversal after a severe downtrend.
A hammer has a lower shadow that is between 2 and 3 times the body height, but no longer. The hammer can be white or black. A small nubbin of upper shadow is fine上阴影的小结点就可以了; just don’t let it grow too long. If the body is a doji, then the candle is a dragonfly doji.
stock : 'CAL' or Brown Shoe Co. Inc.
import yfinance as yf# stock_symbol='ups'
# start_date='2001-04-02'
# new_start_date = pd.to_datetime('20010402')# 'ups'# new_start_date.strftime('%Y%m%d') ==> '20010402'
# new_end_date = '2001-08-02' # '2001-08-01' + plus one day # 'ups'# stock_symbol='ups'
# start_date='2002-09-03'
# new_start_date = pd.to_datetime('20011115')# 'ups'
# new_end_date = '2003-01-31' # 'ups'# stock_symbol='oln'
# start_date='2006-08-01'
# new_start_date ='2005-10-14'
# new_end_date='2006-11-01'# stock_symbol='asgn' #
# start_date='2005-11-01'
# new_start_date ='2005-11-01'
# new_end_date='2006-04-01'# stock_symbol='emr' #
# start_date='2006-02-01'
# new_start_date ='2005-04-19'
# new_end_date='2006-05-02'# stock_symbol='GILD' #'nkla'
# start_date='2006-02-01'
# new_start_date='2005-04-19'
# new_end_date='2006-06-02'stock_symbol='CAL'#Brown Shoe Co
start_date='2006-01-01'
new_start_date='2005-03-21'
new_end_date='2006-06-02'df = yf.download( stock_symbol, start=new_start_date, end=new_end_date) df['Open_Close_mean']=(df['Open']+df['Close'])/2.
#df[['Open', 'High', 'Low','Close', 'Open_Close_mean']]######################since GILD stock split
# df.loc[:,
# ['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']
# ]=df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]*4######################since CAL stock split 3:2
df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]=df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]*3/2ma_d_c={'5':'blue', '10':'green', '15':'magenta', '20':'black', '50':'purple', '200': 'red'}sma_ema='sma' #'ema'
# Exponential Moving Average
for d in ma_d_c.keys():if sma_ema =='sma': # Simple Moving Averagedf['{}_{}d'.format(sma_ema, d)] = df['Close'].rolling( int(d) ).mean()elif sma_ema == 'ema': # Exponential Moving Averagedf['{}_{}d'.format(sma_ema, d)] = df['Close'].ewm( ignore_na=False, span=int(d), ###min_periods=0,adjust=True).mean()else:pass# df=df.loc['2001-04-02':new_end_date] # new_end_date = '2001-08-02'
#df=df.loc['2006-08-01':new_end_date] # new_end_date = '2001-08-02'
df=df.loc[start_date:new_end_date]
df
判断umbrella还需要附加条件
Date
2006-02-01 Shooting Star2
2006-02-24 Hanging Man
2006-04-03 Hammer
2006-04-05 Shooting Star2
2006-04-10 Shooting Star1
2006-04-21 Shooting Star1
2006-05-02 Hanging Man
Name: umbrella, dtype: object
Phillip likes the company whose stock appears in Figure 40.2. The stock has been following a trendline connecting the lows at A and B. When he sees the black hammer the day before C, he takes a keen interest. Why?
Price is nearing the trendline extended upward from B to C. Even though the top of the candle has a small upper shadow and one could argue that the downtrend leading to it wasn’t robust, he feels it still qualifies as a hammer尽管蜡烛顶部有一个小的上影线,人们可能会说导致它的下降趋势并不强劲,但他认为它仍然有资格作为锤子线.
After the hammer, he waits for the next close to determine the breakout direction. A white candle closes above the top of the hammer at C, indicating that price is staging an upward breakout白色蜡烛收盘于锤子顶部上方 C 处,表明价格正在向上突破. He buys the stock at the open the next day, receiving a fill at 35.22.
Figure 40.2 Phillip buys the stock after it bounces off support.
Phillip watches the stock gap upward two days later, retrace to the bottom of the tall white candle, and then continue moving up. At E, price forms a bullish engulfing pattern with a lower shadow that pierces the trendline. But since it doesn’t close below the line, he isn’t worried在E处,价格形成看涨吞没形态,下影线刺穿趋势线。 但由于收盘价并未跌破该线,他并不担心.
At F, price does close below the trendline, but Phillip is paralyzed/ˈperəlaɪzd/瘫痪的,不能活动的 and takes no action. Day by day price moves lower until a turn comes价格一天天走低,直到出现转机. Price attempts to pull back to the trendline and almost makes it. The next day, D, he decides to sell and receives a fill at the opening price of 38.65. He has made almost 10% on the trade.
stock : NKE
import yfinance as yf# stock_symbol='ups'
# start_date='2001-04-02'
# new_start_date = pd.to_datetime('20010402')# 'ups'# new_start_date.strftime('%Y%m%d') ==> '20010402'
# new_end_date = '2001-08-02' # '2001-08-01' + plus one day # 'ups'# stock_symbol='ups'
# start_date='2002-09-03'
# new_start_date = pd.to_datetime('20011115')# 'ups'
# new_end_date = '2003-01-31' # 'ups'# stock_symbol='oln'
# start_date='2006-08-01'
# new_start_date ='2005-10-14'
# new_end_date='2006-11-01'# stock_symbol='asgn' #
# start_date='2005-11-01'
# new_start_date ='2005-11-01'
# new_end_date='2006-04-01'# stock_symbol='emr' #
# start_date='2006-02-01'
# new_start_date ='2005-04-19'
# new_end_date='2006-05-02'# stock_symbol='GILD' #'nkla'
# start_date='2006-02-01'
# new_start_date='2005-04-19'
# new_end_date='2006-06-02'# stock_symbol='CAL'#Brown Shoe Co # bws
# start_date='2006-01-01'
# new_start_date='2005-03-21'
# new_end_date='2006-06-02'stock_symbol='NKE'
start_date='2000-01-14'
new_start_date='1999-04-01'
new_end_date='2000-04-18'df = yf.download( stock_symbol, start=new_start_date, end=new_end_date) df['Open_Close_mean']=(df['Open']+df['Close'])/2.
#df[['Open', 'High', 'Low','Close', 'Open_Close_mean']]######################since GILD stock split
if stock_symbol=='GILD':df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]=df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]*4######################since CAL stock split 3:2
elif stock_symbol=='CAL':df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]=df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]*3/2######################since CAL stock split 2:1 and 3 times
# 2007-04-03 2012-12-26 2015-12-24
if stock_symbol=='NKE':df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','Adj Close']]=df.loc[:,['Open', 'High', 'Low','Close', 'Open_Close_mean','
这篇关于cce2_空头回补cover_Takuri line_Inverted Hammer_Hanging Man_shooting star_double bottom_double top_Umbrel的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!