论坛全局菜单下方 - TICKMILL 285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 -  icmarkets285X70
查看:1436回复:2
sxcem
注册时间2008-06-25
[原创]总结几个编写ea中碰到的问题 及解决方案
楼主发表于:2008-09-30 12:16只看该作者倒序浏览
1楼 电梯直达
电梯直达
总结几个编写ea中碰到的问题 及解决方案1 所有数组必须 分配索引 否则指标不予执行 因数组=0 解决 setindexbuffer(索引,数组) 2 创建物件object 必须提前清除 objectdelete() 3 如何获得 所画的横线 竖线 趋势线 //+------------------------------------------------------------------+ //| 风险控制指标.mq4 | //| Copyright ?2008, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright ?2008, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window extern bool 竖线定位开关=true; extern bool 横线定位开关=true; extern bool 趋势线定位开关=true; extern bool 显示开关=true; //extern int 手数文字间距=80; extern int 划线文字X位置=200; extern int 划线文字Y位置=10; extern int 划线字体大小=10; extern color 文字颜色=Yellow; datetime VlineTimeArray; double HlineArrayPrice; double TrendArrayPrice; int VlineBar; double HlineBar; double 价格; int 起始位置; double 最高止损价格; double 最低止损价格; double 趋势线止损价格; double 止损价格; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); 自动获取物件(); //-------------------------- 止损价格=0; 最高止损价格=0; 最低止损价格=0; 趋势线止损价格=0; if(竖线定位开关) { 最高止损价格=NormalizeDouble(High[VlineBar],Digits); 最低止损价格=NormalizeDouble(Low[VlineBar],Digits); } //---------------------------- if(横线定位开关) { 止损价格=NormalizeDouble(HlineBar,Digits); } //---- if(趋势线定位开关) { 趋势线止损价格= NormalizeDouble(TrendArrayPrice[0],Digits); } //---- _Show("竖线对应高点价格",High[VlineBar],Digits,划线文字X位置,划线文字Y位置+80,文字颜色); _Show("竖线对应低点价格",Low[VlineBar],Digits,划线文字X位置,划线文字Y位置+100,文字颜色); //----- return(0); } //+------------------------------------------------------------------+ //=========================================================== int 自动获取物件() { RefreshRates(); int VlineCount=0; int HlineCount=0; int TrendCount=0; int obj_total = ObjectsTotal(); ArrayResize(VlineTimeArray, obj_total); ArrayResize(HlineArrayPrice, obj_total); ArrayResize(TrendArrayPrice, obj_total);//pric VlineTimeArray[0]=NULL; HlineArrayPrice[0]=NULL; TrendArrayPrice[0]=NULL; string name,text; int i, j; for(i = 0; i < obj_total; i++) { name = ObjectName(i); if(ObjectType(name) == OBJ_VLINE) { VlineTimeArray[VlineCount]=ObjectGet(name,OBJPROP_TIME1); //FileSize Time VlineCount++; } if(ObjectType(name) == OBJ_HLINE) { HlineArrayPrice[HlineCount]=ObjectGet(name,OBJPROP_PRICE1); HlineCount++; } if(ObjectType(name)==OBJ_TREND) //ObjectGetValueByShift { TrendArrayPrice[TrendCount]=ObjectGetValueByShift(name,0); // TrendCount++; } }//for(i = 0; i < obj_total; i++) VlineBar=iBarShift(Symbol(),0,VlineTimeArray[0],true); HlineBar=HlineArrayPrice[0]; if(显示开关) { //_Show("OrderNum",订单号,0,200,0); _ShowStr("竖线对应时间",TimeToStr(VlineTimeArray[0]),划线文字X位置,划线文字Y位置); _Show("竖线位置",VlineBar,0,划线文字X位置,划线文字Y位置+20,文字颜色); _Show("横线对应价格",HlineArrayPrice[0],4,划线文字X位置,划线文字Y位置+40,文字颜色); _Show("趋势线对应最后柱价格",TrendArrayPrice[0],4,划线文字X位置,划线文字Y位置+60,文字颜色); } if(!显示开关) { // ObjectDelete("OrderNum"); ObjectDelete("竖线对应时间"); ObjectDelete("竖线位置"); ObjectDelete("横线对应价格"); ObjectDelete("趋势线对应最后柱价格"); } } //====================================================================================== //====================================================================================== void _Show(string Str,double dTemp,int dNum,int xOffset,int yOffset,color 文字颜色) { string Signal; Signal=Str+": "+DoubleToStr(dTemp,dNum); _writetext(Str,Signal,划线文字X位置+xOffset,划线文字Y位置+yOffset,文字颜色,划线字体大小); } //---------------------------------- void _ShowStr(string Str,string StrTemp,int xOffset,int yOffset) { string Signal; Signal=Str+": "+StrTemp; _writetext(Str,Signal,划线文字X位置+xOffset,划线文字Y位置+yOffset,文字颜色,划线字体大小); } void _writetext(string Labelname,string data,int x,int y,color ColorValue,int FontSize) { ObjectDelete(Labelname); ObjectCreate(Labelname, OBJ_LABEL, 0, 0, 0); ObjectSetText(Labelname, data, FontSize, "Arial", ColorValue); ObjectSet(Labelname, OBJPROP_CORNER, 0); ObjectSet(Labelname, OBJPROP_XDISTANCE, x); ObjectSet(Labelname, OBJPROP_YDISTANCE, y); } //========================================================================================
TK29帖子1楼右侧xm竖版广告90-240
个性签名

低调做人,踏实做事。
心存感激,勿忘师恩

广告
TK30+TK31帖子一樓廣告
TK30+TK31帖子一樓廣告
慈悲为怀
注册时间2008-04-20
发表于:2008-09-30 15:20只看该作者
2楼
很想学自动下单,能指导一下吗? 交学费也行。
poplor
注册时间2006-05-02
天秤座
发表于:2008-09-30 15:30只看该作者
3楼
真是专业啊。。。。。:o

本站免责声明:

1、本站所有广告及宣传信息均与韬客无关,如需投资请依法自行决定是否投资、斟酌资金安全及交易亏损风险;

2、韬客是独立的、仅为投资者提供交流的平台,网友发布信息不代表韬客的观点与意思表示,所有因网友发布的信息而造成的任何法律后果、风险与责任,均与韬客无关;

3、金融交易存在极高法律风险,未必适合所有投资者,请不要轻信任何高额投资收益的诱导而贸然投资;投资保证金交易导致的损失可能超过您投入的资金和预期。请您考虑自身的投资经验及风险承担能力,进行合法、理性投资;

4、所有投资者的交易帐户应仅限本人使用,不应交由第三方操作,对于任何接受第三方喊单、操盘、理财等操作的投资和交易,由此导致的任何风险、亏损及责任由投资者个人自行承担;

5、韬客不隶属于任何券商平台,亦不受任何第三方控制,韬客不邀约客户投资任何保证金交易,不接触亦不涉及投资者的任何资金及账户信息,不代理任何交易操盘行为,不向客户推荐任何券商平台,亦不存在其他任何推荐行为。投资者应自行选择券商平台,券商平台的任何行为均与韬客无关。投资者注册及使用韬客即表示其接受和认可上述声明,并自行承担法律风险。

版权所有:韬客外汇论坛 www.talkfx.com 联络我们:[email protected]