一个顾问,会在发射后在五分钟的图表上跟随汇率的情况。 - 页 7 1234567891011121314 新评论 igor 2008.03.20 17:06 #61 int start() { if(OrdersTotal() !=0) return; //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //The price has dropped more than Delta points Alexander Sevastyanov 2008.03.20 17:22 #62 zhuki: if(OrdersTotal ()!=0) 返回。 那么其他人的命令(对其他符号和魔术师)呢?在测试器中,它将工作,但如果账户上除了这个EA外还有其他东西,正确的方法如下 bool NmbrOfOpened(int Magic){ int _OrdersTotal=OrdersTotal(); if (_OrdersTotal>0) { for (int i=0; i<_OrdersTotal; i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==Magic && OrderSymbol()==Symbol()) { return(true); break; } } } else return(false); return(false); } 如果当前的符号没有与指定的(传给它的)魔术师打开的位置,该函数将返回错误。 igor 2008.03.20 17:32 #63 你要误导那个人,而他又看不懂描述。 想象一下,他将是多么的困惑,这就是为什么我以这样的方式来写,让他更好地理解它。 Aleksandr 2008.03.20 19:02 #64 非常好,我正在掌握它的窍门:)) 两个案子都赶上了,非常感谢。 Aleksandr 2008.03.20 19:08 #65 只有专家顾问,我仍然不明白Delta函数是如何工作的 在我的条件下,交易没有被触发 Delta=30 这意味着我希望我的专家顾问开仓+-30个点。但它的开盘价是上下5-10个点,这并不清楚.... Aleksandr 2008.03.23 09:42 #66 真的,Delta函数就是不知道它是如何工作的 :( 也许有一些其他简单的解决方案? 我发现了一个函数 Distance=30 //从 当前价格到挂单 价格的距离 它不仅可以在挂单中实现吗? 这个想法是一样的:跟踪当前的交易栏,它的开盘价,如果在一个5分钟的交易栏中,它的价格将增加或减少,比如说,从该5分钟交易栏的开盘价中增加或减少30个点,只有在这时才开一个仓位...... 我的策略在挂单时不工作..... Rid 2008.03.23 10:47 #67 而你会在这里发布你的整个代码。看看为什么达美航空不工作了...... Aleksandr 2008.03.23 12:07 #68 //+------------------------------------------------------------------+ //| Expert-000001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" #include <WinUser32.mqh> #include <stdlib.mqh> extern double StopLoss=30; // Stop Loss extern double TakeProfit=3; // Take Profit extern double Lots=0.5; // Объем сделки в % extern double Slippage =3; // Максимальное отклонение от запрошенной цены extern double MagicNumber=0; // Order ID int ticket; int Delta=30; // Сигнал приказа в пунктах int TimeForSleep = 10; // Время для отдыха после сделки //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(OrdersTotal()!=0) return; //Выполнять только одну сделку. //---- if (iOpen(NULL,0,0)-Ask>=Delta*Point) //Цена упала больше или = Delta пунктов //Null-тек инструмент, 0-тек.график, 0-слежка за тек баром { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green); } if (iOpen(NULL,0,0)-Bid<=Delta*Point) //Цена выросла больше или = Delta пунктов { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green); } //---- return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ 以下是整个代码..... Rid 2008.03.23 12:25 #69 是的,确实如此。Delta.... 不起作用 显然,这里有必要用三角洲的标志(极性)来理解在买入和卖出时,在上面的代码中 "为",例如,在买入值(iOpen(NULL,0,0)-Ask所有时间将是负的。而交易是在条形图的开盘价开的(iOpen(NULL,0,0)-Ask>=Delta... 如果你这样尝试(购买)- if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов Aleksandr 2008.03.23 12:48 #70 即最终我们需要测试这个变体: int start() { if(OrdersTotal()!=0) return; //只关注一个交易。 //---- if (Bid - iOpen(NULL,0,0)<=Delta*Point) //价格下跌少于或=Delta点 //无技术工具,0-技术.图表,0-跟踪文本条 { ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Buy",MagicNumber, 11111,Green); } if (Ask - iOpen(NULL,0,0)>=Delta*Point) //价格上涨超过或=Delta点 { ticket=OrderSend(Symbol(,OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,2222,Green); } //---- return(0); } 我猜得没错吧,还是我把行中的Ask和Bid搞混了: if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов An advisor that would [WARNING CLOSED!] Any newbie [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 1234567891011121314 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
{
if(OrdersTotal() !=0) return;
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //The price has dropped more than Delta points
if(OrdersTotal ()!=0) 返回。
那么其他人的命令(对其他符号和魔术师)呢?在测试器中,它将工作,但如果账户上除了这个EA外还有其他东西,正确的方法如下
如果当前的符号没有与指定的(传给它的)魔术师打开的位置,该函数将返回错误。
想象一下,他将是多么的困惑,这就是为什么我以这样的方式来写,让他更好地理解它。
两个案子都赶上了,非常感谢。
在我的条件下,交易没有被触发
Delta=30
这意味着我希望我的专家顾问开仓+-30个点。但它的开盘价是上下5-10个点,这并不清楚....
也许有一些其他简单的解决方案?
我发现了一个函数
Distance=30 //从 当前价格到挂单 价格的距离
它不仅可以在挂单中实现吗?
这个想法是一样的:跟踪当前的交易栏,它的开盘价,如果在一个5分钟的交易栏中,它的价格将增加或减少,比如说,从该5分钟交易栏的开盘价中增加或减少30个点,只有在这时才开一个仓位......
我的策略在挂单时不工作.....
而你会在这里发布你的整个代码。看看为什么达美航空不工作了......
以下是整个代码.....
是的,确实如此。Delta.... 不起作用
显然,这里有必要用三角洲的标志(极性)来理解在买入和卖出时,在上面的代码中 "为",例如,在买入值(iOpen(NULL,0,0)-Ask所有时间将是负的。而交易是在条形图的开盘价开的(iOpen(NULL,0,0)-Ask>=Delta...
如果你这样尝试(购买)-
{
if(OrdersTotal()!=0) return; //只关注一个交易。
//----
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //价格下跌少于或=Delta点
//无技术工具,0-技术.图表,0-跟踪文本条
{
ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Buy",MagicNumber, 11111,Green);
}
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //价格上涨超过或=Delta点
{
ticket=OrderSend(Symbol(,OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,2222,Green);
}
//----
return(0);
}