如何编写EA文档格式.docx
- 文档编号:21526610
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:16
- 大小:23.35KB
如何编写EA文档格式.docx
《如何编写EA文档格式.docx》由会员分享,可在线阅读,更多相关《如何编写EA文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
然后这一次是上升超过10点
if(Close[0]<
Close[1]<
){sellme();
第柒章:
学会解读EA
第七章如何解读EA
告诉我以下怎样解读
if(s+b==0
ma1now>
ma2now
(ma1now-ma2now)/point>
macd1now>
macd2now/point>
close[0]>
open[0]
high[0]-low[0]/point>
close[0]-open[0]/point>
解读:
如果(买卖等于零
加上均线1大过均线2
加上均线1减均线2大过10点
加上macd1超过零
加上macd2超过10点
加上收盘大过开盘
加上高减低大过10点
加上收盘减开盘大过10点
){这样才买上成交}
所以一些基本的语句
我们是一定要记住和知道的
不知道就不会解读
不会解读就不会编写策略
不会编写就永远作市场的水鱼
第八章:
认识Point
第八章如何认识Point
什么是Point?
Point是什么?
为什么叫Point?
为什么要乘以Point?
为什么又除以Point?
Point的英文解释是“点”
MT4系统内定
这个Point字代表一个变化的“点”
欧元的计算
1.9356/Point=19356
又比如:
日元的计算
132.66/Point=13266
注意:
Point是会自动变化的
好处是当你编写程式的时候
不会因为欧元对美元欧元对日元
就会出错
那么Point有什么用呢?
再比如:
High的值减Low的值
或者关盘减开盘
if(Close[0]-Open[0]/Point>
10){buyme();
他的值可能是
1.3100-1.3270=-170
-170是没有大过10
因为是下降,所以没有成交交易
macd1_0的值减macd1_1的值
ma1now的值减ma2now的值
总之是计算“点”用的
Point没有固定的值
碰到GU可能是0.0001
碰到EJ可能是0.001
使用的目的就是要把他们变成“整数”
你可以了解为除/Point与乘*point
/Point小數點往後移
小數變成整數
*Point小數點往前移
整數變成小數
例子:
EU小數點有4位
EU/Point小數點往后移4位
JY小數點有2位
JY/Point小數點往后移2位
也是小數点變成整數
JY的high[0]-low[0]=小數点/
Point=整數
EU的high[0]-low[0]=小數点/
JY的if(high[0]-low[0]>
10*
Point
){buyme()};
JY的高盘减低盘大过10点就买上
EU的if(high[0]-low[0]>
Point){buyme()};
EU的高盘减低盘大过10点就买上
这两个答案一样
if(high[0]-low[0]>
if((high[0]-low[0])/Point>
10
Point的P是大写的
Ask的A也是大写的
Bid的B要大写
颜色Red的R也是大写的
第9章:
认识Time[0]
第九章认识Time[0]
什么是Time[0]?
没有人告诉过我
我也没有问过任何人
什么是Time[0]?
很多时候
我们遇到新的词句
我们第一步就是“研究”
而不是问
问了也是白问
因为明天你就忘记了
是忘得一干二尽啊!
在上一个EA速成班的策略中
我有用到
你还记得吗?
你有注意到吗?
单看它的写法
应该可以猜到一二
如果你想知道没有他的效果会怎样
简单,把Time[0]给删掉
看看效果怎样
自我学习是不可少的功课
记住Time[0]的效果
在以后编写策略时
可能会有用到的
第10章:
认识时间观念
第十章认识时间观念
很多人在编写策略时
写到到不知道怎样写
这样写也不行
那样也不行
干脆避开热门时间不下注
这就用到时间了
有些人只喜欢玩热门时间
比如早上八点到下午3点
看看别人编写的
//---判断K线开盘时间,以减少运行次数。
------------------
if(Minute()==0){return(0);
}//正点时间任何时间段均不运行。
if(Minute()>
3){nAllowSend=0;
return(0);
}//从此行起可以编写您认为有价值的交易时间,我们现在是开盘3分钟内。
//-------------------------------------------------------------
if(TimeDayOfWeek(TimeCurrent())==0&
Allow_Trade_On_Sun==FALSE){
ok_to_trade=FALSE;
if(TimeDayOfWeek(TimeCurrent())==1&
Allow_Trade_On_Mon==FALSE){
if(TimeDayOfWeek(TimeCurrent())==2&
Allow_Trade_On_Tue==FALSE){
if(TimeDayOfWeek(TimeCurrent())==3&
Allow_Trade_On_Wed==FALSE){
if(TimeDayOfWeek(TimeCurrent())==4&
Allow_Trade_On_Thu==FALSE){
if(TimeDayOfWeek(TimeCurrent())==5&
Allow_Trade_On_Fri==FALSE){
if(TimeDayOfWeek(TimeCurrent())==6&
Allow_Trade_On_Sat==FALSE){
if(TimeHour(TimeCurrent())!
=0){
if(TimeMinute(TimeCurrent())!
if(ok_to_trade==FALSE){
else{。
。
看别人的EA就是为了“自我学习”
你学习到了什么?
你看到了什么?
第一:
时间是写在策略的前面
if(TimeDayOfWeek(TimeCurrent())==5
意思就是星期几?
5就是星期5
如果要用到小时
应该是这样编写的
if(TimeHour(TimeCurrent())==4){。
如果要用到分钟
if(TimeMinute(TimeCurrent())==4){。
第11章:
认识常用之符号
第十一章认识常用符号
如果你不认识这些符号
你很难编写你的EA策略
可能都不知道怎样表达
a>
b这个代表a大过b
a<
b这个代表a小过b
a==b这个代表a等于b
a=b这个也代表a等于b
这两个的分别就是
第一个是编写在前方if(a==b){}
第二个是编写在后方if(a==b){c=b;
a=>
b这个代表a大过b或者等于b
a=<
b这个代表a小过b或者等于b
a&
b这个代表a再加上b才发生效果
a||b这个代表a或者b都可以发生效果
+-*/这个代表加减乘除
||这个符号我在键盘找了好久好久也没有发现
不知道他们是怎样打出来的
问人?
哈哈和。
也没有问过
最近发现原来是这样的
首先按Shift不放
然后再按\就有||出来了
第12章:
试一试
第十二章试一试
如果High[3]=1.9976,Low[0]=1.9732
a是High[3]和Low[0]的中间线
b是High[3]和a的中间线
c是Low[0]和a的中间线
试一试找出b和c的价值各是多少?
试一试编写成程式
速成班的EA结构还少了2个子程式
分别是Closebuy()和Closesell();
试一试编写或从别的EAcopy&
Press过来
然后放在我们速成班的EA里边并公开出来
第14章:
复盘模型的质量
第十三章复盘模型的质量
很多人不懂也不知道
为什么测试的时候EA可以赚钱
真正用的时候不能,奇怪?
其实一点也不奇怪
因为它们不了解EA的复盘模型
复盘模型有三种
但只有第一种的是可靠的
其他的更本不实际
就是这个:
每个即时价位(基于所有可利用的最小时段的每一个价位的分形插值计算)
商品
EURUSD(EurovsUSDollar)
时间周期
日线图2007.01.0200:
00-2007.12.2800:
00(2007.01.02-2007.12.31)
复盘模型
经测试过的柱数
1259
用于复盘的即时价数量
1190813
90.00%
输入图表错误
起始资金
10000.00
总净盈利
12516.45
总获利
20697.15
总亏损
-8180.70
盈利比
2.53
预期盈利
6.80
绝对亏损
2705.73
最大亏损
3884.28(34.75%)
相对亏损
34.75%(3884.28)
交易单总计
1841
卖单(获利百分比)
602(55.98%)
买单(获利百分比)
1239(61.82%)
盈利交易(占总百分比)
1103(59.91%)
亏损交易(占总百分比)
738(40.09%)
最大:
获利交易
421.80
亏损交易
-250.70
平均:
18.76
-11.08
连续获利金额
12(75.94)
连续亏损金额
7(-336.98)
最多:
连续获利次数
782.52(6)
连续亏损次数
-757.82(5)
连续获利
3
连续亏损
2
只有在这第一种复盘模型下测试才会跑出:
复盘模型的质量90.00%
其他种类的都是n\a
所以快速测试成功赚钱的别高兴太早
他可能是假象而已
只有在:
每个即时价位上测试赚钱的EA
才是真正可以用的EA
测试到至少2007年的要赚钱才可以用
编写策略其实很简单
为什么简单
因为速成班的EA模板已经便便有了之后
什么策略也难不倒你了
比如这样
macd1>
macd2
macd1_2<
macd2_2){buyme();
如果你要交叉先退出sell
就把这个加在那个的上面就可以了
if(s+b==1
macd2_2){closesell();
這是小唐我最近在測試的程式
這是利用在一分鐘線的交易程式自動買及平倉
這程式的缺點目前在於下殺的情況下還無法判斷
所以如果有高手願意賜教我會非常歡迎您唷
歡迎加入論壇一起討論
//+------------------------------------------------------------------+
//||
//|無傭致贏外匯交易MT4智能交易系統|
//|測試版V1.0小唐歡迎大家一起研究|
#propertycopyright"
Copyright2006、OKwh"
#propertylink"
"
#defineMAGICMA200610011231
//|注意沒有指標檔案那些property|
externintwhichmethod=3;
//1~4種下單方式
externdoubleTakeProfit=3;
//賺三點就平倉
externdoubleStopLoss=20;
//止損20
externdoubleMaximumRisk=0.05;
//根據可用保證金計算首筆開倉手數,0.05代表5%的保證金風險;
0.3
externdoubleTrailingStop=25;
//追蹤止損
externintmaxOpen=3;
//最多持倉限制3
externdoublemaxLots=0.1;
//最多單倉限制5
externintbb=0;
//非零就跟蹤止贏
externdoubleMATrendPeriod=26;
//使用26均線
inti,p2,xxx,p1,res;
doubleLots;
datetimelasttime;
intinit()//初始化
{
Lots=1;
lasttime=NULL;
return(0);
}
intdeinit(){return(0);
}//反初始化
//主程序
intstart()
CheckForOpen();
if(bb>
0)CTP();
//跟蹤止贏
//+------下面是各子程序--------------------------------------------+
doubleLotsOptimized()//確定下單量,開倉調用
doublelot=Lots;
intorders=HistoryTotal();
//historyorderstotal
intlosses=0;
//numberoflossesorderswithoutabreak
//MarketInfo(Symbol(),MODE_MINLOT);
//MarketInfo(Symbol(),MODE_MAXLOT);
//MarketInfo(Symbol(),MODE_LOTSTEP);
lot=NormalizeDouble(MaximumRisk*AccountBalance()/AccountLeverage(),1);
if(lot<
0.1)lot=0.1;
if(lot>
maxLots)lot=maxLots;
return(lot);
//平倉持有的買單
voidCloseBuy()
if(OrdersTotal()>
0)
for(i=OrdersTotal()-1;
i<
0;
i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)break;
if(OrderType()==OP_BUY)
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
Sleep(1000);
//平倉持有的賣單
voidCloseSell()
if(OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
Sleep(10000);
//抓最後一筆訂單的價錢
doubleGetLastOrderPrice()
doubleLastOrderPrice;
if(OrdersTotal()>
OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
LastOrderPrice=OrderOpenPrice();
return(LastOrderPrice);
//+............................
//判斷是否買或賣或平倉
intbuyorsell()//在這個函數計算設置你的交易信號
doubleMacdCurrent,MacdPrevious,SignalCurrent;
doubleSignalPrevious,MaCurrent,MaPrevious;
doubleMacdnew,LastPrice;
Macdnew=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
//目前macd值
MacdCurrent=iStochastic(NULL,0,9,9,8,MODE_SMA,0,MODE_MAIN,0);
//目前stoch值
//MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
MacdPrevious=iStochastic(NULL,0,9,9,8,MODE_SMA,0,MODE_MAIN,1);
//SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalCurrent=iStochastic(NULL,NULL,0,9,9,8,PRICE_CLOSE,MODE_SIGNAL,0);
//SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
SignalPrevious=iStochastic(NULL,NULL,0,9,9,8,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
//strMain=iStochastic(NULL,0,9,9,8,MODE_SMA,0,MODE_MAIN,0);
LastPrice=GetLastOrderPrice()-0.03;
//if(MacdCurrent<
20&
MacdCurrent>
SignalCurrent&
Bid<
123.50)//設定stoch<
25且價位需低於123.5
if(MacdCurrent<
22&
Macdnew<
-0.005&
122&
LastPrice<
Bid)//macd值小於-0.002且價位低於123.5買進
return
(1);
//買Ma在上升,Macd在0線上,並且兩線上交叉
Sleep(3000);
if(MacdCurrent>
80&
MacdCurrent<
SignalCu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 编写 EA