KimIV的有用功能 - 页 66

 
borisych писал(а)>>

...

3.这里,回归指的是线性回归方程及其图形。

你问的是回归方程的斜率。我向你表明,它可以用不同的方式计算。如果你想要你在第3点说的东西。你看'来自KimIV的有用函数' 有2种类型的函数,如果你需要高次幂的多项式,那么使用这个算法'随机流理论和FOREX'

 

StrTran()函数。

这个函数替换了一个子串。所有出现的它都被替换。例如,你可以将所有逗号替换为点,或者反之亦然,一举两得。StrSplit()函数返回生成的字符串,并接受以下强制性参数。

  • str- 被替换的子串strFrom 所在的字符串。
  • strFrom- 被替换的子串。如果在字符串str 中找到子串strFrom,它将被子串strTo 替换。
  • strTo- 被替换的子串。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  описание : Замена подстроки                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    str     - текстовая строка, в которой производится замена               |
//|    strFrom - заменяемая подстрока                                          |
//|    strTo   - заменяющая подстрока                                          |
//+----------------------------------------------------------------------------+
string StrTran(string str, string strFrom, string strTo) {
  int    n;
  string strOut="", strTemp;

  for ( n=0; n<StringLen( str); n++) {
    strTemp=StringSubstr( str, n, StringLen( strFrom));
    if ( strTemp== strFrom) {
      strOut=StringConcatenate( strOut, strTo);
      n= n+StringLen( strFrom)-1;
    } else strOut=StringConcatenate( strOut, StringSubstr( str, n, 1));
  }
  return( strOut);
}
 

如何使用StrTran()函数的例子。

  1. 用逗号代替小数点。
    string s=DoubleToStr(Close[1], Digits);
    Print( s);
    s= StrTran( s, ".", ",");
    Print( s);
  2. 移除空间
    string s="1 2 3 4 5 6 7 8";
    Print( s, " ", StrToInteger( s));
    s= StrTran( s, " ", "");
    Print( s, " ", StrToInteger( s));
  3. 词语替换
    string s="листья жёлтые весной";
    Print( s);
    s= StrTran( s, "весной", "осенью");
    Print( s);

例子的执行结果。

附上一个测试StrTran()函数的脚本。

附加的文件:
 

更新了功能列表。

附加的文件:
f_kimiv.rar  12 kb
 
zhuki писал(а)>>
..
如果你允许我建议在任务栏的快捷方式中显示任何东西的功能。
我在工作中用它来监控EA,而不用打开终端(很多人在窥视)。

为了这个目的,我为自己的时间做了一个单独的程序--http://www.miraxem.com/rqids.htm


外汇交易员计算器自动计算当前未结头寸的利润/亏损,以及部分平仓或翻仓的利润/亏损。

12种货币对的实时报价和图表

它在所有窗口的顶部以条形显示,并显示所选货币对的当前报价、盈亏点和带计时器的新闻日历,在重要事件发生前给出信号。

 
KimIV писал(а)>>
啊......。好吧,如果在原则上,你可以使用一个通过引用传递的数组。那么返回的参数数量将受到数组大小的限制。

啊...怎么说呢?

"参数(形式参数)是按值传递的,即每个表达式xl, ...,xn 被计算出来,其值被传递给函数...."
帮助中的例子

int start()
  {
   double some_array[4]={0.3, 1.4, 2.5, 3.6};
   double a= linfunc( some_array, 10.5, 8);
   //...
  }
double linfunc(double x[], double a, double b)
  {
   return ( a* x[0] + b);
  }
而如果你试图将x[0]=999 分配给一个函数,我记得它在编译时就会崩溃。
'x' - 数组项不能被分配

 
KimIV писал(а)>>
[...]
这些是OP_BUY和OP_SELL交易,而订单是OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT和OP_SELLSTOP。我开立头寸,我设置订单。那你是怎么打开的呢?NumberOfOrders() 函数被设计用来处理订单。

事实上,这不应该有什么区别。
该函数比较了ot=OrderType
();

OrderType()
"返回当前选定订单的操作类型。它可以是以下值之一:
OP_BUY - 买入头寸,
OP_SELL - 卖出头寸,
...

 
diakin писал(а)>>
啊...怎么说呢?

我的意思是以下字面意思。

void start()
{
  double some_array[];
  string st="";
  linfunc( some_array);
  for (int i=0; i<ArraySize( some_array); i++)
  {
    st=StringConcatenate( st, "some_array[", i, "]=", some_array[ i], "\n");
  }
  Comment( st);
}
void linfunc(double& x[])
{
  ArrayResize( x, 7);
  for (int i=0; i<ArraySize( x); i++)
  {
    x[ i]=0.7*( i+0.1);
  }
}

diakin 写道>>
x' - 数组项不能被分配

而不是。

double linfunc(double x[], double a, double b)

你必须

double linfunc(double& x[], double a, double b)
 
diakin писал(а)>>
事实上,这不应该有什么区别。也应该和职位一起工作。

职务和命令的划分是人为的。这是我为了个人的方便而发明的。它是基于以下差异。

1.一个订单的开仓/定单价格可以改变(OrderOpenPrice()),而仓位不能改变。

一个订单必须被删除(OrderDelete()),而一个头寸必须被关闭(OrderClose())。

3.你可以在不影响存款的情况下改变订单的手数(注释,神奇的数字)。删除旧的订单,用新的批量大小(注释,神奇的数字)设置一个新的订单。如果你对头寸做同样的处理,将有等于点差乘以手数和点值的损失。

4.一个订单有其生命周期,但一个职位却没有。

 
KimIV писал(а)>>

我的意思是以下字面意思。

而不是。

.

谢谢你!现在我知道了,你也可以通过参考来做......

为什么MQLQL助手要在一个部分写上参数是通过值传递的,而在另一个部分写上 "可以通过引用传递"....?

omg!

至于订单,我已经进一步阅读了问题所在(>1 && <6),即OP_BUY、OP_SELL不属于这里。

顺便说一下,这个神奇的数字不能 通过OrderModify()改变还是我又错过了什么?;-()