导航:首页 > 源码编译 > 量推四源码

量推四源码

发布时间:2023-03-10 08:09:55

1. 你很会写指标,我急求四度空间指标源码,请附上用法,非常感谢

***
用法主图上有解盘
集成资讯全线主图加四度空间解盘主图(大智慧)
INPUT:M(10,3,250,3);均线:(MA(CLOSE,M) * 1),Colorred,linethick2;早晨之星:=REF(CLOSE,2)/REF(OPEN,2)<0.95 AND REF(OPEN,1)<ref(close,2) and="" abs(ref(open,1)-ref(close,1))="" ref(close,1)1.05 AND CLOSE>REF(CLOSE,2);
黄昏之星:=REF(CLOSE,2)/REF(OPEN,2)>1.03 AND REF(OPEN,1)>REF(CLOSE,2) AND ABS(REF(OPEN,1)-REF(CLOSE,1))/REF(CLOSE,1)<0.02 AND CLOSE/OPEN<0.97 AND CLOSE
长十字:=CLOSE=OPEN AND HIGH/LOW >1.03;
垂死十字:=CLOSE=OPEN AND CLOSE=LOW AND CLOSE<>HIGH;
早晨十字星:=REF(CLOSE,2)/REF(OPEN,2)<0.95 AND REF(OPEN,1)<ref(close,2) and="" ref(open,1)="REF(CLOSE,1)" and
CLOSE/OPEN>1.05 AND CLOSE>REF(CLOSE,2);
黄昏十字星:=REF(CLOSE,2)/REF(OPEN,2)>1.05 AND REF(OPEN,1)>REF(CLOSE,2) AND REF(OPEN,1)=REF(CLOSE,1) AND
CLOSE/OPEN<0.95 AND CLOSE
射击之星:=MIN(OPEN,CLOSE)=LOW AND HIGH-LOW>3*(MAX(OPEN,CLOSE)-LOW) AND CLOSE>MA(CLOSE,5);
倒转锤头:=MIN(OPEN,CLOSE)=LOW AND HIGH-LOW>3*(MAX(OPEN,CLOSE)-LOW) AND CLOSE
锤头:=HIGH = MAX(OPEN,CLOSE) AND HIGH-LOW>3*(HIGH-MIN(OPEN,CLOSE)) AND CLOSE
吊颈:=HIGH = MAX(OPEN,CLOSE) AND HIGH-LOW>3*(HIGH-MIN(OPEN,CLOSE)) AND CLOSE>MA(CLOSE,5);
穿头破脚:=(REF(CLOSE,1)/REF(OPEN,1)>1.03 AND CLOSE/OPEN<0.96 AND CLOSEREF(CLOSE,1))
OR (REF(CLOSE,1)/REF(OPEN,1)<0.97 AND CLOSE/OPEN>1.04 AND CLOSE>REF(OPEN,1) AND OPEN
乌云盖顶:=REF(CLOSE,1)/REF(OPEN,1)>1.03 AND CLOSE/OPEN<0.97 AND OPEN>REF(CLOSE,1) AND CLOSE
曙光初现:=REF(CLOSE,1)/REF(OPEN,1)<0.97 AND CLOSE/OPEN>1.03 AND OPENREF(CLOSE,1);
身怀六甲:=ABS(REF(CLOSE,1)-REF(OPEN,1))/REF(CLOSE,1)>0.04 AND ABS(CLOSE-OPEN)/CLOSE<0.005 AND
MAX(CLOSE,OPEN)MIN(REF(CLOSE,1),REF(OPEN,1));
十字胎:=ABS(REF(CLOSE,1)-REF(OPEN,1))/REF(CLOSE,1)>0.04 AND CLOSE=OPEN AND
CLOSE < MAX(REF(CLOSE,1),REF(OPEN,1)) AND CLOSE > MIN(REF(CLOSE,1),REF(OPEN,1));
平顶:=ABS(HIGH-REF(HIGH,1))/HIGH<0.001;
平底:=(ABS(LOW-REF(LOW,1))/LOW<0.001 AND ABS(REF(LOW,1)-REF(LOW,2))/REF(LOW,1)<=0.001);
大阳烛:=CLOSE/OPEN>1.05 AND HIGH/LOW<close open+0.018;
三个白武士:=REF(CLOSE,2)>REF(OPEN,2) AND REF(CLOSE,1)>REF(OPEN,1) AND CLOSE>OPEN
AND REF(CLOSE,1)>REF(CLOSE,2) AND CLOSE>REF(CLOSE,1);
双飞乌鸦:=REF(CLOSE,1)<ref(open,1) and="" close<open="" close="" open
孕育线:=REF(CLOSE,2)>REF(OPEN,2) AND (REF(CLOSE,2)-REF(OPEN,2))/REF(OPEN,2)>=2/100 AND REF(OPEN,1)>=REF(CLOSE,1) AND
(REF(OPEN,1)-REF(CLOSE,1))/REF(CLOSE,1)<=2/100 AND REF(OPEN,1)<=REF(CLOSE,2) AND REF(CLOSE,1)>=REF(OPEN,2) AND C>=OPEN AND
(CLOSE-OPEN)/OPEN>=2/100 AND CLOSE>=REF(OPEN,1) AND OPEN<=REF(CLOSE,1) AND (MAX(CLOSE,REF(C,2))-MIN(CLOSE,REF(CLOSE,2)))/MIN(CLOSE,REF(CLOSE,2))<=1/100;
多方炮:=REF(CLOSE,2)>REF(OPEN,2) AND REF(CLOSE,1)OPEN;
出水芙蓉:=(OPEN<ema(c,20) or="" open<ema(c,40)="" openMAX(EMA(C,20),MAX(EMA(C,40),EMA(C,60))))
AND (V/MA(V,30)>1.2 AND C/REF(C,1)>1.049);
上升三部曲:=REF(CLOSE,4)/REF(OPEN,4)>1.03 AND REF(CLOSE,3)<ref(open,3) and="" ref(close,2)<ref(open,2)="" ref(close,1)<ref(open,1)="" and
REF(LOW,4)<ref(low,3) and="" ref(low,4)<ref(low,2)="" ref(low,4)REF(HIGH,3) AND REF(HIGH,4)>REF(HIGH,2) AND
REF(HIGH,4)>REF(HIGH,1) AND CLOSE/OPEN>1.03 AND CLOSE>REF(CLOSE,4);
下跌三部曲:= REF(CLOSE,4)/REF(OPEN,4)<0.97 AND REF(CLOSE,3)>REF(OPEN,3) AND REF(CLOSE,2)>REF(OPEN,2) AND REF(CLOSE,1)>REF(OPEN,1) AND REF(LOW,4)<ref(low,3) and
REF(LOW,4)<ref(low,2) and="" ref(low,4)REF(HIGH,3) AND REF(HIGH,4)>REF(HIGH,2) AND REF(HIGH,4)>REF(HIGH,1) AND CLOSE/OPEN<0.97 AND
CLOSE
跳空缺口:=HIGHREF(HIGH,1);
三只乌鸦:=REF(CLOSE,2)<ref(open,2) and="" ref(close,1)<ref(open,1)="" close<open="" ref(close,1)<ref(close,2)="" close
光脚阴线:=LOW=CLOSE AND HIGH<>LOW;
光头阳线:=HIGH=CLOSE AND HIGH<>LOW;
分离:=OPEN=REF(OPEN,1) AND (CLOSE-OPEN)*(REF(CLOSE,1)-REF(OPEN,1))<0;
长下影:=(MIN(CLOSE,OPEN)-LOW)/(HIGH-LOW)>0.667;
长上影:=(HIGH-MAX(CLOSE,OPEN))/(HIGH-LOW)>0.667;
十字星:=CLOSE=OPEN AND HIGH<>LOW;
大阴烛:=OPEN/CLOSE > 1.05 AND HIGH/LOW < OPEN/CLOSE+0.018;
好友反攻:=(REF(CLOSE,1)OPEN AND ABS(CLOSE-REF(CLOSE,1))/CLOSE<0.002)
OR (REF(CLOSE,1)>REF(OPEN,1) AND CLOSE<open and="" abs(close-ref(close,1))="" close
倾盆大雨:=REF(C,1)/REF(O,1)>=1.03 AND OREF(O,1) AND C
解盘:='【解盘】'+
IFs(倾盆大雨,'★倾盆大雨,见顶信号;','')+
IFs(大阴烛,'★大阴烛,后市向淡,发生逆转;','')+
IFs(好友反攻,'★好友反攻,底部反转;','')+
IFs(跳空缺口,'★跳空缺口,注意向上还是向下跳空;','')+
IFs(光脚阴线,'★光脚阴线,下跌信号;','')+
IFs(光头阳线,'★光头阳线,后市看涨;','')+
IFs(三只乌鸦,'★三只乌鸦,可能见顶回落;','')+
IFs(分离,'★分离,注意看涨分离和看跌分离;','')+
IFs(长下影,'★长下影,持续下跌后出现,有可能止跌回升;在升势末期出现,须多加留意;','')+
IFs(长上影,'★长上影,表明行情上档压力沉重,升势受阻;','')+
IFs(下跌三部曲,'★下跌三部曲,下跌信号;','')+
IFs(上升三部曲,'★上升三部曲,上涨信号;','')+
IFs(早晨之星,'★早晨之星,见底回升;','')+
IFs(黄昏之星,'★黄昏之星,见顶回落;','')+
IFs(十字星,'★十字星,有转向意味,注意股价位置在顶部还是底部;','')+
IFs(长十字,'★长十字,注意在顶部还是底部;','')+
IFs(垂死十字,'★垂死十字,下跌信号;','')+
IFs(早晨十字星,'★早晨十字星,上涨信号,见底回升;','')+
IFs(黄昏十字星,'★黄昏十字星,下跌信号,见顶回落;','')+
IFs(射击之星,'★射击之星,可能见顶回落,可靠性低;','')+
IFs(倒转锤头,'★倒转锤头,可能见底回升;','')+
IFs(锤头,'★锤头,可能见底回升,如有量配合,信号强烈;','')+
IFs(吊颈,'★吊颈,上升行情中见顶回落,顶部出现,见顶信号;','')+
IFs(平顶,'★平顶,温和的反转;','')+
IFs(穿头破脚,'★穿头破脚,顶部出现,见顶回落信号;','')+
IFs(乌云盖顶,'★乌云盖顶,见顶回落信号;','')+
IFs(曙光初现,'★曙光初现,后市见底回升;','')+
IFs(身怀六甲,'★身怀六甲,出现在底部,是见底回升信号;出现在顶部,是见顶回落信号;','')+
IFs(十字胎,'★十字胎;','')+
IFs(平底,'★平底,温和的反转;','')+
IFs(大阳烛,'★大阳烛,看涨;','')+
IFs(三个白武士,'★三个白武士,每日收盘价上移,表示可能见底回升;','')+
IFs(双飞乌鸦,'★双飞乌鸦,行情将见顶回落;','')+
IFs(孕育线,'★孕育线,注意股价位置;','')+
IFs(多方炮,'★多方炮,在底部出现有上涨意味,在中间出现有可能是上涨中继,顶部出现是复合见顶信号;','')+
IFs(出水芙蓉,'★出水芙蓉,见底回升;','');
DRAWTEXTABS(0,0,解盘);
MA5:MA(C,5),COLORF00FF0;
MA21:MA(C,21),COLORE66878;
MA30:MA(C,30),COLORYELLOW; MA55:MA(CLOSE,55),LINETHICK1,ColorGREEN;
半年线:MA(C,120),COLOR399C7F,POINTDOT;
年线:MA(C,240),COLOR000999,POINTDOT;X1:=(C+L+H)/3;
X2:=EMA(X1,6);
X3:=EMA(X2,5);
DRAWICON(CROSS(X2,X3),L*0.98,7);
DRAWICON(CROSS(X3,X2),H*1.02,8);
DRAWGBKLAST(C>0,STRIP(RGB(10,10,50),RGB(50,10,10),0));
均价:=(3*C+H+L+O)/6;
VAR1:=(8*均价+7*REF(均价,1)+6*REF(均价,2)+5*REF(均价,3)+
4*REF(均价,4)+3*REF(均价,5)+2*REF(均价,6)+REF(均价,8))/36;
VAR2:=(LLV(VAR1,2)+LLV(VAR1,4)+LLV(VAR1,6))/3;
SZ1:=REF(VAR1,1)=REF(VAR2,1) AND VAR1>VAR2 AND CLOSE>VAR1;
SZ2:=VAR1>VAR2 AND VAR1>REF(VAR1,1) AND VAR2>REF(VAR2,1)
AND H/VAR1<1.1 AND L>VAR2 AND CLOSE>VAR1;
SZ3:=VAR1>VAR2 AND VAR1>REF(VAR1,1) AND VAR2>=REF(VAR2,1) AND H/VAR1>1.1;
SZ4:=VAR1>VAR2 AND VAR1>REF(VAR1,1) AND VAR2>REF(VAR2,1)
AND CLOSE>VAR2 AND CLOSE
SZ5:=(VAR1>VAR2 AND VAR2>REF(VAR2,1) AND VAR1<>REF(VAR1,1)
AND CLOSEVAR2 AND VAR1
AND VAR2<ref(var2,1) and="" close
SZ6:=REF(VAR1,1)>REF(VAR2,1) AND VAR1=VAR2 AND CLOSE
XD1:=VAR1=VAR2 AND CLOSE<var2 or="" (var1<ref(var1,1)="" and="" var2
AND REF(VAR1,1)=REF(VAR2,1) AND CLOSE
XD2:=VAR1=VAR2 AND CLOSE>VAR1;
SAT:=(AMOUNT/C)/(HHV(AMOUNT,20)/HHV(C,20));
量能饱和度:=IF(SAT>1,1,SAT)*100;
IF BARSTATUS=2 AND SZ1 THEN BEGIN
DRAWTEXTABS(390,25,'调整结束短线介入'),LINETHICK2,COLORRED;
END
ELSE
IF BARSTATUS=2 AND SZ2 THEN BEGIN
DRAWTEXTABS(390,25,'上升通道走势良好'),LINETHICK2,COLORRED;
END
ELSE
IF BARSTATUS=2 AND SZ3 THEN BEGIN
DRAWTEXTABS(390,25,'股价偏离注意调整'),LINETHICK2,COLORRED;
END
ELSE
IF BARSTATUS=2 AND SZ4 THEN BEGIN
DRAWTEXTABS(390,25,'上升通道调整洗盘'),LINETHICK2,COLORGREEN;
END
ELSE
IF BARSTATUS=2 AND SZ5 THEN BEGIN
DRAWTEXTABS(390,25,'转向特征注意离场'),LINETHICK2,COLORGREEN;
END
ELSE
IF BARSTATUS=2 AND SZ6 THEN BEGIN
DRAWTEXTABS(390,25,'通道改变坚决离场'),LINETHICK2,COLORGREEN;
END
ELSE
IF BARSTATUS=2 AND XD1 THEN BEGIN
DRAWTEXTABS(390,25,'下跌通道只宜观望'),LINETHICK2,COLORGREEN;
END
ELSE
IF BARSTATUS=2 AND XD2 THEN BEGIN
DRAWTEXTABS(390,25,'短期底部准备进入'),LINETHICK2,COLORYELLOW;
END;
;a:="LTFunc5@FORLT2";
s1:="LTFunc5@LT_S1";
hs:="LTFunc5@LT_HS";
ls:="LTFunc5@LT_LS";
p1:="LTFunc5@LT_P1";
upp:="LTFunc5@LT_UPP";
udd:="LTFunc5@LT_UDD";
{hs;ls;hhs;lls;us;ds;s1;p1;p0;upp;udd};
买入:p1=1 and ref(p1,1)=0,LineThick0,Precis0,ColorRed;
d1:=ema(abs("ddx.ddx"),60);
d2:=max("ddx.ddx"/d1+7.5,7.5);
d3:=min("ddx.ddx"/d1,10);
fb:=if(s1=0,hs,ls);
tr0:=ifs(p1=1,'明日收盘价<'+numtostrn(udd,2)+',出现S点\n','若明日收盘价> '+numtostrn(upp,2)+',出现B点\n');
tr1:=ifs(s1=1,'明日收盘价<'+numtostrn(ls,2)+',短线卖出机会','若明日收盘价> '+numtostrn(hs,2)+'短线买入机会');
tr2:=ifs(p1=1,ifs(cross(p1,0),'B点','持股'),ifs(cross(1,p1),'S点','持币'));
tr3:=ifs(s1=0,'向下,','向上,');
tr4:='3.能量级别:'+numtostrn(d3,1)+'级';
bs:=''+datestr(date)+'买卖点决策系统提示\n'+'1.BS点:'+tr2+','+tr0+'2.短线:'+tr3+tr1+'\n'+tr4;
drawflagtext(1,fb,bs);
STICKLINE(p1=1 and c>=o and o<>0,c,o,d2,0),color5454ff;
STICKLINE(p1=1 and c>=o and o<>0,c,o,7.5,0),colorblack;
STICKLINE(p1=1 and c>=o and o<>0,c,c,7.5,0),color5454ff;
STICKLINE(p1=1 and c>=o and o<>0,o,o,7.5,0),color5454ff;
STICKLINE(p1=1 and c>=o and o<>0,o,c,7.5,1),color5454ff;
STICKLINE(p1=1 and c<=o,o,c,7.5,1),color5454ff;
STICKLINE(p1=1 and c<=o,l,c,0.5,1),color5454ff;
STICKLINE(p1=1 and c<=o,h,o,0.5,1),color5454ff;
STICKLINE((p1<>1 or barscount(c)<3) and c>=o,c,o,7.5,1),colorffff54;
STICKLINE((p1<>1 or barscount(c)<3) and c>=o,c,h,0.5,1),colorffff54;
STICKLINE((p1<>1 or barscount(c)<3) and c>=o,l,o,0.5,1),colorffff54;
drawbmp(p1=1 and ref(p1,1)=0,l,'buy1.bmp'),align1,valign0;
drawbmp(p1=0 and ref(p1,1)=1,h,'sell1.bmp'),align1,valign2;
drawbmp(s1=1 and ref(s1,1)=0 and (p1+ref(p1,1))<>1,l,'bs.bmp'),align1,valign0;
drawbmp(s1=0 and ref(s1,1)=1 and (p1+ref(p1,1))<>1,h,'ss.bmp'),align1,valign2;闪:EMA(c+(h- l)*0.618,3),Color0099FF,LINETHICK0; 进:EMA((o+h+l)/3,4),COLORCYAN,LINETHICK0;
预测明日买点:=EMA((o+h+l)/3,4)+((h+l)/2-ref((o+h+l)/3,3))/4;
DRAWTEXTREL(800,950,'测今日低点:'+NUMTOSTRN(ref(预测明日买点,1),2 )),ColorGREEN;
预测明日卖点:=EMA(c+(h-l)*0.618,3)+(EMA(c+(h-l)*0.618,3)-进)*0.618;
DRAWTEXTREL(580,950,'测今日高点:'+NUMTOSTRN(ref(预测明日卖点,1),2 )),Colorred;gj:=if(c=INDEXC,(INDEXC+INDEXh+INDEXl+INDEXO)/4,AMOUNT/(v+0.01)/100);
明日阻力:=l+(gj-l)+(c-l);

2. IPFS(四) 源码解读之-p2p

package p2p

import (
"context"
"errors"
"time"

net "gx/ipfs//go-libp2p-net"
manet "gx/ipfs//go-multiaddr-net"
ma "gx/ipfs//go-multiaddr"
pro "gx/ipfs//go-libp2p-protocol"
pstore "gx/ipfs//go-libp2p-peerstore"
p2phost "gx/ipfs//go-libp2p-host"
peer "gx/ipfs//go-libp2p-peer"
)
//P2P结构保存当前正在运行的流/监听器的信息
// P2P structure holds information on currently running streams/listeners
type P2P struct {
//监听器
Listeners ListenerRegistry
//数据流
Streams StreamRegistry
//节点ID
identity peer.ID
//节点地址
peerHost p2phost.Host
//一个线程安全的对等节点存储
peerstore pstore.Peerstore
}
//创建一个新的p2p结构
// NewP2P creates new P2P struct
//这个新的p2p结构不包含p2p结构中的监听器和数据流
func NewP2P(identity peer.ID, peerHost p2phost.Host, peerstore pstore.Peerstore) *P2P {
return &P2P{
identity: identity,
peerHost: peerHost,
peerstore: peerstore,
}
}
//新建一个数据流 工具方法 构建一个有节点id,内容和协议的流
func (p2p P2P) newStreamTo(ctx2 context.Context, p peer.ID, protocol string) (net.Stream, error) {
//30s 后会自动timeout
ctx, cancel := context.WithTimeout(ctx2, time.Second
30) //TODO: configurable?
defer cancel()
err := p2p.peerHost.Connect(ctx, pstore.PeerInfo{ID: p})
if err != nil {
return nil, err
}

return p2p.peerHost.NewStream(ctx2, p, pro.ID(protocol))
}
//对话为远程监听器创建新的P2P流
//创建一个新的p2p流实现对对话的监听
// Dial creates new P2P stream to a remote listener
//Multiaddr是一种跨协议、跨平台的表示格式的互联网地址。它强调明确性和自我描述。
//对内接收
func (p2p P2P) Dial(ctx context.Context, addr ma.Multiaddr, peer peer.ID, proto string, bindAddr ma.Multiaddr) ( ListenerInfo, error) {
//获取一些节点信息 network, host, nil
lnet, _, err := manet.DialArgs(bindAddr)
if err != nil {
return nil, err
}
//监听信息
listenerInfo := ListenerInfo{
//节点身份
Identity: p2p.identity,
////应用程序协议标识符。
Protocol: proto,
}
//调用newStreamTo 通过ctx(内容) peer(节点id) proto(协议标识符) 参数获取一个新的数据流
remote, err := p2p.newStreamTo(ctx, peer, proto)
if err != nil {
return nil, err
}
//network协议标识
switch lnet {
//network为"tcp", "tcp4", "tcp6"
case "tcp", "tcp4", "tcp6":
//从监听器获取新的信息 nla.Listener, nil
listener, err := manet.Listen(bindAddr)
if err != nil {
if err2 := remote.Reset(); err2 != nil {
return nil, err2
}
return nil, err
}
//将获取的新信息保存到listenerInfo
listenerInfo.Address = listener.Multiaddr()
listenerInfo.Closer = listener
listenerInfo.Running = true
//开启接受
go p2p.doAccept(&listenerInfo, remote, listener)

default:
return nil, errors.New("unsupported protocol: " + lnet)
}

return &listenerInfo, nil
}
//
func (p2p *P2P) doAccept(listenerInfo *ListenerInfo, remote net.Stream, listener manet.Listener) {
//关闭侦听器并删除流处理程序
defer listener.Close()
//Returns a Multiaddr friendly Conn
//一个有好的 Multiaddr 连接
local, err := listener.Accept()
if err != nil {
return
}

stream := StreamInfo{
//连接协议
Protocol: listenerInfo.Protocol,
//定位节点
LocalPeer: listenerInfo.Identity,
//定位节点地址
LocalAddr: listenerInfo.Address,
//远程节点
RemotePeer: remote.Conn().RemotePeer(),
//远程节点地址
RemoteAddr: remote.Conn().RemoteMultiaddr(),
//定位
Local: local,
//远程
Remote: remote,
//注册码
Registry: &p2p.Streams,
}
//注册连接信息
p2p.Streams.Register(&stream)
//开启节点广播
stream.startStreaming()
}
//侦听器将流处理程序包装到侦听器中
// Listener wraps stream handler into a listener
type Listener interface {
Accept() (net.Stream, error)
Close() error
}
//P2PListener保存关于侦听器的信息
// P2PListener holds information on a listener
type P2PListener struct {
peerHost p2phost.Host
conCh chan net.Stream
proto pro.ID
ctx context.Context
cancel func()
}
//等待侦听器的连接
// Accept waits for a connection from the listener
func (il *P2PListener) Accept() (net.Stream, error) {
select {
case c := <-il.conCh:
return c, nil
case <-il.ctx.Done():
return nil, il.ctx.Err()
}
}
//关闭侦听器并删除流处理程序
// Close closes the listener and removes stream handler
func (il *P2PListener) Close() error {
il.cancel()
il.peerHost.RemoveStreamHandler(il.proto)
return nil
}
// Listen创建新的P2PListener
// Listen creates new P2PListener
func (p2p P2P) registerStreamHandler(ctx2 context.Context, protocol string) ( P2PListener, error) {
ctx, cancel := context.WithCancel(ctx2)

list := &P2PListener{
peerHost: p2p.peerHost,
proto: pro.ID(protocol),
conCh: make(chan net.Stream),
ctx: ctx,
cancel: cancel,
}

p2p.peerHost.SetStreamHandler(list.proto, func(s net.Stream) {
select {
case list.conCh <- s:
case <-ctx.Done():
s.Reset()
}
})

return list, nil
}
// NewListener创建新的p2p侦听器
// NewListener creates new p2p listener
//对外广播
func (p2p P2P) NewListener(ctx context.Context, proto string, addr ma.Multiaddr) ( ListenerInfo, error) {
//调用registerStreamHandler 构造一个新的listener
listener, err := p2p.registerStreamHandler(ctx, proto)
if err != nil {
return nil, err
}
//构造新的listenerInfo
listenerInfo := ListenerInfo{
Identity: p2p.identity,
Protocol: proto,
Address: addr,
Closer: listener,
Running: true,
Registry: &p2p.Listeners,
}

go p2p.acceptStreams(&listenerInfo, listener)
//注册连接信息
p2p.Listeners.Register(&listenerInfo)

return &listenerInfo, nil
}
//接受流
func (p2p *P2P) acceptStreams(listenerInfo *ListenerInfo, listener Listener) {
for listenerInfo.Running {
//一个有好的 远程 连接
remote, err := listener.Accept()
if err != nil {
listener.Close()
break
}

}
//取消注册表中的p2p侦听器
p2p.Listeners.Deregister(listenerInfo.Protocol)
}
// CheckProtoExists检查是否注册了协议处理程序
// mux处理程序
// CheckProtoExists checks whether a protocol handler is registered to
// mux handler
func (p2p *P2P) CheckProtoExists(proto string) bool {
protos := p2p.peerHost.Mux().Protocols()

for _, p := range protos {
if p != proto {
continue
}
return true
}
return false
}

3. 机构追踪指标公式源码是什么意思

机构追踪指标公式源码是股票信息的一种表达方式。
1、股票(stock)是一种有价证券,它是股份有限公司签发的证明股东所持股份的凭证。股东是公司的所有者,以其出资份额为限对公司负有限责任,承担风险,分享收益。
2.股票投资具有如下四条性质:
第一,股票是有价证券,反映着股票的持有人对公司的权利;
第二,股票是证权证券。股票表现的是股东的权利,公司股票发生转移时,公司股东的权益也即随之转移;
第三,股票是要式证券,记载的内容和事项应当符合法律的规定;
第四,股票是流通证券。股票可以在证券交易市场依法进行交易。
拓展资料;
1.一级市场也称为发行市场(Issuance Market),它是指公司直接或通过中介机构向投资者出售新发行的股票的市场。所谓新发行的股票包括初次发行和再发行的股票,前者是公司第一次向投资者出售的原始股,后者是在原始股的基础上增加新的份额。
2.一级市场的运作过程,咨询与管理,股份有限公司采取发起设立方式设立的,注册资本为在公司登记机关登记的全体发起人认购的股本总额。为了彻底的开放市场经济,2014年新公司法规定:有限公司和股份公司的成立不再有首次出资和缴纳期限的限制。
3.股份有限公司采取募集方式设立的,注册资本为在公司登记机关登记的实收股本总额。(2014新公司法实施后,股份公司和有限公司均取消最低注册资本的限制)法律、行政法规对股份有限公司注册资本的最低限额有较高规定的,从其规定。
4.募集资金的选择:募集资金的方式一般可分成公募(Public Placement)和私募(Private Placement)两类。公开募集需要核审,核审分为注册制和核准制。
5.注册制:发行人在发行新证券之前,首先必须按照有关法规向证券主管机关申请注册,它要求发行人提供关于证券发行本身以及同证券发行有关的一切信息,并要求所提供的信息具有真实性、可靠性。——关键在于是否所有投资者在投资之前都掌握各证券发行者公布的所有信息,以及能否根据这些信息做出正确的投资决策。
希望能够给到你帮助。

阅读全文

与量推四源码相关的资料

热点内容
程序员在东南亚被毒打 浏览:284
php内存操作 浏览:6
1加手机号码放哪个文件夹 浏览:728
大兵程序员 浏览:785
青桔app福利中心在哪里 浏览:170
算法安全是智能化战争的博弈焦点 浏览:497
编译器用vs多少 浏览:316
pc单机游戏压缩包下载 浏览:570
服务器锁定什么意思 浏览:731
吐司解压神器 浏览:70
程序员的电脑一般用什么 浏览:934
如何从服务器中查询表是否存在 浏览:323
android首页布局源码 浏览:45
虎牙主播是怎么安卓投屏的 浏览:782
redmonk编程语言排行榜 浏览:110
android嵌入html5 浏览:676
云服务器能永久使用吗 浏览:904
linux安装openresty 浏览:386
ubunt配置php 浏览:975
达达取货码在app哪里 浏览:49