[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 662

 
drknn:


正确,因为第一个参数返回一个数字,第二个参数是一个可接受范围内的整数值。整个问题是究竟什么会进入变量。试着按原样打印,并尝试这种结构。

这很有趣...像这样做了。

int Trend_BBOsMA (string sy, int tf)
{
   if (sy=="" || sy=="0") sy=Symbol();
double
   BB    =iCustom(sy,tf,"BB_MA",13,13,0,1),
   OsMA  =iOsMA  (sy,tf,9,21,5,PRICE_CLOSE,1),
   AC1   =NormalizeDouble(iAC(sy,tf,1),8),
   AC2   =NormalizeDouble(iAC(sy,tf,2),8),
   AC3   =NormalizeDouble(iAC(sy,tf,3),8);
   
   Comment("\n","AC1 = ",AC1," AC2=",AC2);
   string str1=AC1;
   Print("str1 = ",str1);
   string str2=AC2;
   Print("str2 = ",str2);
   
   if (BB>0 && OsMA>0 && AC1>AC2) return(1);
   if (BB<0 && OsMA<0 && AC1<AC2) return(-1);
   else return(0);
}
评论显示

as1 = 0.001 as2 = 0.001。

数据窗口,AC1 = 0.001008,AC2 = 0.001020。

并在日志中说(最后两个值)。

0.00100029
0.00100771

 
IgorM:

我不知道如何找到一个函数的极值

我有一个存储数值的数据数组。

如何使用一个由250个元素组成的数据数组找到断裂--极值,并只存储这些极值所在的元素编号


伙计们,这有点复杂 :)
你可以勾勒出一个简单的方法。

//+------------------------------------------------------------------+
void searchExtremums(double base[], double &find[]){
   int step = 1;
   for(int loop = 0; loop < ArraySize(base)-2; loop++){
      if((base[loop] > base[loop+1] && base[loop+1] < base[loop+2]) || (base[loop] < base[loop+1] && base[loop+1] > base[loop+2])){
         ArrayResize(find, step);
         find[step - 1] = base[loop+1];
         step++;
      }
   }   
}
//+------------------------------------------------------------------+

你传递你想找到极值的数组(base)和要把它们写入的数组(find),这是一个调用Vladimir数组的例子。

double res[];
searchExtremum(my_array, res);

而我们向你展示了结果。

for(int s = 0; s < ArraySize(res); s++)Alert(res[s])
这样似乎更容易些 :)
 
ToLik_SRGV:


这似乎更简单 :)


好的,我今天会试着检查一下,可能会更简单,但我脑子里的组合不对。

空白搜索Extremums(double base[], double & find[]){

我现在需要检查这样的函数

 
IgorM:

好的,我今天会试着检查一下,可能会更简单,但我脑子里的组合不对。

空白搜索Extremums(double base[], double & find[]){

现在我需要检查这样的功能

伊戈尔,我已经在这个主题中写了这个问题:)))

当你将一个变量通过其参数传递给一个函数时,该变量是按值传递的,这意味着在函数本身中改变变量不会导致它被覆盖。
尝试通过引用来传递,在参数名前插入"&"。

void simple(string &s){
//                 ^
//       спец сим. & перед именем переменной задает передачу по ссылке, а не по значению
//
}
 
Mathemat:

Volfram 的帖子因在几个主题中传播而被删除。

沃尔弗拉姆,你已经专门为此目的创建了自己的主题。你已经得到了回答;这还不够吗?

P.S. 让我告诉你一个秘密,沃尔弗拉姆:人们对你的想法没有明显的兴趣,这隐含着这个想法不值得关注。因此,没有人愿意 "有偿 "实施它。

你取消了电子邮件通知选项,是吗?

没有它,你怎么知道某人是否有回复?你什么时候能把它拿回来?

 
artmedia70:

这很有趣...我这样做了。

评论同时显示

as1 = 0.001 as2 = 0.001。

在数据窗口AC1 = 0.001008,AC2 = 0.001020。

并在日志中说(最后两个值)。

0.00100029
0.00100771


这可能取决于开发商;)
 
artmedia70:

这很有趣...我这样做了。

评论同时显示

as1 = 0.001 as2 = 0.001。

在数据窗口AC1 = 0.001008,AC2 = 0.001020。

并在日志中说(最后两个值)。

0.00100029
0.00100771

我也试了一下,一切似乎都很好,在评论中。
AC = -0.0004,在杂志上 -0.00035586
AC2 = -0.0007, journals -0.00068589
 
ToLik_SRGV:
我也试了一下,一切似乎都很好,在评论中: AC = -0.0004,在杂志中 -0.00035586 AC2 = -0.0007,在杂志中 -0.00068589


Comment()似乎在内部对数值进行了四舍五入...在视觉测试 中,有时在屏幕上看到它们是多么方便......然而,不完全是...:)

是的,而且,顺便说一下,在这里,在一个关于正常化的论坛上,从几个小时到早上7.30读到了这样的内容......
归一化应尽可能在接近比较操作时进行...因此,我认为我应该改变一些功能和代码中的一些东西...然后测试会显示出差异...

 
artmedia70:

Comment()似乎在内部对数值进行了四舍五入...在视觉测试中,有时在屏幕上看到它们是多么方便......然而,不完全是...:)

当我在编写大量的管理功能时,我不得不在Delphi中制作一个dll-library,因为我需要的任务用MQL4是不可能解决的。
 

你好!请你向我这个在MQL4方面的超级傻瓜解释一下,正确的做法是什么。我正在写我的第一个EA。我下了一个SellStop订单,在它被触发后,又下了BuyStop订单。我想我需要使用OrdeCloseTime。我已经尝试了很多变体,但EA只在OrdeCloseTime==0时看到订单。在关闭SellStop后,SellStop再次被打开。我提供给你的是代码。在这个变体中,SellStop和BuyStop是同时打开的。请帮助我。预先感谢你。

int I = 0。

int start()

{

如果(I < 1)

{

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,OP_SS,Slippage,SL,CP_SS)。

如果(ticket>0)

{ Alert("OrderSend"," ",ticket); }else { Alert("!OrderSend","",GetLastError(); }

//--------------------------------------------------------------------------

如果(OrderSelect(ticket,SELECT_BY_TICKET)==true)

{ Alert("OrderSelect", ",ticket); } }else { Alert("!OrderSelect"," ",GetLastError(); }

//--------------------------------------------------------------------------

OrderSend(Symbol(),OP_BUYSTOP,Lot,OP_BS,Slippage,SL,CP_BS) 。

}

I=1;

}

返回(0)。

//--------------------------------------------------------------------------