任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 313

 


我喜欢批评,但有很多--只是在第一段上有一点儿

档案没有扣好((我现在把它上传到一个文件共享网站

 
VladislavVG:

如果这 总是最近的 那么它可以很简单,当然不需要魔术师。但我们没有从PGM5 中听到任何关于这一点的消息,在一般情况下,可能不是最近的 订单,而是离当前价格更远的订单,在这之间的订单可能是由于其他原因而下的:我们不知道任何关于决策算法的信息。我们只是在谈论相关的订单。
出于某种原因,我心里想,最近的那个应该被移走。其他的都在更远的地方,在不同的条件下开放。由于最近的挂单与市场上的挂单相反,我们有所有的数据可以正确找到它。
 
PGM5:
谢谢你的支持。你能告诉我在哪里可以找到这个问题的答案吗?是的,还有一件事:当订单被触发和止盈被触发时,应该设置订单,在这之前应该删除最近的一个订单。 提前感谢。

你已经开始写TOR了。你甚至已经开始做一些事情了吗?还是在等待鱼的到来?在这个主题中,他们帮助那些想免费学习mql4编程的人,而不是那些想获得免费现成解决方案的人。
 
43
alexey1979621 29.11.2013 11:52#

向大家问好!我正在寻求帮助,以解决一个有趣的问题。有一个EA,其特点是在获得利润后,从1到4的下一个交易都以止损方式关闭,然后再获利。 专家顾问根据指标信号开启交易。为了排除获利后的盈利交易,应该跳过指标产生的信号,即在获得利润后不关闭交易(1、2、3、4)。Sig功能可用于此目的。然而,我认为我写错了这个函数,因为EA根本没有用它开单,没有它一切都运行得很清楚。也许条件中也有一个错误。一般来说,....我不知道这到底是什么,我已经有两个星期没能走出这个 "困境 "了。聪明的人们,你们能否告诉我,错误在哪里?

是的,signal是盈利后的信号数,pynkt是盈利的大小,单位是点。

如果有任何帮助,我将不胜感激。

void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);


   double MA1Low = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,0,1), Digits); 
   double MA2High = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,1,1), Digits);
   
 
  
   if(Volume[0]>1) return;

    // продажа
   if (Open[1]>Close[1] && Open[1] > MA1Low && Close[1] < MA1Low)
   
{
      if(Pro(1,100))

   {
       ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",1000,0,Red);
      return;
    }
   
  }  
//---- buy conditions
   // покупка
  if (Open[1]<Close[1] && Open[1] < MA2High && Close[1] > MA2High)
 
 { 
   if(Pro(1,100))
   {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"Pattern_1",1000,0,Blue);
      return;
   }       
   }
}
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Sig(int signal,int pynkt)
 {
  static int cnt = 0;
  static datetime tm;
  if(Time[0] == tm) return(false);
  tm = Time[0];
  if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) == true)
   {
    cnt = cnt + 1;
    if(OrderType() == OP_BUY && OrderClosePrice() - OrderOpenPrice() < pynkt*Point) cnt = 0;
    if(OrderType() == OP_SELL && OrderOpenPrice() - OrderClosePrice() < pynkt*Point) cnt = 0;
    if(cnt >= signal) return(true);
   }
  return(false);
 }
//+------------------------------------------------------------------+
 
artmedia70:
你开始写ToR了。你甚至已经开始自己做什么了吗?还是在等待鱼的到来?在这个主题中,他们帮助那些想免费学习mql4编程的人,而不是那些想获得免费现成解决方案的人。



你好。我是一个编程的初学者。我只用过论坛和一个教程来学习。起初我什么都明白,但当我讲到一般功能时,我开始误解一些东西,顺便说一下,在通信过程中,我学到了一些东西......。我从那里取来了脚本,从那里取来了脚本,并在论坛上的一些东西下划线。 我在演示中试了一下--它显示了利润,但脚本很简单:订单并不总是被放置,一个漏掉的订单会导致系统失败。我在真实账户上试了一下:所有订单都下了(但这次没有缺口),带来了利润,但开了很多不必要的头寸。我意识到,简单的脚本和函数不能解决这个问题,于是请求帮助。专家顾问是有利可图的,但它的手需要一些 "帮助"。我正在考虑及时将这种 "帮助 "自动化。
 
alexey1979621:
43
alexey1979621 29.11.2013 11:52#

向大家问好!我正在寻求帮助,以解决一个有趣的问题。有一个EA,其特点是在获得利润后,从1到4的下一个交易都是以止损方式关闭,然后再获利。 专家顾问根据指标信号开启交易。为了排除获利后的盈利交易,应该跳过指标产生的信号,即在获得利润后不关闭交易(1、2、3、4)。Sig功能可用于此目的。然而,我认为我写错了这个函数,因为EA根本没有用它开单,没有它,一切工作都很清楚。也许条件中也有一个错误。一般来说,....我不知道这到底是什么,我已经两个星期没能解决这个堵塞问题了。聪明的人们,你们能否告诉我,错误在哪里?

是的,signal是盈利后的信号数,pynkt是盈利的大小,单位是点。

如果有任何帮助,我将不胜感激。


函数Sig()在没有订单历史的情况下禁止开仓交易(返回false)。
 
Vinin:

如果没有订单历史,函数Sig()禁止打开交易(返回false)。
我以为测试器中的历史是模拟的(所以我错了)。看来我们应该通过simul、滑块和丢弃未决订单来执行最后一个订单的搜索功能。我的大脑能理解它(如果我的思考方向正确的话),但我不能用自己的手去执行代码。你能给我一个提示吗?谢谢你的帮助。
 
alexey1979621:
我以为测试器中的历史是模拟的(所以我错了)。事实证明,有必要做一个函数来搜索最后一个订单,通过simul,medj,并丢弃待定的。我的大脑能理解它(如果我的思考方向正确的话),但我不能用自己的手去执行代码。你能给我一个提示吗?谢谢你的帮助。
你的所有提示!
文件 教程

和功能。

GetIndexLastPos - 返回最后开仓的索引或-1
GetLotLastPos - 返回最后开仓的手数或-1

还有许多其他非常有用的东西!