[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 419

 
melnikas:

我的案子有这么难吗?

double ExtVolumesBuffer[];

你对位置的看法是正确的。你应该在使用前指定数组的大小。或使其成为另一个缓冲区

 
//+------------------------------------------------------------------+
int deinit()
  {    
  return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
  f1(); //Как сделать, что-бы после вызова функции, программа могла остановиться?
  Alert("Есть сигнал"); // И до этого места работа программы бы не дошла
  return(0);
  }
//+------------------------------------------------------------------+  
  int f1()
    {
    return(f2());
    }
//+------------------------------------------------------------------+    
  int f2()
    {  
    return(deinit()); //Тут, по задумке, нужно остановить работу всей программы
    }
//+------------------------------------------------------------------+  
或者,从一个被调用的函数,程序的运行不能被停止?(指标中使用的代码示例)
 
fore-x:
或者,从一个被调用的函数,程序不能被停止?(代码示例,将在指标中使用)
return(deinit());

你说的停止是什么意思? 将EA/指标从图表中删除?


关于deinit()。

对deinit的调用并不导致指标/指示器的停用,但停用会导致对deinit的调用

 
ilunga:

你说的停止是什么意思? 将EA/指标从图表中删除?


关于deinit()。

不是调用deinit导致指标/专家被禁用,而是禁用导致deinit被调用。

停止是指停止执行起始函数--从被调用函数 开始。像return(0)。

关于deinit,我知道它,这就是为什么我不知道如何解决这个难题。显然,你不能这样做。

 
fore-x:

停止是指停止执行起始函数--从被调用函数开始。像return(0)。

关于deinit,我知道,这就是为什么我不知道如何解决这个难题。显然,你不能这样做。

那么,有什么能阻止你用这个函数返回(-1)或其他东西,并在start()中用检查的方式调用这个函数呢? 比如说,像这样。

int start()
  {
  if (f1() == -1) return (0);
  Alert("Есть сигнал"); // И до этого места работа программы бы не дошла
  return(0);
  }
//+------------------------------------------------------------------+  
  int f1()
    {
if (все плохо) return (-1); else return(0);
    }
 
ilunga:

那么,是什么阻止了你用这个函数返回(-1)或其他东西,并在start()中用检查的方式调用这个函数呢? 例如,像这样。

//+------------------------------------------------------------------+
int start()
  {
  if(f1() < 0) return(0);
  Alert("Есть сигнал"); // И до этого места работа программы бы не дошла
  return(0);
  }
//+------------------------------------------------------------------+  
  int f1()
    {
    return(f2());
    }
//+------------------------------------------------------------------+    
  int f2()
    {  
    return(-1); //Тут, по задумке, нужно остановить работу всей программы
    }
//+------------------------------------------------------------------+  
我理解你,只是想避免代码中不必要的动作,澄清一下。谢谢你的例子!
 
ilunga:

你对位置的看法是正确的。你应该在使用前指定数组的大小。或使其成为另一个缓冲区

非常感谢您!
 


dkfl.zrjdktdbx 09.12.2011 16:56

晚上好,我遇到了交易机器人不平仓的问题,大约50次中有一次,当它达到盈利时。然后它必须关闭所有的东西,包括挂单和所有的东西,并重新设置。不关闭会造成订单混乱和缩减。


所以想象一下,有时会发现一个订单在止盈时关闭,克劳斯价格-订单收盘价-等于零!!!!!

请看下面截图中的第五行,这是第五行,订单在获利时关闭。而在从底部开始的第九行,订单的收盘价等于零!!!!!。

似乎代码中没有特别复杂的东西...我现在就给你看。

当我下订单时,我在wremjapomnim窗口中保存时间。一旦任何订单以当前利润关闭,我就删除所有订单,并再次记住wremjapomnim pyrimen中的时间,并设置它们。

for ( i=OrdersHistoryTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY  );
Alert( "wremjapomnim " ,wremjapomnim, "  OrderCloseTime(        )   ",  OrderCloseTime( ),  " ",i , " OrderTakeProfit( ) " ,OrderTakeProfit( ),
  " OrderClosePrice(    )  ",OrderClosePrice(   ) );
if ( OrderTakeProfit( )==OrderClosePrice(       )&&wremjapomnim<OrderCloseTime( )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<2*Point)
   &&wremjapomnim<OrderCloseTime(       )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)>-2*Point)&&wremjapomnim<OrderCloseTime(       )){C=0;A=1 ;  Alert("C",C,"A",A);
   for ( int ii=OrdersTotal();ii>0;ii--){ OrderSelect(ii-1,SELECT_BY_POS );
   if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()){ 
  OrderDelete(OrderTicket( )) ; Alert ("OrderDelete-vse",  GetLastError( ) ); stsBUY=0;stsSELL=0;
   OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);Alert ("OrderClose-vse",  GetLastError( ) ); C=0; }     }              }
   
                                                      } 
 
警报在代码的第二和第三行,并在日志中写下了所有内容,包括订单49的OrderClosePrice( )等于0的事实。
 

告诉我如何跟踪EA中分形的形成。我需要在一个新的分形体形成后开立一个订单。我不知道这个指标是如何工作的;它有某种上限线 和某种下限线。

例如,如果形成了一个分形,而价格突破了这个最低点,那么分形会不会被重新绘制,还是我只会得到一个更多的分形?

 
你好,请你告诉我如何找到最后一根蜡烛的低点和高点,比如说