油价飙升算法有哪些-油价飙升算法有哪些公式
1.炒外汇我们可以选择哪些币种?
2.我想知道队列算法能干什么
炒外汇我们可以选择哪些币种?
当然不是啦,外汇市场可交易币种大约为几十个,而大部分交易集中在美元、欧元、日元、英镑、加元、澳元、瑞郎等七个币种上,正是因为外汇交易品种较少,有利于投资者有足够的精力搞好技术分析,这是优于股票市场的一个方面,当然还有一个方面就是外汇市场几乎天天有“行情”,而且是“T+0”,外汇保证金交易还可以做空。我们可以细细地品味这七个币种,摸清它们的脾性,以便“投其所好”。
以欧元为中心,其它币种与欧元的走势相关程度依次为欧元—瑞郎—英镑—日元—澳元—加元。英镑的振幅从长期来看不高,但短期来说比较活跃,按照币值来讲,英镑的波动幅度应为欧元的1.5倍左右,但实际在2倍左右。英镑的走势有点“绅士”风度,就是涨的时候就有涨的样子,跌的时候就有跌的样子,比较狠,止赢和止损点就不好设置,很容易打掉。但另一方面讲,英镑的机会最多,短中线操作皆很适合,小仓大止损做英镑是一个不错的选择。英镑作为欧系货币有时和“老大”欧元在日图上走势明显不同步,但在更长的周期上将逐步趋于一致。日元在2000年以前是相当活跃的,近几年变得有点低调,可能与日本央行干预有关,但在日内交易上仍然是比较活跃的,震荡较多,加上交易点差很小,所以很适合短线操作。澳元只是近五、六年来变得比较活跃,特别是2003年大放异彩,走出了一轮波澜壮阔的上升行情,令人刮目相看。只是平时不喜欢出风头,加上交易点差较高,不适合性急的短线投资者。加元是最特殊的一个币种,处在一个很“尴尬”的地位,一方面和其他非美货币一样,都是以美元作为“假想敌”,另一方面加元和美元又是“难兄难弟”,这就决定了它的走势的相对独立性,振幅是主要品种里边最小的,只是2003年和澳元一道沾了“商品货币”的光,也着实风光了一番。加元很多时候和其他非美货币走势不同步,时常“独自跳舞”,不过这很适合于在其他非美货币盘整的时候来捕捉这“额外”的机会,以提高总的投资效益。
1.美元
美圆是全球硬通货,各国央行主要货币储备,美国政治经济地位决定美元地位,同时,美国也通过操纵美圆汇率为其自身利益服务,有时不惜以牺牲他国利益为代价。美国的一言一行对汇市的影响重大,因此,从美国自身利益角度去考量美国对美圆汇率的态度对把握汇率走势就非常重要。
举例来说,远的是1985年“广场协议”,当时美国面临过高美圆汇率导致的创历史记录的巨额贸易赤字,而日本投资持有大量的美圆资产。美国施压,于1985年9月,同日,德,法,英达成五国联合干预市场的协议,各国抛售美圆,使美圆有序下跌,以解决美国巨额贸易赤字。最终美圆持续大幅贬值,美圆对日圆在此后不到三年时间,贬值50%。持有美圆资产的日本投资者损失惨重,日圆汇率的大幅上涨也最终促使日本经济陷入长达十余年的衰退,日本对美国世界经济霸主地位的挑战也一败涂地。
美国国内金融资本市场发达,同全球各地市场联系紧密,且国内各市场也密切相关。因为资金随时能在逐利目的下于汇市,股市,债市间流动,也能随时从国内流向国外,这种资金的流动对汇市影响的重大影响不言而喻。比如,美国国债的收益率的涨跌,对美圆汇率就有很大的影响,特别是在汇市关注点在美国利率前景时。因国债对利率的变化敏感,投资者对利率前景的预期的变化,敏锐地反应在债市。如果国债收益率上涨,将吸引资金流入,而资金的流入,将支撑汇率的上涨,反之亦然。因此,投资者可以从国债收益率的涨跌来判断市场对利率前景的预期,以决策汇市投资。
2.欧元
欧元占美元指数的权重为57.6%,比重最大,因此,欧元基本上可以看做美圆的对手货币,投资者可参照欧元来判断美圆强弱。欧元的比重也体现在其货币特性和走势上,因为比重和交易量大,欧元是主要非美币种里最为稳健的货币,如同股票市场里的大盘股,常常带动欧系货币和其他非美货币,起着领头羊的作用因此,新手入市,选择欧元做为主要操作币种,颇为有利。
同时,因为欧元面市仅数年,历史走势颇为符合技术分析,且走势平稳,交易量大,不易被操纵,人为因素较少,因此,仅从技术分析角度而言,对其较长趋势的把握更具有效性。除一些特殊市场状况和交易时段(如04年底,欧元在圣诞和元旦的节假日气氛和交易清淡状况下,对历史新高做出突破,后续行情表明此为假突破,为部分市场主力出货之狡猾手段),一般而言,对重要点位和趋势线以及形态的突破,可靠性都是相对较强的。
一国政府和央行对货币都会进行符合其利益和意图的干预,区别在于各自的能力不同。上面提到美国方面,因其国家实力和影响力,以及政治结构带来政府对货币的干预能力颇强,可以说,基本上,美元的长期走势可以按照美国的意图,而欧元区的政治结构相对分散,利益分歧较多,意见分歧相应也多。因此,欧盟方面影响欧元汇率的能力也大打折扣,根本不能与美国方面同日而语。当欧美方面因利益分歧在汇率上出现博弈时,美国方面占上风是毋庸质疑的。
3.日元
因为日本国内市场狭小,为出口导向型经济,特别是近十余年经济衰退,出口成为国内经济增长的救生稻草,因此,经常性地干预汇市,使日圆汇率不至于过强,保持出口产品竞争力成为日本习惯的外汇政策。日本央行是世界上最经常干预汇率的央行,且日本外汇储备世界第一,干预汇市的能力较强,因此,对于汇市投资者来说,对日本央行的关注当然是必须的。日本方面干预汇市的手段主要是口头干预和直接入市。因此,日本央行和财政部官员经常性的言论对日圆短线波动影响颇大,是短线投资者需要重点关注的,也是短线操作日圆的难点所在。
也正因为日本经济与世界经济紧密联系,特别是与重要贸易伙伴,如美国,中国,东南亚地区密切相关。因此日圆汇率也较易受外界因素影响。例如,中国经济的增长对日本经济的复苏日益重要,因而中国方面经济增长放缓的消息对日圆汇率的负面影响也愈来愈大。
日本虽是经济大国,但却是政治傀儡,可以说是美国的小伙计,唯美国马首是瞻。因此,从汇率政策上来说,基本上需要符合美国方面的意愿和利益。如1985年的“广场协议”正是政治上软弱,受制于人的结果。因此,上面所提到的干预汇率,也只能是在美国人“限定”的框架内折腾了。
石油价格的上涨对日圆是负面的,虽然日本对石油的依赖日益减少,但心理上依旧。
4.英镑
英镑是曾经的世界货币,目前则是最值钱的货币,因其对美元的汇率较高,因而每日的波动也较大,特别是其交易量远逊欧元,因此其货币特性就体现为波动性较强,而伦敦做为最早的外汇交易中心,其交易员的技巧和经验都是顶级的,而这些交易技巧在英镑的走势上得到了很好的体现,因此,英镑相对欧元来说,人为因素较多,特别是短线的波动,那些交易员对经验较少的投资者的“欺骗”可谓“屡试不爽”。因而,短线操作英镑是考验投资者功力的试金石,而那些经验和技巧欠缺的投资者,对英镑最好敬而远之。
英镑属于欧系货币,与欧元联系紧密。因英国与欧元区经济政治密切相关,且英国为欧盟重要成员之一。因此,欧盟方面的经济政治变动,对英镑的影响颇大。例如,近期法国荷兰的公投反对通过欧盟宪法,造成的政治动荡,欧元大幅下跌,就拖累了英镑跟随下跌。
此外,英国发现北海石油使其成为G7里少数能石油自给的国家,油价的上涨在一定程度上还利好英镑,相对日圆,那英镑对日圆的交叉就有较好的表现。
5.瑞士法郎
瑞士是传统的中立国,瑞士法郎也是传统的避险货币,政治动荡期,能吸引避险资金流入,另外,瑞士宪法曾规定,每一瑞士法郎必须有40%的黄金储备支撑,虽然这一规定已经失效,但瑞士法郎同黄金价格仍具有一定心理上的联系。黄金价格的上涨,能带动瑞郎一定程度的上涨。
瑞士是一小国,因此,决定瑞郎汇率的,更多的是外部因素,主要的是美元的汇率,另外,因其也属于欧系货币,因此,平时基本上跟随欧元的走势。
瑞士法郎货币量小,在特殊时期,特别是政治动荡引发对其大量的需求时,能很快推升其汇率,且容易使其币值高估。
6.澳元
澳元是典型的商品货币(商品货币的特征主要有高利率、出口占据国民生产总值比例较高、某种重要的初级产品的主要生产和出口国、货币汇率与某种商品(或者黄金价格)同向变动,等等),澳大利亚在煤炭、铁矿石、铜、铝、羊毛等工业品和棉纺品的国际贸易中占绝对优势,因此这些商品价格的上涨,对于澳元的正面影响是很大的,另外,尽管澳洲不是黄金的重要生产和出口国,但是澳元和黄金价格正相关的特征比较明显,还有石油价格。例如,近几年来代表世界主要商品价格的国际商品期价指数一路攀升,特别是04年黄金,石油的价格大涨,一路推升了澳元的汇价。
此外,澳元是高息货币,美国方面利率前景和体现利率前景的国债收益率的变动对其影响较大。
7.加元
加元也属于商品货币,是西方七国里最依赖出口的国家,其出口占其GDP的四成,而出口产品主要是农产品和海产品。同时,加元是,非常典型的美元集团货币(美元集团指的是那些同美国经济具有十分密切关系的国家,这主要包括了同美国实行自由贸易区或者签署自由贸易协定的国家,以加拿大、拉美国家和澳洲为主要代表),其出口的80%是美国,与美国的经济依存度极高。表现在汇率上,就是加元对主要货币和美圆对主要货币走势基本一致,例如,欧元对加元和欧元对美圆在图形上保持良好的同向性,只是在近年美圆普遍下跌中,此种联系才慢慢减弱。
另外,加拿大是西方七国里唯一一个石油出口的国家,因此石油价格的上涨对加元是大利好,使其在对日元的交叉盘中表现良好
我想知道队列算法能干什么
队列是一种先进先出的数据结构,由于这一规则的限制,使得队列有区别于栈等别的数据结构。
作为一种常用的数据结构,同栈一样,是有着丰富的现实背景的。以下是几个典型的例子。
[例5-2] 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1,汽车油箱的容量C(以升为单位),每升汽油能行驶的距离D2,出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di,每升汽油价格Pi(i=1,2,……N).
计算结果四舍五入至小数点后两位.
如果无法到达目的地,则输出"No Solution".
样例:
INPUT
D1=275.6 C=11.9 D2=27.4 P=2.8 N=2
油站号I
离出发点的距离Di
每升汽油价格Pi
1
102.0
2.9
2
220.0
2.2
OUTPUT
26.95(该数据表示最小费用)
[问题分析]
看到这道题,许多人都马上判断出穷举是不可行的,因为数据都是以实数的形式给出的.但是,不用穷举,有什么方法是更好的呢 递推是另一条常见的思路,但是具体方法不甚明朗.
既然没有现成的思路可循,那么先分析一下问题不失为一个好办法.由于汽车是由始向终单向开的,我们最大的麻烦就是无法预知汽车以后对汽油的需求及油价变动;换句话说,前面所买的多余的油只有开到后面才会被发觉.
提出问题是解决的开始.为了着手解决遇到的困难,取得最优方案,那就必须做到两点,即只为用过的汽油付钱;并且只买最便宜的油.如果在以后的行程中发现先前的某些油是不必要的,或是买贵了,我们就会说:"还不如当初不买."由这一个想法,我们可以得到某种启示:假设我们在每个站都买了足够多的油,然后在行程中逐步发现哪些油是不必要的,以此修改我们先前的购买计划,节省资金;进一步说,如果把在各个站加上的油标记为不同的类别,我们只要在用时用那些最便宜的油并为它们付钱,其余的油要么是太贵,要么是多余的,在最终的计划中会被排除.要注意的是,这里的便宜是对于某一段路程而言的,而不是全程.
[算法设计]由此,我们得到如下算法:从起点起(包括起点),每到一个站都把油箱加满(终点除外);每经过两站之间的距离,都按照从便宜到贵的顺序使用油箱中的油,并计算花费,因为这是在最优方案下不得不用的油;如果当前站的油价低于油箱中仍保存的油价,则说明以前的购买是不够明智的,其效果一定不如购买当前加油站的油,所以,明智的选择是用本站的油代替以前购买的高价油,留待以后使用,由于我们不是真的开车,也没有为备用的油付过钱,因而这样的反悔是可行的;当我们开到终点时,意味着路上的费用已经得到,此时剩余的油就没有用了,可以忽略.
数据结构采用一个队列:存放由便宜到贵的各种油,一个头指针指向当前应当使用的油(最便宜的油),尾指针指向当前可能被替换的油(最贵的油).在一路用一路补充的过程中同步修改数据,求得最优方案.
注意:每到一站都要将油加满,以确保在有解的情况下能走完全程.并假设出发前油箱里装满了比出发点贵的油,将出发点也看成一站,则程序循环执行换油,用油的操作,直到到达终点站为止.
本题的一个难点在于认识到油箱中油的可更换性,在这里,突破现实生活中的思维模式显得十分重要.
[程序清单]
program ex5_2(input,output);
const max=1000;
type recordtype=record price,content:real end;
var i,j,n,point,tail:longint;
content,change,distance2,money,use:real;
price,distance,consume:array[0..max] of real;
oil:array [0..max] of recordtype;
begin
write('Input DI,C,D2,P:'); readln(distance[0],content,distance2,price[0]);
write('Input N:'); readln(n); distance[n+1]:=distance[0];
for i:=1 to n do
begin
write('Input D[',i,'],','P[',i,']:');
readln(distance[i],price[i])
end;
distance[0]:=0;
for i:=n downto 0 do consume[i]:=(distance[i+1]-distance[i])/distance2;
for i:=0 to n do
if consume[i]>content then
begin writeln('No Solution'); halt end;
money:=0; tail:=1; change:=0;
oil[tail].price:=price[0]*2; oil[tail].content:=content;
for i:=0 to n do
begin
point:=tail;
while (point>=1) and (oil[point].price>=price[i]) do
begin
change:=change+oil[point].content;
point:=point-1
end;
tail:=point+1;
oil[tail].price:=price[i];
oil[tail].content:=change;
use:=consume[i]; point:=1;
while (use>1e-6) and (point=oil[point].content
then begin use:=use-oil[point].content;
money:=money+oil[point].content*oil[point].price;
point:=point+1 end
else begin oil[point].content:=oil[point].content-use;
money:=money+use*oil[point].price;
use:=0 end;
for j:=point to tail do oil[j-point+1]:=oil[j];
tail:=tail-point+1;
change:=consume[i]
end;
writeln(money:0:2)
end.
[例5-3] 分油问题:设有大小不等的3个无刻度的油桶,分别能够存满,X,Y,Z公升油(例如X=80,Y=50,Z=30).初始时,第一个油桶盛满油,第二,三个油桶为空.编程寻找一种最少步骤的分油方式,在某一个油桶上分出targ升油(例如targ=40).若找到解,则将分油方法打印出来;否则打印信息"UNABLE"等字样,表示问题无解.
[问题分析] 这是一个利用队列方法解决分油问题的程序.分油过程中,由于油桶上没有刻度,只能将油桶倒满或者倒空.三个油桶盛满油的总量始终等于开始时的第一个油桶盛满的油量.
[算法设计] 分油程序的算法主要是,每次判断当前油桶是不是可以倒出油,以及其他某个油桶是不是可以倒进油.如果满足以上条件,那么当前油桶的油或全部倒出,或将另一油桶倒满,针对两种不同的情况作不同的处理.
程序中使用一个队列Q,记录每次分油时各个油桶的盛油量和倾倒轨迹有关信息,队列中只记录互不相同的盛油状态(各个油桶的盛油量),如果程序列举出倒油过程的所有不同的盛油状态,经考察全部状态后,未能分出TARG升油的情况,就确定这个倒油问题无解.队列Q通过指针front和rear实现倒油过程的控制.
[程序清单]
program ex5_3(input,output);
const maxn=5000;
type stationtype=array[1..3] of integer;
elementtype=record
station:stationtype;
out,into:1..3;
father:integer
end;
queuetype=array [1..maxn] of elementtype;
var current,born:elementtype;
q:queuetype;
full,w,w1:stationtype;
i,j,k,remain,targ,front,rear:integer;
found:boolean;
procedure addQ(var Q:queuetype;var rear:integer; n:integer; x:elementtype);
begin
if rear=n
then begin writeln('Queue full!'); halt end
else begin rear:=rear+1; Q[rear]:=x end
end;
procedure deleteQ(var Q:queuetype;var front:integer;rear,n:integer;var x:elementtype);
begin
if front=rear
then begin writeln('Queue empty!'); halt end
else begin front:=front+1; x:=Q[front] end
end;
function dup(w:stationtype;rear:integer):boolean;
var i:integer;
begin
i:=1;
while (i<=rear) and ((w[1]q[i].station[1]) or
(w[2]q[i].station[2]) or (w[3]q[i].station[3])) do i:=i+1;
if i0 then
begin
print(q[k].father);
if k>1 then write(q[k].out, ' TO ',q[k].into,' ')
else write(' ':8);
for i:=1 to 3 do write(q[k].station[i]:5);
writeln
end
end;
begin {Main program}
writeln('1: ','2: ','3: ','targ');
readln(full[1],full[2],full[3],targ);
found:=false;
front:=0; rear:=1;
q[1].station[1]:=full[1];
q[1].station[2]:=0;
q[1].station[3]:=0;
q[1].father:=0;
while (front begin
deleteQ(q,front,rear,maxn,current);
w:=current.station;
for i:=1 to 3 do
for j:=1 to 3 do
if (ij) and (w[i]>0) and (w[j]remain
then begin w1[j]:=full[j]; w1[i]:=w[i]-remain end
else begin w1[i]:=0; w1[j]:=w[j]+w[i] end;
if not(dup(w1,rear)) then
begin
born.station:=w1;
born.out:=i;
born.into:=j;
born.father:=front;
addQ(q,rear,maxn,born);
for k:=1 to 3 do
if w1[k]=targ then found:=true
end
end
end;
if not(found)
then writeln('Unable!')
else print(rear)
end.
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。