打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
自动交易系统编程求助。

自动交易系统编程求助。

自动交易系统编程求助。 j`hNZ%a  
}M?|,N6  
我是个编程盲,想请高手把下面的设想变成MT4自动交易程序,谢谢! ]p\u$VY9  
*f?S5 .  
程序模型: b.@ H1L  
一、指标: YV4 : 8At1  
MA3(Simple,Close)绿色 x g{VP7  
MA27(Simple,Close)红色 C)U #T)  
yr%yy+(.k  
二、交易方式: 8F\~Wz7K  
当MA3上穿MA27则做多,等到MA3下穿MA27时平仓;平仓的同时再开一仓做空,等到MA3上穿MA27时平仓并再次开仓做多,如此循环···每次开仓量为总保证金的20%,系统不设止赢、止损。 ruz Mag)  
Kq8 (d`g}  
以上就是整个程序的设想,请前辈们帮忙编出来,编完请发到我的邮箱:iyth999@163.com 不胜感激!

yanyjjzs33 2006-12-01 18:32
[s:54] 不会

yunkaicn 2006-12-02 12:59
#property copyright "Copyright ?2006, yunkaicn" FK-}i|di  
#property link "hi.baidu.com/fx168" UB5}i('L  
#define MAGICMA 20061007 qw6EPC  
aIQrb  
extern double Lots = 0.1; //交易量  =|^X$H  
extern double maperiod1 = 3; s.<olxXRW  
extern double maperiod2 = 27; >&*6Fqd  
z:d Xc  
double ma11,ma12,ma21,ma22; Z}]:x `fXd  
//+------------------------------------------------------------------+ 9m<wcZ  
//| 计算当前交易货币的订单数量函数,返回的结果为0则没有订单, V`WI"HO+  
// 为-1就是有一张空单,为1就是有一张多单. bx+(.F  
//+------------------------------------------------------------------+ jrDz7AfA  
int CalculateCurrentOrders(string symbol) tXssejiE%  
{ @t{{Q1  
int buys=0,sells=0; O[i2A (  
//---- r< d?  
for(int i=0;i &4ug3  
{ G #_(7X&  
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; D@/9+]-,  
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) MY0[Oq cm=  
{ i]h R7g<  
if(OrderType()==OP_BUY) buys++; *YiD B?Si  
if(OrderType()==OP_SELL) sells++; _BeX7  
} @n ~ND).  
} 9I^H)~S  
//---- 返回函数结果 n]6w)wE (  
if(buys>0) return(buys); Ed ?Yk* 4  
else return(-sells); |eVTxeq  
} 6P/9Vh j'  
//+------------------------------------------------------------------+ r(/P||`l  
//| 开仓函数,由主函数引用,条件是当前货币订单数为0.-------------------| J[_?>YJ  
//+------------------------------------------------------------------+ 'E4(!H,k  
void CheckForOpen() oeU+?-y/b  
{ p_kTLNZd9  
int res; r0XGGLFuZl  
@tU>~y{E  
//----[1] ^LAS9K1.  
if(ma12>ma22 && ma21>ma11) t3h \.(mq  
{ E<.{ v\  
//-[3] tZ6v@W  
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",MAGICMA,0,Red); U S~JLJI  
if(res>0) Vt 5XC~jK  
{ "Mu $3 w  
if(OrderSelect(res,SELECT_BY_TICKET,MODE_TRADES)) 4?6'~G$k  
Alert(Symbol(),"卖单已经开了,价格是:",OrderOpenPrice()); :y)&kJpleP  
} ?%TM7Z4  
else Alert(Symbol(),"卖单开仓出错:",GetLastError()); UmHb-uk ;  
return; Op)R3qt{  
return; jYssz4)tp  
nT6iS}h  
//-[/3] t7& GCZ  
} +]2~ @=<@  
if(ma12 9n2%7dLQ*  
{ [ Sa C  
*fyEw\`a  
res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA, 0, Red); GeR -k9  
if(res>0) m,"tdVo.  
{ C)dYAq3,8  
if(OrderSelect(res,SELECT_BY_TICKET,MODE_TRADES)) ?DTP-#5Ba  
Alert(Symbol(),"买单已经开了,价格是:",OrderOpenPrice()); H s 3*OhK\  
} im%3*bv-  
else Alert(Symbol(),"买单开仓出错:",GetLastError()); y^ fU_L?p  
return; \X p"I5  
} eNskuG|1  
//-[/2] tOVm~C,R  
3`!KndY1  
//----[/1] SuuS!U+i>  
return(0); P.P>@@+d  
} )SLs  [  
//+------------------------------------------------------------------+ >C66X?0cd  
//| 平仓函数,由主函数引用,条件是当前货币订单数不为0.------------------| Ku'U^=bVm:  
//+------------------------------------------------------------------+ v%Xe)D   
void checkforclose() |Q;1;QXd  
{ M] *pBc(o0  
int res,rey; 7mBL#T2   
for(int i=0;i %W+ F e,]  
{ 55\mQ|.Jn  
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; zBfBYhS-  
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) P!EX;+7+x  
{ H'>  
if(OrderType()==OP_BUY) UJ:B:hh''  
//平仓-买单 NBX/V^  
{ %|>i2  
if(ma12>ma22 && ma21>ma11) (WvA9s{/  
{ '-=?lyKv  
//-[3] "?SnA +)  
res=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); S8l+WF4q  
if(res>0) ^Tx1y[hw$  
{ m`~ Qr~  
rey=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",MAGICMA,0,Red); Qs a2iw{  
{ szHUHW~;J  
if(OrderSelect(rey,SELECT_BY_TICKET,MODE_TRADES)) @Klj!2cv$  
Alert(Symbol(),"买单已经平仓,并且卖单已经开了,价格是:",OrderOpenPrice()); `0D+ x  
else Alert(Symbol(),"卖单开仓出错:",GetLastError());}} V.J%4&^X  
return; sp%7iNs  
return; tyh%s"  
-nW-I\d%  
//-[/3] \xt!b^d0  
} @azS)4L  
} a <3oyY'  
//平仓-买单结束 QO8/?^d  
if(OrderType()==OP_SELL) ~'ovJ46tx  
//平仓-卖单 z"<PveVo  
{ n}l Z  
if(ma12 C oaqi`v4T  
{ $z<CkMP!U7  
//-[3] #8PjYB  
res=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); $1axZ~8sS  
if(res>0) 3}"VUS0wh  
{ c6e?)(V>  
rey=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Red); 9qw~]W~Nm  
{ 1Ao"DxZHy7  
if(OrderSelect(rey,SELECT_BY_TICKET,MODE_TRADES)) hVd63_OO  
Alert(Symbol(),"卖单已经平仓,并且买单已经开了,价格是:",OrderOpenPrice()); ~WVrtYJu  
else Alert(Symbol(),"买单开仓出错:",GetLastError());}} Sna7r~ j  
return; nF7Ozxm#  
return; ^fRA$t  
{~Phc 2z  
//-[/3] IuRKj8J)o  
} w@hm>6j  
} Cfa?LgSz  
//平仓-卖单结束 hMi`n6m  
} y+@7k3"  
} &g|-3)A  
gR%fv  
![ Fb~Egc  
} g;vG6!;E\  
Q!MS_ #O  
/qEoiL###  
//+------------------------------------------------------------------+ :,% vAI  
//| 启动函数。 | d_]zX;_  
//+------------------------------------------------------------------+ Q"S;r1 D  
int start() ?x=;?7  
{ b+9M? k"  
ma11=iMA(NULL,0,maperiod1,0,MODE_EMA,PRICE_CLOSE,1); rgJKXl;@s  
ma12=iMA(NULL,0,maperiod1,0,MODE_EMA,PRICE_CLOSE,2); >S,yqKp37~  
ma21=iMA(NULL,0,maperiod2,0,MODE_EMA,PRICE_CLOSE,1); QJ\ o"c  
ma22=iMA(NULL,0,maperiod2,0,MODE_EMA,PRICE_CLOSE,2); 4f:B2x{  
pa*bqPi  
if(Bars<100 || IsTradeAllowed()==false) return; Bq3"l%hI  
//---- calculate open orders by current symbol #(=8 RA:@  
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); 2+ m%f"  
else checkforclose(); 3copJS  
} :[YHJaK  
//+------------------------------------------------------------------+

凌绝顶 2006-12-08 05:36
楼主的系统是不成功的,我好象编程验证过,结果很快爆仓了。程序没存。等有时间我给你重写一次。 iq*]CF  
不管怎样,你有自己独立的想法是值得学习的。

凌绝顶 2006-12-08 07:18
睡不着,就给你做了个自动交易程序,按你的要求做的,不过没有按20%资金下单,缺省的交易手数是0.1手,你可以自己设定。 q(xr5iuP_  
5argw+2s4$  
初始资金:1000USD, 89n\$7Ff9  
GBP 测试结果 1H、4H、Daily 全部暴仓,这与以前测试的结果是一致的。你可以自己测试再对照图比一下。 [>--U)/  
出、入场条件太简单了! <OgwA$abl%  
/vgEDw  
这是源程序:

yunkaicn 2006-12-08 12:37
你真是个热心肠的好人,[s:55] [s:55]

凌绝顶 2006-12-08 18:29
反正睡不着,不帮他总觉得欠他点什么,何况以前我写过,只是结果不好,没存盘. ;*(i}'  
帮助人也挺开心的.[s:55]

bill_ 2009-06-13 11:27
7# 凌绝顶 x?7z15\  
测试结果 I:6H65(&  
欧美1小时 "T@9#7Obu  
是赚的,2004 - 2009
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MT4实用函数
编制自动交易系统的基本知识
加仓代码
(8)外外汇MT4编程:趋势线穿越自动报警 (2012-08-25 14:45:12) : 杂谈分类: MT4编程 外汇MT4编程:趋势线穿越自动报警(网摘)本指标加载后会画出两条趋势线,可手工双击趋
MT4一次下三个单的小程序
五分钟动量交易系统(EA,不是指标)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服