[存档!]免费撰写顾问文章 - 页 83 1...767778798081828384858687888990...94 新评论 Дмитрий 2011.07.12 12:06 #821 intOrderSend( 字符串, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) 用于开仓或下挂单的主要功能。 返回交易服务器分配给订单的票据号码,如果失败则返回-1。要获得额外的错误信息,必须调用GetLastError() 函数。 注意事项。 在市场订单(OP_SELL或OP_BUY)开盘时,只有BID(用于卖出)或Ask(用于买入)的最新价格可以作为开盘价使用。如果对与当前证券不同的证券进行操作,必须使用MarketInfo() 函数,并使用MODE_BID或MODE_ASK参数,才能获得该证券的最新报价。不能应用计算的或未正常化的价格。如果价格线程中没有要求的开盘价,或者没有根据小数点后的数字数量 进行规范化处理,将产生错误 129(ERR_INVALID_PRICE)。如果要求的开盘价完全过期,将产生独立于滑点 参数的错误 138(ERR_REQUOTE)。如果要求的价格已经过期,但存在于线程中,那么将以当前价格开仓,而且只有当前价格位于价格+ 滑点的范围内。 止损和止盈水平不能离市场太近。可以使用MarketInfo() 函数和MODE_STOPLEVEL参数获得以点为单位的止损位的最小距离。如果出现错误的或不正常的停止水平,将产生错误 130(ERR_INVALID_STOPS)。 在下达挂单时,开盘价不能离市场太近。待定价格与当前市场价格的最小距离(以点为单位)可以通过MarketInfo() 函数中的MODE_STOPLEVEL参数获得。如果挂单的开盘价是假的,将产生错误 130(ERR_INVALID_STOPS)。 在一些交易服务器中,挂单到期时间的应用可以被禁用。在这种情况下,当在到期 参数中指定一个非零值时,将产生错误 147(ERR_TRADE_EXPIRATION_DENIED)。 在一些交易服务器上,未结订单和挂单的总量 可能受到限制。如果超过了这个限制,将不会有新的头寸被打开(或没有挂单被放置),交易服务器将返回错误 148(ERR_TRADE_TOO_MANY_ORDERS)。 参数。 标志 - 交易的符号。 cmd - 操作类型。它可以是贸易操作 枚举中的任何一个。 量 - 地段的数量。 价格 - 倾向于交易的价格。 滑移 - 买入或卖出订单的最大价格滑差。 止损 - 止损水平。 获利 - 获利水平。 评论 - 命令评论文本。评论的最后部分可以由服务器改变。 魔术 - 订单的神奇数字。可作为用户定义的标识符。 到期 - 订单到期时间(仅适用于待定订单)。 箭头_颜色 - 图表上开口箭头的颜色。如果参数缺失或有CLR_NONE值,则不会在图表上画出开口箭头。 编码帮助 [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 [存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. hunter30 2011.07.12 12:09 #822 #属性链接"dwgrell@gmail.com" //----输入参数 外来的int period=16。 外来的int porog=50。 外来的双倍lot=1。 外部的inttern k=5000。 外部的bool pl=true。 //+------------------------------------------------------------------+ //|专家初始化功能 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { double bs=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,0,0),Digits)。 double ss=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,1,0),Digits)。 double tpb=NormalizeDouble(bs+(bs-ss),Digits)。 double tps=NormalizeDouble(ss-(bs-ss),Digits)。 if(pl==true)double lots=MathMin(AccountFreeMargin()/k,5); 如果(pl==false)lot=lot。 如果(OrdersTotal()==0) { OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);//打开购买限制。 OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);//打开销售止损。 } 如果(OrdersTotal()==2) { OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//选择最近的订单。 如果(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red)。 如果(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(), ss,bs,tps,0,Blue)。 如果(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red) 。 如果(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red) 。 OrderSelect(1,SELECT_BY_POS,MODE_TRADES)。 如果(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red)。 如果(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(), ss,bs,tps,0,Blue)。 如果(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red) 。 如果(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red) 。 } 如果(OrdersTotal()==1) { OrderSelect(0,SELECT_BY_POS,MODE_TRADES)。 如果(OrderType()==OP_BUY) {OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red); OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue); } 如果(OrderType()==OP_SELL) {OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red); OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red) ;} 如果(OrderType()==OP_BUYSTOP) {OrderModify(OrderTicket(),bs,ss,tpb,0,Red); OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue); } 如果(OrderType()==OP_SELLSTOP){OrderModify(OrderTicket(),ss,bs,tps,0,Blue); OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red) ;} } return(0); } //+------------------------------------------------------------------+ [Archive!] Writing an advisor 如何编码? 问吧! Дмитрий 2011.07.12 12:20 #823 #property link "dwgrell@gmail.com" //--- input parameters extern int period=16; extern int porog=50; extern double lot=1; extern int k=5000; extern bool pl=true; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double bs=NormalizeDouble(iCustom(Symbol(),0,"Aver",period,0,0),Digits); double ss=NormalizeDouble(iCustom(Symbol(),0,"Aver",period,1,0),Digits); double tpb=NormalizeDouble(bs+(bs-ss),Digits); double tps=NormalizeDouble(ss-(bs-ss),Digits); if(pl==true)double lots=MathMin(AccountFreeMargin()/k,5); if(pl==false)lots=lot; if(OrdersTotal()==0) { OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);//Открываем отложник на покупку. OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);//Открываем отложник на продажу. } if(OrdersTotal()==2) { OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//Выбираем ближайший ордер. if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,0,0,0,Red); if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,0,0,0,Blue); //if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red); //if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red); OrderSelect(1,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,0,0,0,Red); if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,0,0,0,Blue); //if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red); //if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red); } if(OrdersTotal()==1) { OrderSelect(0,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY) {/*OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);*/ OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);} if(OrderType()==OP_SELL) {/*OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);*/ OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);} if(OrderType()==OP_BUYSTOP) {/*OrderModify(OrderTicket(),bs,ss,tpb,0,Red);*/ OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);} if(OrderType()==OP_SELLSTOP){/*OrderModify(OrderTicket(),ss,bs,tps,0,Blue);*/ OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);} } return(0); } //+------------------------------------------------------------------+ Дмитрий 2011.07.12 12:24 #824 帐户: 154603姓名:Dmitriy货币:美元2011年7月12日, 14:23 已结束的交易。 票务开放时间类型尺寸项目价格S / LT / P关闭时间价格委员会税收互换盈利 37055732011.07.12 13:57购买2.16荣华富贵1.39821.39731.40652011.07.12 14:131.39730.000.000.00-194.40 37053282011.07.12 13:19购买2.01梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.39241.38991.39482011.07.12 13:491.39480.000.000.00482.40 37053562011.07.12 13:14出售2.17荣华富贵1.39001.39241.38762011.07.12 13:191.39240.000.000.00-520.80 37052852011.07.12 13:05出售2.17荣华富贵1.39141.39241.39042011.07.12 13:111.39040.000.000.00217.00 37052782011.07.12 13:04购买2.17梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.39241.39141.39342011.07.12 13:051.39140.000.000.00-217.00 37048122011.07.12 11:32购买2.40梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.39591.39141.40202011.07.12 13:011.39140.000.000.00-1 080.00 37040302011.07.12 13:01出售1.88梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.39141.39171.39112011.07.12 13:011.39170.000.000.00-56.40 37041582011.07.12 10:22购买2.13梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.38961.38981.39582011.07.12 11:301.39580.000.000.001 320.60 37040632011.07.12 10:12购买2.02梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.38611.38341.38882011.07.12 10:211.38880.000.000.00545.40 37040202011.07.12 10:05购买1.92梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.38481.38341.38592011.07.12 10:121.38590.000.000.00211.20 37040012011.07.12 10:04出售1.95梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.38371.38481.38312011.07.12 10:051.38480.000.000.00-214.50 37035052011.07.12 10:01购买1.82荣华富贵1.38431.38371.38492011.07.12 10:041.38370.000.000.00-109.20 37039202011.07.12 09:52出售2.04梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.38451.38431.37552011.07.12 10:011.38430.000.000.0040.80 37036312011.07.12 09:12出售1.88梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台1.38921.39351.38492011.07.12 09:501.38490.000.000.00808.40 37035332011.07.12 09:03出售1.80荣华富贵1.39151.39351.38952011.07.12 09:101.38950.000.000.00360.00 37035062011.07.12 09:02出售1.82荣华富贵1.39271.39301.39242011.07.12 09:021.39300.000.000.00-54.60 [Archive!] Writing an advisor 外汇--2015年的趋势、预测和影响 [档案]学习如何赚钱的村民! Дмитрий 2011.07.12 12:25 #825 我不推荐它是真的。 hunter30 2011.07.12 12:31 #826 我没有得到停止损失 hunter30 2011.07.12 12:32 #827 在蜡烛图的低点止损 hunter30 2011.07.12 12:33 #828 或最多,取决于哪个订单 Дмитрий 2011.07.12 12:36 #829 试着研究一下EA的代码, 你就会明白为什么它变得很中性了。那里很简单,因为我是为一个测试员写的 。但奇怪的是,这很有效。 hunter30 2011.07.12 12:39 #830 说实话,我根本就不了解MQL编程。 1...767778798081828384858687888990...94 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
返回交易服务器分配给订单的票据号码,如果失败则返回-1。要获得额外的错误信息,必须调用GetLastError() 函数。
注意事项。
在市场订单(OP_SELL或OP_BUY)开盘时,只有BID(用于卖出)或Ask(用于买入)的最新价格可以作为开盘价使用。如果对与当前证券不同的证券进行操作,必须使用MarketInfo() 函数,并使用MODE_BID或MODE_ASK参数,才能获得该证券的最新报价。不能应用计算的或未正常化的价格。如果价格线程中没有要求的开盘价,或者没有根据小数点后的数字数量 进行规范化处理,将产生错误 129(ERR_INVALID_PRICE)。如果要求的开盘价完全过期,将产生独立于滑点 参数的错误 138(ERR_REQUOTE)。如果要求的价格已经过期,但存在于线程中,那么将以当前价格开仓,而且只有当前价格位于价格+ 滑点的范围内。
止损和止盈水平不能离市场太近。可以使用MarketInfo() 函数和MODE_STOPLEVEL参数获得以点为单位的止损位的最小距离。如果出现错误的或不正常的停止水平,将产生错误 130(ERR_INVALID_STOPS)。
在下达挂单时,开盘价不能离市场太近。待定价格与当前市场价格的最小距离(以点为单位)可以通过MarketInfo() 函数中的MODE_STOPLEVEL参数获得。如果挂单的开盘价是假的,将产生错误 130(ERR_INVALID_STOPS)。
在一些交易服务器中,挂单到期时间的应用可以被禁用。在这种情况下,当在到期 参数中指定一个非零值时,将产生错误 147(ERR_TRADE_EXPIRATION_DENIED)。
在一些交易服务器上,未结订单和挂单的总量 可能受到限制。如果超过了这个限制,将不会有新的头寸被打开(或没有挂单被放置),交易服务器将返回错误 148(ERR_TRADE_TOO_MANY_ORDERS)。
//----输入参数
外来的int period=16。
外来的int porog=50。
外来的双倍lot=1。
外部的inttern k=5000。
外部的bool pl=true。
//+------------------------------------------------------------------+
//|专家初始化功能 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
double bs=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,0,0),Digits)。
double ss=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,1,0),Digits)。
double tpb=NormalizeDouble(bs+(bs-ss),Digits)。
double tps=NormalizeDouble(ss-(bs-ss),Digits)。
if(pl==true)double lots=MathMin(AccountFreeMargin()/k,5);
如果(pl==false)lot=lot。
如果(OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);//打开购买限制。
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);//打开销售止损。
}
如果(OrdersTotal()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//选择最近的订单。
如果(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red)。
如果(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(), ss,bs,tps,0,Blue)。
如果(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red) 。
如果(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red) 。
OrderSelect(1,SELECT_BY_POS,MODE_TRADES)。
如果(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red)。
如果(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(), ss,bs,tps,0,Blue)。
如果(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red) 。
如果(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red) 。
}
如果(OrdersTotal()==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES)。
如果(OrderType()==OP_BUY) {OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue); }
如果(OrderType()==OP_SELL) {OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red) ;}
如果(OrderType()==OP_BUYSTOP) {OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue); }
如果(OrderType()==OP_SELLSTOP){OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red) ;}
}
return(0);
}
//+------------------------------------------------------------------+