EURUSD 買回 2015-11-13


買回上次交易被掃到停損的單 EURUSD 抉擇 2015-11-02

才剛 Po文沒多久就看到跌一根K棒了,跌破掃到停損那根K棒的低點買回空單,並設定停損為目前K棒高點 1.08039,最多虧損 17.5點、17.5 USD,下單之前先計算虧損,因為這跟K棒的下跌讓我下單,如果漲回K棒高點那就是因為當初下單的原因消失了,所以在這個價位設定停損。

下午5:50
等下歐洲公布GDP以及晚上美國也有公布數據,獲利有拉開先設定停損+10USD,立於不敗之地,晚上沒有看盤也不會影響,因為不會虧錢了。

晚上還是有用手機看盤,歐洲公布GDP之後緩步上漲,然後停損,後來又看到下單機會,下Sell單 1.07895 停損是目前高點 1.08080。

晚上09:20
美國公佈數據之前獲利有拉開設定停損 +10USD,本想立於不敗之地,就算行情是反方向的也不會虧錢,但是忽略數據公布的極端行情可能會造成滑點,本來可以賺10USD,因為滑點13.1點,變成-3USD。

兩次的買回空單都掃到停損,雖然之後跌回數據公布時的起漲點,下單好時機我也沒再下單,第一次下單停損設定前波高點不要再調整停損,就不會被頻繁的下單、停損了,但是誰知道會不會漲破前波高點呢?

事後來看是盤整格局,漲跌漲跌交錯再一起,不能以長線下單的方式,有獲利20點就應該清倉,或是公布數據之前要清倉,交易賺到的錢真的是辛苦錢,沒這麼容易。

決戰非農 2015-11-06


回顧一下前一次非農,遠低於預期值,有一波行情。

非農就業人數遠高於預期值,也是造成一波蠻大的行情,上次是大漲,這次是大跌。

新聞公布之前我場上還有單,都已經獲利,也設好停損點,保守作法可以先將場上的單都撤離,我也是猶豫到底該不該清倉呢? 想想還是不要好了,頂多就是少賺而已,不會虧錢啦!

這次非農不知道恍神什麼,差點就沒下到單,倒數30秒才回神,打開抓怪獸腳本,也來不及拍照,只拍了獲利的歷史紀錄,跟之前一樣的設定,上下15點預掛單,停損設定15點,獲利設定100點,20秒之後獲利+44,衝得這麼快都來不及將獲利點取消。

Sell Stop 下單在 1.08423 成交在 1.08303 滑點 12點比起上次50點好多了,我在抓怪獸腳本註解 Monster 1.08423 就是預掛單的位置,這樣我才知道成交價滑點多少。

EURUSD 抉擇 2015-11-02

上周五晚上看到漲回起跌點,想說如此強勢做多好時機,但是已經週五了明天早上就要收盤,不如在觀察一下,下周一在做單。

周六就看到收長長上影線,然後周一開盤就看到價位在上影線中間,這就是抉擇做多做空都可以,保守作法漲破1.10727上影線高點做多、跌破前波低點1.09866做空。

而我觀察幾分鐘看到略為下跌就大膽下空單了,並設停損為上影線高點1.10747。

觀察4小時圖形,長長的上影線壓力區。

2015-11-03
在我之前說的保守下單點,陷入盤整。

2015-11-04
昨天下午5點看到下跌,獲利拉開,先調整停損點1.10131獲利10點,睡覺前在猶豫要不要解單,因為晚一點歐洲央行行長德拉吉要講話,可能掀起波瀾,一陣思考後,再次調整停損1.09868前波低點,就安然睡覺了,波瀾與我無關,我已經立於不敗之地。

早上看圖形,還在昨天的價位附近。

2015-11-05
調整停損1.09600,又跌破前波低點了,Sell Stop 1.07979 跌破5/27、7/20 低點再加碼。

2015-11-06
跌勢明顯,昨天想到預掛單沒有設定停損,好像帶槍沒上保險大搖大擺走在路上,嚇死我了,誰知道會發生什麼事情,做好風險控管,市場上[活得久] 比 [賺得多] 好。
預掛單設定停損50點,就是最多虧25USD。

晚上非農數據發布,加碼單成交,預掛單在 1.07979 成交在 1.07790 滑點 18.9點,在極端行情之下本來就不可能在你設定的價位成交,這就是交易必須承擔的風險。

2015-11-09
從10/22第一根K棒下跌220點,到今天經過12天交易日了,總共下跌630點左右,10/30強勢回檔170點甚至漲到10/28起跌點,強勢回檔但也只是曇花一現,這個過程中,只要手數在資金可以承受的範圍之下逢高做空,通常到最後都可以獲利,不用執著於做多或是做空,行情來了勇敢往對的方向下單吧!

在 2015-03-13 低點 1.04586 預掛加碼單 Sell Stop,再跌破再加碼,不要輕易將手上空單放手,設定停損50點。

2015-11-10
盤整中,懂得等,要能忍。

2015-11-11
又跌破近期低點 1.07039 然後漲回去,目前是漂亮的下跌波形,逢高做空就對了。
來去掏寶雙11購物了。

2015-11-12
陷入盤整,不是每天都有行情的,

2015-11-13
早上看到達到停損點解單了,現在逢高做空的好時機,如果場上沒單的可以下Sell單並設定停損前波起跌點 1.08705,然而我是場上有單被掃到停損,只能伺機再買回空單。

這波反彈從低點 1.06744 漲了160點左右,雖然還沒漲過起跌點 1.08705 但也是蠻多的,在明顯的跌勢也是有反彈的機會,如果下Sell單還是虧錢的話,只能說下單價位不好或是手數過高無法容忍虧損,只能訓練自己的耐心,等待良好的下單時機。

結束這個回合,獲利達到 100% 繼續將獲利內轉到其他 MT4 帳戶,做一個保本的動作。

FOMC 2015-10-29


回顧上一次的 FOMC 2015-10-09,盤整沒有什麼行情,這次FOMC 美聯儲公開市場委員會會議紀要 2015.10.29 02:00 GMT+8 還有公布利率,雖然升息的話題已經拖很久了,這次應該也不會升息,還是來抓怪獸碰碰運氣。

公布利率前5秒預掛單,上下15點,停損也設定15點,如果不幸buy sell都掃到停損就會虧損30點,0.5手就是虧損15USD,腳本還沒下單完成我就拍照了,這時點差跨大到2.6點。

經過6秒後sell單成交,預掛在1.10469成交在1.10439,滑點3點,感覺沒什麼行情,但是已經獲利了就先放著觀察一下。

經過一分半,還是沒有大的行情,設定移動停損50點,在MT4中五位數報價要設定500才會是價位的50點。

三分鐘過後跌破前波低點,事後來看應該要在這裡加單,這是很好的空點,可能是一開始就判定為沒有行情,所以也沒想到要加單,移動止損發揮作用了,停損變成停利,調整到1.10274。Sell單停利TP取消。

經過25分鐘,獲利拉開我才敢加碼sell單,也有一點想到前一次操作有大行情沒有加碼增加獲利,所以這次雖然又跌很低,加碼吧!  並設定停損為1.09767,兩張單停損設定一樣,也都設定移動止損50點。立於不敗之地,來去睡覺,現在是02:30。

早上起來看到第一張單停損調整到 1.09470,因為第二張單獲利還沒有拉開,需要手動調整停利到1.09470。

DailyFX 外匯的資訊網站,可能下次要加息了,漲跌的原因不重要,重要的是你有沒有獲利的單。

2015.10.30
原本2張sell單停損點1.09470在昨天下午就快碰到了,我就想說上次下跌回檔也有100點左右,不想讓我的加碼單麼快就出場,於是設定停損點1.09768賺10點,至少可以獲利10USD。最終還是停損了,因為加碼單價位剛好在相對低點,所以可以忍受的回檔也相對小,加碼單的時間、停損點的設定,還是有待加強。

然後又看到明顯反轉趨勢,將sell單買回,設定停損K棒高點1.09596,之後行情繼續下跌設定停損賺10點。

早上看到單子都清空,也回檔100點左右。

這次操作結果都不如預期,加碼單在相對低點,原本移動停損沒有堅持住做調整,結果還是掃到停損,後來趨勢反轉買回Sell單,也一下子就停損了,雖然都不如預期,但是沒有虧錢,我還是60分及格。

網站靜態化 Really Static

網站靜態化 網頁靜態化 Really Static

一直以來我的網站透過Really Static外掛產生靜態文件,連線網站的時候只有將文件讀取並輸出到瀏覽器,沒有經過CPU運算這樣速度的才會快。

一開始我也透過Cache機制達到加速網站,Hyper Cache + DB Cache Reloaded Fix + Wp Minify,使用這三個外掛,但是只要有透過CPU運算,有很多連線的情況下,就有可能連線錯誤,如果沒記錯的話,我之前自己測試連線到自己網站首頁,按住F5不斷更新網站,一段時間當我放掉之後可能最後畫面會是HTTP ERROR 502錯誤,實際上我這個名不見經傳的網站也不會有很多人來瀏覽,只做這些網站優化也是足夠了。

但是我就是想靜態化網站,不死心一直找,找了很久,後來終於找到可以靜態化網站的外掛Really Static,這是在我網站上面真的可以使用的。

以下介紹使用方式:
1.在網站後台搜尋並安裝Really Static,完成之後啟動到設定頁面。
點選[123-quicksetup] or [quick setup]開始設定

2.然後選擇模式,左邊是測試模式,右邊是LIVE模式,我是直接選LIVE模式,測試模式我還真沒用過。

3.設定網站根目錄,預設值又臭又長,如果第一次嘗試可以先不要修改玩玩看。
設定網站首頁預設值也是很長,如果不修改做測試,完成的時候就要連線到預設的路徑,這裡預設值需要連線到 http://orzalanluo.com/wp-content/plugins/really-static/static/index.html 才會顯示網站首頁,有沒有搞錯這麼長。

我現在的設定是
網站根目錄:/var/www/wordpress/
網站首頁:http://orzalanluo.com/

4.這一步驟是測試你有沒有權限讀寫指定的路徑,成功的話都會是綠色。

5.點擊產生靜態文件

6.成功

7.然後就會在網站根目錄產生很多靜態文件。

8.還沒完喔! 還需要 SSH 登入 VPS,將 web server 設定首頁 index.php 改成 index.html 並重啟 web server,這樣才行。

原本動態網頁連線到 index.php,網頁內容有很多連結,例如: http:// orzalanluo.com/?p=292,實際上是連線到 http:// orzalanluo.com/index.php?p=292,p=292 是參數,就是告訴網站我現在要讀取第292頁的資料,經過PHP程式CPU計算,讀取 Database 資料,最終產生給使用者呈現的畫面。

網站靜態化之後的 index.html 裡面的連結,全部都變成讀取網站資料而已,例如:
http://orzalanluo.com/p=292/index.html       第292頁資料
http://orzalanluo.com/cat=21/index.html       分類 MT4
http://orzalanluo.com/m=201510/index.html       每月彙整 十月 2015

但是還有不完美的地方,我不知道是不是我設定有問題,還是外掛的問題,每當我Po文需要更新資料的時候,繁瑣的步驟常常導致網站出錯。

步驟如下:
1. 網站設定檔改成動態 index.php
2. 重啟 web server
3. 網站後台 [Really static] 設定頁面,[Manual Refresh] 分頁,點擊 [Write all files] 更新文件,漫長等待。
4. 網站設定檔改成靜態 index.html
5. 重啟web server

我已經簡化 1&4 步驟,打指令只是單純的複製檔案。
1. cp index.php_orzalanluo orzalanluo.com
4. cp index.html_orzalanluo orzalanluo.com

如果這些步驟可以省略的話,不知道可以節省多少時間,人生是很短暫的
然後開始分析怎樣自動完成,步驟如下:
1. 連線到首頁 http://orzalanluo.com/index.php
2. 將內容中的 http:// orzalanluo.com/? 字串全部找出來,取代成之後靜態化的路徑。
3. 將步驟2完成的內容,存成 index.html。

到這裡只完成第一步,上一步驟(2),那些超連結每一個都連線一次,重複步驟(2)(3),一直迭代下去。
例如: http:// orzalanluo.com/?p=292 連結,需要連線到 http:// orzalanluo.com/index.php?p=292,將內容取代成靜態化路徑,內容再存成 /網站根目錄/p=292/index.html。

搞了一整天終於完成,直接看程式,是使用 python 實作,程式碼很簡潔,第一次使用 python 完成稍微複雜的程式。
下載點
重要參數
1. url 請修改成你網站首頁
2. path 請修改成網站根目錄
3. sub_path 測試用,產生靜態文件和連結會加上這個值,可以清空。
4. hdr這個值是上網找的,因為我網站有使用CDN服務(CloudFlare),沒有加上這個值連線會被擋掉。

#!/usr/bin/env python
#version 1.0 by alan

import os
import urllib2

url = 'http://orzalanluo.com/'
sub_path = 'static/'
path = '/var/www/wordpress/'+sub_path

if os.path.exists(path) == False:
	os.makedirs(path)

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
       'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
       'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
       'Accept-Encoding': 'none',
       'Accept-Language': 'en-US,en;q=0.8',
       'Connection': 'keep-alive'}

url_list = list()
url_list.append(url+'index.php')

search = url + '?'
search_len=len(search)

for element in url_list:
	print element

	req = urllib2.Request(element, headers=hdr)
	try:
		page = urllib2.urlopen(req)
	except urllib2.HTTPError, e:
		print e.fp.read()

	content = page.read()
	idx = 0
	while True:
		idx = content.find(search , idx)
		if idx == -1:
			break

		last = idx + search_len
		m1 = content.find('\"' , last)
		m2 = content.find('\'' , last)
		end = min(m1,m2)
		if m1 == -1:
			end = m2
		elif m2 == -1:
			end = m1

		url_src = content[idx:end]
		param = content[last:end]

		idx += search_len 
		site = search[:-1]+'index.php?'+param	
		if site.find('#') != -1:
			end1 = content.find('#' , last)
			param = content[last:end1]
			comment = content[end1:end]
			content = content.replace(url_src, url+sub_path+param+'/index.html'+comment)
			continue
		elif site.find('feed') != -1:
			content = content.replace(url_src , url+'index.php?'+param)
			continue
		else:
			content = content.replace(url_src , url+sub_path+param+'/index.html')
		
		if site in url_list:
			continue	

		url_list.append(site)

	idx = element.find('?')
	folder = element[idx+1:]
	if idx == -1:
		folder = ''
	
	if os.path.exists(path+folder+'/') == False:
		os.makedirs(path+folder+'/')

	file = open(path+folder+'/index.html' , 'w')
	file.write(content)
	file.close()	

print 'list size='+str(len(url_list))

內容連結也有設定一些例外,連結文字含有 feed 沒有進行靜態化,有可能連結會是 index.php?page=2 沒有在繼續處理靜態化,雖然還可以再加入程式做處理,目前已經夠好了,之後有時間再進行改版。

最後要讓他可以自動執行,設定定時任務,crontab -e ,加入腳本,每10分鐘自動產生靜態文件。
*/10 * * * * /root/web_static.py
腳本也需要執行權限,打指令新增執行權限 chmod +x /root/web_static.py 。

之後只要有修改文章,都不用 SSH 到  VPS 打指令,也不用到 [Really Static] 設定頁面點擊 [Write all files] 產生靜態文件,真是舒服,有Po文或是修改文章,最晚10分鐘之後會更新內容,爽拉! 完全自動化。

2015-11-05
最近發現一個問題,python定時執行腳本有可能沒辦法正常結束,top 裡面會看到很多 cron、python、sh 程式,導致記憶體用盡,FTP 跟 SSH 會因為記憶體用盡沒辦法連線,需要手動 killall python 清理程式。

這樣也不是辦法上網查了一下,可以用 lockfile 方法判斷是是否有正在執行的程式,如果有的話就不要執行,但是我覺得現在情況應該是程式異常時沒辦法正常結束,所以還是要殺掉程式才對,另外寫一個 shell 程式,在執行 web_static.py 之前,先 killall python 殺掉程式,然後將 cron 工作排程改成這個 shell 程式問題就解決了。

#!/bin/bash

killall python
/root/web_static.py

2015-12-15
突然發現網站右邊的近期迴響網址無法連線,跟之前不一樣的地方多出參數 &cpage=1,可能迴響太多所以網址出現分頁,或是最近升級 WordPress  4.4,我也不知道確切原因,但是程式碼沒有修改的話,就會連結到錯誤網址。

原本網址:
http:// orzalanluo.com/?p=730#comment-86
後來發現:
http:// orzalanluo.com/?p=730&cpage=1#comment-86
如果程式不修改的話,產生的靜態網址連結會是:
http:// orzalanluo.com/p=730/index.html&cpage=1#comment-86

主要修改是要將 &cpage=1 參數忽略掉
新1.1版下載點
以下為主要修改的部分程式碼

		if site.find('#') != -1:
			end1 = site.find('#')
			last = site.find('?') + 1

			tag = site.find('#' , end1+1)
			if tag != -1:
				param = site[last:end1-1]
				comment = site[tag:]
			else:
				param = site[last:end1]
				comment = site[end1:]

			content = content.replace(url_src, url+sub_path+param+'/index.html'+comment , 1)
			continue
		elif site.find('feed') != -1:
			content = content.replace(url_src , url+'index.php?'+param , 1)
			continue
		else:
			content = content.replace(url_src , url+sub_path+param+'/index.html' , 1)

2015-12-16
新1.2版下載點
進階修改,原本沒有處理 http:// orzalanluo.com/index.php 這些網址,通常是在舊文章、新文章的連結,如果點這些連結會跳到動態網頁,如果之後在點其中的連結,又會跳到靜態網站的首頁,因為動態網頁內的連結都會是有參數 http:// orzalanluo.com/?cat=26 之類的,但是目前網站設定首頁是 index.html,所以實際上是連結到 http:// orzalanluo.com/index.html?cat=26,後面參數 cat=26 直接忽略,靜態網頁帶參數也沒有意義,因為也不會再另外處理。

原本動態網址:
http:// orzalanluo.com/index.php?paged=2
http:// orzalanluo.com/index.php?cat=21&paged=2
http:// orzalanluo.com/index.php?author=1&paged=2
Really Static 靜態化路徑:
http:// orzalanluo.com/page/2/index.html
http:// orzalanluo.com/cat=21/page/2.html
http:// orzalanluo.com/author=1/page/3.html

其中首頁的舊文章超連結是 index.html,但是在分類跟作者裡面的舊文章超連結竟然有差異,如果是第2頁會是2.html、第三頁會是3.html…以此類推,這裡應該也要像首頁舊文章的形式,不知道為什麼會有這樣的差異,目前程式架構還是跟隨 Really Static 的處理方式。

程式原本只有搜尋並取代超連結 [http:// orzalanluo.com/?],現在新增程式處理 [http:// orzalanluo.com/index.php?],又更完美了。

部分程式碼:

search = url + 'index.php?'
search_len = len(search)
idx = 0
while True:
	idx = content.find(search , idx)
	if idx == -1:
		break

	last = idx + search_len
	m1 = content.find('\"' , last)
	m2 = content.find('\'' , last)
	end = min(m1,m2)
	if m1 == -1:
		end = m2
	elif m2 == -1:
		end = m1

	url_src = content[idx:end]
	param = content[last:end]

	idx += search_len 
	site = url_src.replace('#038;' , '')	
	if site.find('paged=') != -1:
		m1 = site.find('?')
		m2 = site.find('&')
		m3 = site.find('paged=')
		page_num = site[m3+6:]
 
		if m2 != -1:
			param = site[m1+1:m2] + '/page/' + page_num + '.html'
		else:
			param = 'page/' + page_num + '/index.html'

		content = content.replace(url_src , url+sub_path+param , 1)
	elif site.find('feed') != -1:
		continue
	else:
		content = content.replace(url_src , url+sub_path+param+'/index.html' , 1)
		continue
	
	if site in url_list:
		continue

	url_list.append(site)