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)

我的失敗(一) 自以為了不起


2015-05-06
看到要爆倉無法冷靜思考,要停損或是增加倉位,爆掉之後又回到原本設定獲利點。
省悟
共勉之

對帳單

歐美兌從去年開始明顯跌勢,跌了3500點左右,距離上上次失敗之後,剩下200USD重新開始,大概是去年11月吧! 跌勢到接近一半我才有點積極放空歐元。

前一次回檔補單直到獲利,然後下一次就沒這麼幸運了。

如果手數不要太大,或是增加資金,就不會爆倉了。

補單最後手數還放大,原本都是0.01手,最後下到0.05手。

我印象中已經有好幾次爆倉之後回到設定的獲利點了,總是不能記起教訓,馬丁策略在外匯上面使用不是不行,但總會手數越下越大,好像失心瘋一樣,超過帳戶資金可以承受的範圍。第一次凹單凹回來是僥倖,第二次就會讓你知道錯了。

這波跌勢中,跌了一半左右才開始積極放空歐元,根本散戶思維,不過沒關係還有2000點左右跌幅,然後我賺到什麼了,從200USD成長到500USD左右,雖然很少但是有獲利而且還翻倍,已經是值得鼓勵了,但是行情總是會有結束的一天,在行情結束陷入盤整時,我就爆倉了,我還自以為很厲害翻倍,但是完全沒想到行情來了我跟著做,做對了這是正常的,但是行情結束了我之後該怎麼處理呢?

我這次還沒有全盤皆輸,至少做對了一件事保本,在3月3日、4月13日有將獲利各轉100美金到另外的MT4帳號裡,至少還有資金可以讓我重新開始。我覺得爆倉,因為資金不足,外匯券商強制平倉,是因為無法自己認錯,錯誤放在那裡,並不會自己回來,絕對不能讓帳戶被平倉,堅持自己的信念,認錯自己平倉或是入金維持倉位。

EURUSD 當日反轉 2015-10-16


昨天08:30美國有一堆數據公布,因為出去買東西,沒有參與到上漲的行情,但是沒關係,當我有空看盤時看到已經明顯反轉趨勢了,馬上下sell單在1.13745,並設定停損在上一根K棒的中間1.14100,下單buy stop 1.14100 停損為現在價位 1.13745,假設如果是小反彈,之後繼續上漲也可以賺到。



隔天早上就看到buy sell皆打到停損,不過別氣餒,繼續下buy & sell stop 在前幾根K棒最高點跟最低點,1.13600 & 1.14200 互為下單點跟停損點。



看日線圖當日反轉非常明顯,此時sell stop已經成交了,就讓我們繼續看下去,猜測應該有100點左右行情。

1 & 2 為第一次下單的sell & buy stop,在下一根K棒就都出場了。這次下單比較保守,buy sell 都有下,停損設定差一點就不會掃到了,下次可以設定在前一根K棒高點1.14410,或是非常有把握直接設定為前波高點1.14950。

最近下單都有PO文,雖然都不是一直賺錢,但是我覺得下單比較謹慎,比較不會亂下單了,這就像是投資筆記吧!如果有再投資的朋友,投資筆記真的很重要,如果帳戶資金一直沒辦法穩定成長,回過來看筆記一定會有不一樣的體悟。

2015-10-19
好像陷入盤整了,以我的下單法,盤整是賺不了錢的。

2015-10-20
刪除buy stop單,調整sell單立於不敗之地,停利1.13499設定10點。

2015-10-21
昨天下午就看到掃到sell單停利點,後來持續觀察走勢,雖漲得很快後來又跌到起漲點高點接近一半的地方,又把sell單買回來了下在1.13577並設定停損1.13874這波行情的高點,順便下buy stop單在這波行情高點,如果做空不成那就做多吧!



2015-10-22
獲利有拉開的趨勢,暫時不調整停利。

2015-10-23
昨天晚上有歐洲央行新聞發布還有公布利率,行情可能很大,就算沒有行情也有可能劇烈的上下震盪,場上有單的就要做好準備,保守一點就清倉,等盤勢穩定之後再下單。剛好場上有Sell單,如果行情往對有利的方向走,當然是最好,如果不是的話該怎麼辦?

昨天下午就看到sell單獲利20USD有40點的距離,馬上調整停利10點,這樣如果行情不如預期至少獲利可以+5USD,立於不敗之地,20:30新聞過後就看到長長K棒下跌,再次調整停利K棒起跌點1.13176,然後一直看獲利 70 80 90 這樣有點被獲利沖昏頭了,沒有再下單,不然這麼明顯的趨勢應該要再補單提高獲利,不然平常在盤整的時候常常被掃到停損,行情來的時候如果不把握,盈虧比沒有拉開,長久下來也是會賠錢的。

今天早上看到獲利高達一百多,再次調整停利100點,至少之後反彈掃到停利點還可以賺50USD,後來我將近期波型的低點畫線,現在已經在上升軌道的低點了,還是先獲利了結,看是之後反彈之後放空,還是跌破軌道一段距離,找時機再把空單補回來都可以。

已經獲利超過100%,將100USD內轉到另外一個MT4帳號,要有保本的概念,如果這個帳號不幸的一直虧錢,那至少還有100USD可以讓我重新開始,另外一個MT4帳號我還特地將槓桿設為1:1,這樣要1000USD才能下0.01手,這樣只有100USD想要下單都不行。

事後看到歐央行好像要進一步寬鬆的預期導致大跌,理由不重要,重要的是你做了什麼。如果是以前我還是馬丁思維,可能卡buy單看到跌很深,應該又補幾張buy單,補到最後就爆了,想起以前失敗的經歷,我真是笨,以前我真的都不設停損,真是要不得。

2015-10-26
突破上升軌道70點左右,空勢更加明確,伺機作空,但是看到跌這麼深還要放空,內心就在天人交戰,真的好難喔。

FOMC 2015-10-09


FOMC 美聯儲公開市場委員會會議紀要 2015-10-09 02:00 GMT+8,新聞發布通常可以指引目前短期方向,這次只有會議紀要沒有公布利率,所以沒有預掛單抓怪獸。

一、會議紀要陸續公布,然後價格持續上升到1時,已經到達前波高點,很好的下單點Buy單發出,設定停損到2,不巧的是不到三分鐘就打到停損了。
二、然後等待機會上漲到之前停損的一半buy單又發出,停損設定為接近上次下單的停損點4,然而又跟上次下單一樣不到三分鐘就打到停損了。
三、耐心等待機會,最後到5時明顯趨勢反轉sell單發出,停損設定K棒高點,這次終於做對了。

陸續下跌,跌破起漲點,趨勢明顯調整停利點,立於不敗之地,就看之後能跑多遠,新聞發布過1小時,可以安心睡覺了。

整體趨勢向上,但是K棒拉長長得上引線,判斷應該有50點的跌幅。

隔天放假天,下午就掃到Sell單停利點,漲到前波高點2時後來跌到1,認為應該是下單的好時機,Sell單發出設定停損2前波高點。

之後就沒有下單了,不然漲破FOMC時的高點應該要加倍買回才是對的。

最後一次的Sell單停損之後,有點失落,無心看盤,人性的弱點一一浮現出來,導致之後漲破前波高點很好的下單時機,卻沒下單。省悟,共勉之。