[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 282 1...275276277278279280281282283284285286287288289...652 新评论 [删除] 2011.10.21 14:31 #2811 你能告诉我是哪一个吗?我只有两个。MACD和移动平均线。 [删除] 2011.10.21 14:42 #2812 请帮助一个初学者。如何写这个代码部分。 检查市场订单,如果我们的金融工具没有市场订单,我们就买下它? 我们还需要一个代码行来重新安排移动止损,使其与真实价格相差500点。 帮助!!!。 还有,距离是多少(从哪里,具体到哪里)? //+------------------------------------------------------------------+ //| MACD Sample.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ extern double TakeProfit = 50; extern double Lots = 0.1; extern double TrailingStop = 30; extern double MACDOpenLevel=3; extern double MACDCloseLevel=2; extern double MATrendPeriod=26; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double MacdCurrent, MacdPrevious, SignalCurrent; double SignalPrevious, MaCurrent, MaPrevious; int cnt, ticket, total; // initial data checks // it is important to make sure that the expert works with a normal // chart and the user did not make any mistakes setting external // variables (Lots, StopLoss, TakeProfit, // TrailingStop) in our case, we check TakeProfit // on a chart of less than 100 bars if(Bars<100) { Print("bars less than 100"); return(0); } if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } // to simplify the coding and speed up access // data are put into internal variables MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,26,9,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); total=OrdersTotal(); if(total<1) { // no opened orders identified if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } // check for long position (BUY) possibility if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } // check for short position (SELL) possibility if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } // it is important to enter the market correctly, // but it is more important to exit it correctly... for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==Symbol()) // check for symbol { if(OrderType()==OP_BUY) // long position is opened { // should it be closed? if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } } else // go to short position { // should it be closed? if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } // the end. 好吧,这简直是无稽之谈!如果有任何订单:无论是挂单还是市价,而且是任何金融工具的订单,都不会在这个代码中打开。 total=OrdersTotal(); if(total<1) 我们可以看到,如果有少于一个订单,它将被执行。还是我错了? ZZZEROXXX 2011.10.21 18:11 #2813 从移动平均线,采取CalculateCurrentOrders(Symbol()),它返回的值=未结订单的数量,按符号和魔法过滤,符号=交易方向:例如-1意味着1个订单在出售。如果需要,可以使用MathAbs()来忽略符号。 从上面的代码来看,采取追踪止损。 //检查跟踪止损--在这里,甚至还有评论。 如果(TrailingStop>0) { ...},它是在2个地方--用于购买和销售。一切都很简单。或者,你可以使用Igor Kim的现成函数,这里有一种特殊的颜色。它们对于真实的交易来说更加普遍和正确,但对于初学者来说也更难理解。如果你对新版本有信心,你会得到一个更好的交易机器人。 p.s. 对于调试,使用Print(),它有很大的帮助。 Вячеслав 2011.10.22 07:05 #2814 rusa: 我想请你自己在专家顾问中插入这个功能。在图片上,你可以看到在一个柱子上有3个订单被打开。我不知道如何订购我的外汇机器人,我不想重写它们。开始了解你的代码。我很惊讶。你所附的东西不能工作。我可以看到,它是由碎片组装而成的,但至少应该正确放置括号,应该定义变量。而信号--不清楚,是什么意思,例如,"rsi>30"--指标RSI值,还是其他什么?Trade_BUY()函数被附在函数start...等。 要么给我完整的工作代码(开单),要么填写信号、跟踪等的TOR,这样我从头开始写会更容易。 Александр 2011.10.22 08:05 #2815 nuan: 您是否有详细说明,如何下载MICEX两年的报价,例如卢克石油公司的报价。 如何进一步正确地转换它们并在MT4中打开它们,如果有链接,请给出链接,如何做到这一点。 P.S. 预先感谢。 这里是几年来的曼巴http://zalil.ru/31909547 Александр 2011.10.22 08:18 #2816 kolyango:请帮助一个初学者。如何写这个代码部分。检查市场订单,如果我们的金融工具没有市场订单,我们就买下它?我们还需要一个代码行来重新安排移动止损,使其与真实价格相差500点。帮助!!!。还有,距离是多少(从哪里,具体到哪里)?好吧,这简直是无稽之谈!如果有任何订单:挂单或市价,而且是任何金融工具的订单,都不会在这个代码中打开。我们可以看到,如果有少于一个订单,它将被执行。还是我错了? 或者是你错了? for (int i = 0; i < OrdersTotal(); i++) { OrderSelect(i,SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == .pair) { if(OrderType() == OP_BUY || OrderType() == OP_SELL) { OrderSend(Symbol(), OP_BUY, ....... } } } [删除] 2011.10.22 08:58 #2817 我需要一些帮助。 一个普通的移动平均线 指标,当该线向下突破时,就会出现买入(上升)或卖出(下降)信号。 有没有人有图形对象的完成代码,能不能贴出来!? 谢谢。 ZZZEROXXX 2011.10.22 09:16 #2818 这些都在数据库中 [删除] 2011.10.22 09:39 #2819 ZZZEROXXX: 这些都在数据库中。 如果能提供一个链接就更好了。 Shniperson 2011.10.22 14:40 #2820 你好!你能告诉我如何 "循环 "检查上/下栏吗? 也就是说,我怎样才能把这种情况描述得 "更短"? Close[0]>Open[0]&& Close[1]>Open[1]&& Close[2]>Open[2]&& Close[3]>Open[3] &&& Close[4]>Open[4]&& Close[5]>Open[5]&& Close[6]>Open[6]&& Close[7]>Open[7] 提前感谢。 1...275276277278279280281282283284285286287288289...652 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
请帮助一个初学者。如何写这个代码部分。
检查市场订单,如果我们的金融工具没有市场订单,我们就买下它?
我们还需要一个代码行来重新安排移动止损,使其与真实价格相差500点。
帮助!!!。
还有,距离是多少(从哪里,具体到哪里)?
好吧,这简直是无稽之谈!如果有任何订单:无论是挂单还是市价,而且是任何金融工具的订单,都不会在这个代码中打开。
我们可以看到,如果有少于一个订单,它将被执行。还是我错了?
从移动平均线,采取CalculateCurrentOrders(Symbol()),它返回的值=未结订单的数量,按符号和魔法过滤,符号=交易方向:例如-1意味着1个订单在出售。如果需要,可以使用MathAbs()来忽略符号。
从上面的代码来看,采取追踪止损。
//检查跟踪止损--在这里,甚至还有评论。
如果(TrailingStop>0) { ...},它是在2个地方--用于购买和销售。一切都很简单。或者,你可以使用Igor Kim的现成函数,这里有一种特殊的颜色。它们对于真实的交易来说更加普遍和正确,但对于初学者来说也更难理解。如果你对新版本有信心,你会得到一个更好的交易机器人。
p.s. 对于调试,使用Print(),它有很大的帮助。
开始了解你的代码。我很惊讶。你所附的东西不能工作。我可以看到,它是由碎片组装而成的,但至少应该正确放置括号,应该定义变量。而信号--不清楚,是什么意思,例如,"rsi>30"--指标RSI值,还是其他什么?Trade_BUY()函数被附在函数start...等。
要么给我完整的工作代码(开单),要么填写信号、跟踪等的TOR,这样我从头开始写会更容易。
您是否有详细说明,如何下载MICEX两年的报价,例如卢克石油公司的报价。
如何进一步正确地转换它们并在MT4中打开它们,如果有链接,请给出链接,如何做到这一点。
P.S. 预先感谢。
这里是几年来的曼巴
请帮助一个初学者。如何写这个代码部分。
检查市场订单,如果我们的金融工具没有市场订单,我们就买下它?
我们还需要一个代码行来重新安排移动止损,使其与真实价格相差500点。
帮助!!!。
还有,距离是多少(从哪里,具体到哪里)?
好吧,这简直是无稽之谈!如果有任何订单:挂单或市价,而且是任何金融工具的订单,都不会在这个代码中打开。
我们可以看到,如果有少于一个订单,它将被执行。还是我错了?
或者是你错了?
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == .pair)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
OrderSend(Symbol(), OP_BUY, .......
}
}
}
我需要一些帮助。
一个普通的移动平均线 指标,当该线向下突破时,就会出现买入(上升)或卖出(下降)信号。
有没有人有图形对象的完成代码,能不能贴出来!?
谢谢。
这些都在数据库中。
你好!你能告诉我如何 "循环 "检查上/下栏吗? 也就是说,我怎样才能把这种情况描述得 "更短"?
Close[0]>Open[0]&& Close[1]>Open[1]&& Close[2]>Open[2]&& Close[3]>Open[3] &&& Close[4]>Open[4]&& Close[5]>Open[5]&& Close[6]>Open[6]&& Close[7]>Open[7]
提前感谢。