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

 

问题是这些票据不止一张。也许是4张,我还不清楚。这就是为什么我创建了一个带有票据编号和其他信息的类,这些信息不被orderselect存储。所以我想对票据进行访问。但到目前为止,我只能创建类对象并将其放入CarrayObj,然后获得索引,比较票据并进一步分析。但我已经解决了,谢谢。 我在其他地方责怪自己。先生们evilliveAlexeyVik-- 感谢你们的及时回复!

 
你好!请写出为什么在策略测试器中 没有打开交易,在日志中写出错误:(2015.07.13 00:22:39.218 TestGenerator: unmatched data error (high value 1.31150 at 2013.07.11 05:00 is not reached from lowest timeframe, high price 1.31140 mismatches) quotes updated.下面是专家顾问的代码。
int ticket;
int init;

int start()
{

int bars0;
int bars1;
int bars2;
int bars3;
int   stoploss=50; 
int   takeprofit=30;
int       slipage=2;

//-------------------------------------------------------------------+
  
  if ( OrdersTotal()<1 &&  Open[bars0]<Close[bars0] && Open[bars1]<Close[bars1] )
      if (  Open[bars2]>Close[bars2]&& Open[bars3]>Close[bars3] )
      if(V1()==true) 
     
       ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,slipage,Ask-stoploss*Point,Ask+takeprofit*Point,"",123,0,Red);
     
//-------------------------------------------------------------------+ 
    if ( OrdersTotal()<1 &&  Open[bars0]>Close[bars0] && Open[bars1]>Close[bars1]&& Open[bars2]<Close[bars2])
     if (  Open[bars2]<Close[bars2]&& Open[bars3]<Close[bars3] )
      if(V2()==true) 
     
       ticket = OrderSend(Symbol(),OP_SELL,0.1,Bid,slipage,Bid+stoploss*Point,Bid-takeprofit*Point,"",123,0,Red);
      
    
         
//-------------------------------------------------------------------+                    
 return;}
//+------------------------------------------------------------------+
bool V1( ){
  int      i, k=OrdersTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
     if (OrderType()==OP_BUY) {
      return(false);
   }
  }    
 }
 return(true); 
}

bool V2( ){
  int      i, k=OrdersTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
     if(OrderType()==OP_SELL) {
      return(false);
   }
  }
 }
 return(true); 
}

)
 
rylay:
你好!请写出为什么在策略测试器不打开交易,写在日志中的错误:(2015.07.13 00:22:39.218 TestGenerator: unmatched data error (high value 1.31150 at 2013.07.11 05:00 is not reached from lowest timeframe, high price 1.31140 mismatches) quotes updated.下面是专家顾问的代码。
)

关于提到的测试人员的错误,在测试蜱虫时总是会出现这种情况。MT4的报价历史并不完美,总是存在不匹配的情况。

代码中充满了错误。变量没有被初始化,启动函数不了解它的返回内容,没有检查交易函数的执行情况,所以请修复它。

在代码的开头添加#property strict。

既然我们已经创建了两个函数来定义订单类型,为什么不把每种类型的订单的计数器整合起来,写成if( OrdersBuy<1...)、if( OrdersSell<1...),而不是比较if( OrdersTotal()<1...)?这将是更正确的。

 

请告诉我们如何在一个柱子的条件下只开一个交易,如果交易发生在柱子内,但在关闭的时候,开仓信号立即出现在同一个柱子上。

换句话说 - 酒吧给出了一个信号,可以开出一个订单。它被打开并触发了一个简短的拍摄。交易已经关闭,但EA关闭了第一个交易,并立即以完全相同的订单打开了第二个交易,因为我们仍然有条件在同一栏内打开它。我需要在一个柱子上只开一个头寸。而为了开启下一笔交易,我们应该等待另一个柱状体的开启。

 
Poinson:

请告诉我们如何在一个柱子的条件下只开一个交易,如果交易发生在柱子内,但在关闭的时候,开仓信号立即出现在同一个柱子上。

换句话说 - 酒吧给出了一个信号,可以开出一个订单。它被打开并触发了一个简短的拍摄。交易已经关闭,但EA关闭了第一笔交易,并立即以完全相同的订单打开第二笔交易,因为我们仍然有条件在同一栏内打开它。我需要在一个柱子上只开一个头寸。而我们则等待另一个条形图的打开,以开启下一个交易。

_already open = false。

如果(isNewBar()){ _already opened = false;}。

如果(!OrderSend(...)){ /* 错误处理 */; }else { _already opened = true; }

isNewBar() - 标准的,就像在文章中一样,使用静态数据时间date = Time[0]。

if (_already opened) { return; //does not send the warrant }。

 
evillive:

关于提到的测试人员的错误,在测试蜱虫时总是会出现这种情况。MT4的报价历史是不完美的,总是有不匹配的情况。

代码中充满了错误。变量没有被初始化,启动函数不了解它的返回内容,没有检查交易函数的执行情况,所以请修复它。

在代码的开头添加#property strict

既然我们已经创建了两个函数来定义订单类型,为什么不把每种类型的订单的计数器整合起来,写成if( OrdersBuy<1...)、if( OrdersSell<1...),而不是比较if( OrdersTotal()<1...)?这将是更正确的。

谢谢你。我会纠正它。只是,当有一个条件。
if ( OrdersTotal()<1 &&  Open[bars0]<Close[bars0]
   ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,slipage,Ask-stoploss*Point,Ask+takeprofit*Point,"",123,0,Red);
它只是工作不正常,所以我问。
 
danik:

bool _already opened = false。

如果(isNewBar()){ _already opened = false;}。

如果(!OrderSend(...)){ /* 错误处理 */; }else { _already opened = true; }

isNewBar() - 标准的,就像在文章中一样,使用静态数据时间date = Time[0]。

if (_already opened) { return; //don't send the warrant }。

它说'isNewBar' -函数 未定义 2015

我并不是一个真正的巫师。如果你可以的话,我想得到一份准确的复制和粘贴。

 
Poinson:

它说'isNewBar' - 函数未定义 2015

我不是一个真正的工匠。如果可能的话,我想得到一份准确的复制和粘贴。

如果是新条形,你可以复制和粘贴函数isNewBar(),也许你会得到它,它并不复杂--它比较新条形的开盘时间(指数为0,即最后一个条形),如果它比以前多,意味着新条形刚刚出现,如果它已经出现,意味着你可以打开一个新交易,如果你有其他条件的话
 
Poinson:

它说'isNewBar' - 函数未定义 2015

我不是一个真正的工匠。如果可能的话,我想得到一份准确的复制和粘贴。

是的,在kodobase的任何顾问中都能找到它!

//в старте перед условиями входа:
      if(NewBar() == true)
      { 
//----------------------
  return(0);
}
// и вне старта:
//----------------------------//  NewBar  \\----------------------------\\
bool NewBar() 
{
  static datetime lastbar = 0;
  datetime curbar = iTime(NULL,15,0);
  if(lastbar != curbar) 
  {
    lastbar = curbar;
    return(true);
  }
  else return(false);
} 
 
borilunad:

任何一个议员在kodobase中都能找到它!。

谢谢))。最强大的只是!一切都从第一次开始工作。

谢谢大家!