SteadyWinner V5.0 的交易原理
SteadyWinner 根據以下四個原理進行交易:
1. 順勢 而行 –
趨勢指標有很多,而本系統用的是最簡單的移動平均線(EMA)
,不過是用在不同時段的圖表上,以找出無論短期或長期都是順勢時才入市。這個方法看來很簡單,但十分有效。
2. 找一個好的 位置 入市
– 甚麼是好的入市時機?就是市場趨勢向上而出現回調時。因為回調以後,才有上升空間。賣出的原理一樣,在市場趨勢向下而出現回調時入市。一個好的入市位置比是否順勢更為重要。
3 . 找一個好的 位置 離場 –
每單都有設定止贏和止損,但也設有內部止贏和止損,如果開單後市況不理想,EA
會找一個較理想的位置及早離場,以減少損失。
以上講的好像是老生常譚,大多數人都是這樣交易。以下我們會詳細解釋交易策略。這樣做並非常規,大部分EA都不會解釋交易策略,也許使用者也沒有興趣聽。如果你覺得這一段太長或太技術性,大可先跳過,有時間才慢慢看。
我們要詳加解釋,是因為從來信和網上論壇的討論中,我們覺得有許多用戶並不明白SteadyWinner的交易策略。這樣會影響他們使用EA時的信心,特別是在輸的時候。
以下是一幅顯示SteadyWinner交易的圖。橫貫畫面的那條線是EMA700,這是買與賣的分水線。當價格在EMA之上,我們只開買單。當價格在
EMA之下,我們只開賣單。我們同時在幾個不同時段的圖上都使這個方法,以找出市場的方向。我們使用EMA,但不是用來交易兩條平均線的交叉。
SteadyWinner V5.0 的交易原理
SteadyWinner 根據以下四個原理進行交易:
1. 順勢 而行 –
趨勢指標有很多,而本系統用的是最簡單的移動平均線(EMA)
,不過是用在不同時段的圖表上,以找出無論短期或長期都是順勢時才入市。這個方法看來很簡單,但十分有效。
2. 找一個好的 位置 入市
– 甚麼是好的入市時機?就是市場趨勢向上而出現回調時。因為回調以後,才有上升空間。賣出的原理一樣,在市場趨勢向下而出現回調時入市。一個好的入市位置比是否順勢更為重要。
3 . 找一個好的 位置 離場 –
每單都有設定止贏和止損,但也設有內部止贏和止損,如果開單後市況不理想,EA
會找一個較理想的位置及早離場,以減少損失。
以上講的好像是老生常譚,大多數人都是這樣交易。以下我們會詳細解釋交易策略。這樣做並非常規,大部分EA都不會解釋交易策略,也許使用者也沒有興趣聽。如果你覺得這一段太長或太技術性,大可先跳過,有時間才慢慢看。
我們要詳加解釋,是因為從來信和網上論壇的討論中,我們覺得有許多用戶並不明白SteadyWinner的交易策略。這樣會影響他們使用EA時的信心,特別是在輸的時候。
以下是一幅顯示SteadyWinner交易的圖。橫貫畫面的那條線是EMA700,這是買與賣的分水線。當價格在EMA之上,我們只開買單。當價格在
EMA之下,我們只開賣單。我們同時在幾個不同時段的圖上都使這個方法,以找出市場的方向。我們使用EMA,但不是用來交易兩條平均線的交叉。
資金管理
測試版只能交易 0.01, 0.02
這個自動交易系統的資金管理十分保守,非常安全。圖下方綠色的垂直線表示交易手數。贏的時候0.02,輸的時候退至最低的0.01。測試版在微型戶口只交易0.01和0.02手,
在迷你戶口只交易0.1和0.2手,在標準戶口只交易1.0和2.0手。測試版的手數是固定的,當然不是那麼好。如果你喜歡這個系統,最好升級至完整版。
V5.0完整版 - 以戶口 2% 交易
V5.0完整版的資金管理原理一樣,輸的時候退至最低的0.01,但贏的時候,則永遠以戶口的2%進行交易,而且手數能按戶口的增長而增加,從而產生不斷滾存的複利效應。這種效應令本金越滾越大,成為利潤的主要來源。
為什麼是 2 % ?
許多使用者來信詢問,為甚麼SteadyWinner不像他們用過的其他EA,可以自行輸入手數(lotsize)?在這一點上,
SteadyWinner跟別的系統是不同的。它永遠用戶口的2%來交易。因為2%是最合理的手數。這是有理論根據的。
長久以來,已經有人研究賭博和風險理論。他們發現,2%是最合理的風險。假如我是個賭徒,手上有10000元,我該賭多大一注呢?答案是200元。如果我輸了,我只輸掉本金的2%,仍然有力番本。如果我們下注300元,便是風險太大了。如果輸起來,會比下注2%的快很多。相反,如果下注100元,便是有點保守,贏起來時不及下注2%的多。
在外匯交易,風險主要由摃捍和止損有多大來決定。例如我們的可用資金是10000元,止損是100點,那麼我們每手應為0.20手。如果贏了一點,,可以試0.21手,如果輸一點,,應退到0.19手。這樣我們便可以在風險和增長之間保持一種平衡。
新增參數
V5.0開放了一些新的參數,,供用戶輸入他們喜歡的設定。其中包括PerentToRisk 風險系數(0.50% -6.00%) 和
TestLotScale(0.00 -
1,00),即在輸了之後用多大的手數交易。
止損和止贏
為了使用方便,V5.0會將目前的交易手數(lotsize)顯示於屏幕上。同時還會顯示止損和止贏等資料。
V5.0的止損(stoploss)是100點,止贏(take profit) 55點,移動止損(trailing
stop)是22點。用戶可在屏幕上看見這些資料。
源码:
#property copyright "SteadyWinner"
#property
link
"SteadyWinner.com, steadywinner@gmail.com"
string gs_unused_76 = "SteadyWinner V5.0";
int g_acc_number_84 = 0;
double gd_88;
double gd_96;
double gd_104;
double gd_112;
double gd_120;
double gd_128;
double gd_136;
double gd_144;
double gd_152 = 900.0;
double gd_160 = 3600.0;
extern string NoteSpread = "Max Spreads: 2.0 - 4.0";
extern double MaxSpread = 4.0;
extern bool MoneyManagement =
True;
extern double
PercentRisk
= 5.0;
extern double
LotSize
= 0.1;
extern string NoteFri = "Trade after Friday Cut Hour";
extern bool TradeLateFri =
FALSE;
extern int
FridayCutHour = 15;
extern string NoteDec = "Trade on December Cut Date (15)";
int gi_208 = 15;
extern bool TradeLateDec =
FALSE;
extern string NoteBroker = "Broker Friendly Settings";
extern bool PipStepping =
FALSE;
extern bool FXOpenECN =
FALSE;
extern string NoteEA = "Magic No.& Comments, pls
change it";
extern int
MagicNo = 338833;
extern string CommentTxt = "SW-V5";
string gs_unused_252 = "Professional Settings";
double gd_260 = 110.0;
double gd_268 = 55.0;
double gd_276 = 22.0;
double gd_284 = 5.0;
double gd_292 = 0.0;
double g_lots_300 = 0.1;
double gd_308 = 0.0;
double gd_324;
double gd_316;
double gd_332;
double g_order_profit_340 = 0.0;
double gd_348 = 0.0;
double g_maxlot_356 = 0.0;
double g_lotstep_364 = 0.0;
double gd_372 = 0.0;
int g_slippage_380 = 3;
bool gi_384 = TRUE;
int gi_388 = 0;
int gi_392 = 23;
int gi_396 = -1;
bool gi_400 = TRUE;
string gs_404 = "alert.wav";
int g_color_412 = Blue;
int g_color_416 = Aqua;
int g_color_420 = Red;
int g_color_424 = Aqua;
string gs_unused_428 = "0";
string gs_dummy_436;
string g_text_444 = "Smart MM finds nothing wrong.";
int g_color_452 = LightGreen;
void init() {
string ls_60;
string ls_68;
string ls_76;
string ls_84;
MaxSpread = f0_5(MaxSpread,
2.0, 4.0, 1);
FridayCutHour =
f0_5(FridayCutHour, 0, 23, 0);
gd_88 = gd_260;
gd_96 = gd_260;
gd_104 = gd_268;
gd_112 = gd_268;
gd_120 = gd_276;
gd_128 = gd_276;
gd_136 = gd_284;
gd_144 = gd_284;
if (PipStepping) gd_292 =
1;
gd_372 = f0_6(Symbol());
f0_4();
int li_0 = 20;
int li_4 = 40;
int li_8 = 60;
int li_12 = 80;
int li_16 = 100;
int li_20 = 120;
int li_24 = 140;
int li_28 = 160;
int li_32 = 180;
int li_36 = 200;
int li_40 = 220;
int li_44 = 240;
int li_48 = 10;
int li_52 = 200;
int li_56 = 380;
f0_8("Title1", li_0 - 5,
li_48, "SteadyWinner V5.0 - Place on EURUSD(H1) ", 13, "Verdana",
MediumSeaGreen);
f0_8("Title2", li_4, li_48,
"http://steadywinner.com
steadywinner@gmail.com", 9,
"Verdana", White);
f0_8("Line1a", li_8, li_48,
"---------------------------", 10, "Verdana", Goldenrod);
f0_8("Line1b", li_8, li_52,
"--- EA Settings ------------------------------", 10, "Verdana",
Goldenrod);
f0_8("txtRisk", li_12, li_48,
"Trade Lot Risk%: " + DoubleToStr(PercentRisk,
1), 9, "Verdana", Gold);
f0_8("txtScale", li_12, li_52,
"Test Lot
Scale:
" + DoubleToStr(PercentRisk, 1), 9, "Verdana", Gold);
f0_8("txtMaxSpread", li_12,
li_56, "Max
Spread: " +
DoubleToStr(MaxSpread, 1), 9, "Verdana", Gold);
f0_8("TxtTradeLots", li_16,
li_48, "Trade Lot
Size:
" + DoubleToStr(gd_316, 2), 9, "Verdana", Gold);
f0_8("TxtTestLots", li_16,
li_52, "Test Lot
Size:
" + DoubleToStr(gd_324, 2), 9, "Verdana", Gold);
f0_8("TxtCurSpread", li_16,
li_56, "Now Spread: " +
DoubleToStr(gd_332, 1), 9, "Verdana", Gold);
f0_8("TxtMaxLot", li_20,
li_48, "Max
Lots:
" + DoubleToStr(g_maxlot_356, 2), 9, "Verdana", Silver);
f0_8("TxtMinLot", li_20,
li_52, "Min
Lots:
" + DoubleToStr(gd_348, 2), 9, "Verdana", Silver);
f0_8("TxtLotStep", li_20,
li_56, "Lot
Step:
" + DoubleToStr(g_lotstep_364, 2), 9, "Verdana", Silver);
f0_8("TxtSL", li_24, li_48,
"Stop
Loss:
" + DoubleToStr(gd_260, 0), 9, "Verdana", Silver);
f0_8("TxtTP", li_24, li_52,
"Take
Profit:
" + DoubleToStr(gd_268, 0), 9, "Verdana", Silver);
f0_8("TxtTS", li_28, li_48,
"Trailing
Stop:
" + DoubleToStr(gd_276, 0), 9, "Verdana", Silver);
f0_8("TxtTR", li_28, li_52,
"Trailing Reserve: " + DoubleToStr(gd_284, 0), 9,
"Verdana", Silver);
if (TradeLateFri) ls_60 =
"Trade after Friday " + DoubleToStr(FridayCutHour, 0) +
":00:
TEST LOT ONLY";
else ls_60 = "Trade after
Friday " + DoubleToStr(FridayCutHour, 0) +
":00:
NO";
f0_8("TxtFri", li_32, li_48,
ls_60, 9, "Verdana", Gold);
if (PipStepping) ls_76 =
"YES";
else ls_76 = "NO";
f0_8("TxtPipStepping", li_32,
li_56, "Pip Stepping: " + ls_76, 9, "Verdana",
Gold);
if (TradeLateDec) ls_68 =
"Trade after December " + DoubleToStr(gi_208, 0) +
"th: TEST LOT
ONLY";
else ls_68 = "Trade after
December " + DoubleToStr(gi_208, 0) +
"th:
NO";
f0_8("TxtDec", li_36, li_48,
ls_68, 9, "Verdana", Gold);
if (FXOpenECN) ls_84 =
"YES";
else ls_84 = "NO";
f0_8("TxtFXOpenECN", li_36,
li_56, "FXOpen ECN: " + ls_84, 9, "Verdana",
Gold);
f0_8("Line2a", li_40, li_48,
"---------------------------", 10, "Verdana", Goldenrod);
f0_8("Line2b", li_40, li_52,
"---------------------------------------------", 10, "Verdana",
Goldenrod);
f0_8("TxtSmartMM", li_44,
li_48, g_text_444, 9, "Verdana", g_color_452);
}
void deinit() {
ObjectDelete("Title1");
ObjectDelete("Title2");
ObjectDelete("Line1a");
ObjectDelete("Line1b");
ObjectDelete("TxtRisk");
ObjectDelete("TxtScale");
ObjectDelete("TxtMaxSpread");
ObjectDelete("TxtTradeLots");
ObjectDelete("TxtTestLots");
ObjectDelete("TxtCurSpread");
ObjectDelete("TxtMaxLot");
ObjectDelete("TxtMinLot");
ObjectDelete("TxtLotStep");
ObjectDelete("TxtSL");
ObjectDelete("TxtTP");
ObjectDelete("TxtTS");
ObjectDelete("TxtTR");
ObjectDelete("TxtFri");
ObjectDelete("TxtPipStepping");
ObjectDelete("TxtDec");
ObjectDelete("TxtFXOpenECN");
ObjectDelete("Line2a");
ObjectDelete("Line2b");
ObjectDelete("TxtSmartMM");
}
int start() {
int is_closed_128;
int is_closed_132;
bool li_140;
f0_4();
ObjectSetText("TxtTradeLots",
"Trade Lot
Size:
" + DoubleToStr(LotSize, 2), 9, "Verdana", Gold);
ObjectSetText("TxtTestLots",
"Test Lot
Size:
" + DoubleToStr(gd_324, 2), 9, "Verdana", Gold);
ObjectSetText("TxtCurSpread",
"Now Spread: " +
DoubleToStr(gd_332, 1), 9, "Verdana", Gold);
ObjectSetText("TxtSmartMM",
g_text_444, 9, "Verdana", g_color_452);
if (gi_384) {
if (!(Hour() >= gi_388
&& Hour() <=
gi_392)) {
Comment("Time for trade has not come else!");
return (0);
}
}
if (Bars < 100)
{
Print("bars less than 100");
return (0);
}
if (g_acc_number_84
> 0 &&
g_acc_number_84 != AccountNumber()) {
Comment("Trade on account :" + AccountNumber() + "
FORBIDDEN!");
return (0);
}
double ima_0 = iMA(NULL,
PERIOD_M15, 50, 0, MODE_EMA, PRICE_CLOSE, 0);
double ima_8 = iMA(NULL,
PERIOD_M15, 100, 0, MODE_EMA, PRICE_CLOSE, 0);
double ima_16 = iMA(NULL,
PERIOD_M15, 200, 0, MODE_EMA, PRICE_CLOSE, 0);
double ima_24 = iMA(NULL,
PERIOD_M15, 300, 0, MODE_EMA, PRICE_CLOSE, 0);
double ima_32 = iMA(NULL,
PERIOD_M15, 400, 0, MODE_EMA, PRICE_CLOSE, 0);
double ima_40 = iMA(NULL,
PERIOD_M15, 500, 0, MODE_EMA, PRICE_CLOSE, 0);
double iwpr_48 = iWPR(NULL,
PERIOD_H1, 5, 0);
double imfi_56 = iMFI(NULL,
PERIOD_M30, 1, 0);
double iclose_64 =
iClose(NULL, PERIOD_M1, 0);
double ima_72 = iMA(NULL,
PERIOD_M1, 700, 0, MODE_EMA, PRICE_CLOSE, 0);
double ima_80 = iMA(NULL,
PERIOD_M5, 700, 0, MODE_EMA, PRICE_CLOSE, 0);
double ima_88 = iMA(NULL,
PERIOD_M15, 700, 0, MODE_EMA, PRICE_CLOSE, 0);
double ima_96 = iMA(NULL,
PERIOD_M30, 700, 0, MODE_EMA, PRICE_CLOSE, 0);
double iac_104 = iAC(NULL,
PERIOD_M1, 0);
bool bool_112 = FALSE;
bool bool_116 = FALSE;
bool bool_120 = FALSE;
bool bool_124 = FALSE;
if (!f0_0()) {
if (g_order_profit_340 >= 0.0) {
bool_112 = iac_104 < 0.0
&& imfi_56 < 0.1
&& iwpr_48 < -99.99
&& ima_72 <
iclose_64 && ima_80
< iclose_64 &&
ima_88 < iclose_64
&& ima_96 <
iclose_64 && ima_8 >
ima_16 &&
ima_16 > ima_24 &&
ima_24 > ima_32 &&
ima_32 > ima_40;
bool_116 = iac_104 > 0.0
&& imfi_56 > 99.9
&& iwpr_48 > -0.01
&& ima_72 >
iclose_64 && ima_80
> iclose_64 &&
ima_88 > iclose_64
&& ima_96 >
iclose_64 && ima_8 <
ima_16 &&
ima_16 < ima_24 &&
ima_24 < ima_32 &&
ima_32 < ima_40;
}
if (g_order_profit_340 < 0.0) {
bool_112 = iac_104 < 0.0
&& iwpr_48 < -50.0
&& ima_8 <
ima_16;
bool_116 = iac_104 > 0.0
&& iwpr_48 > -50.0
&& ima_8 >
ima_16;
}
gi_396 = -1;
if (bool_112) {
f0_4();
gi_396 = 0;
gd_308 = 0;
f0_2();
|