KimIV的有用功能 - 页 63

 
KimIV >> :

不是......写了......。

ClosePosBySortLots()函数。

该功能按手数排序的顺序关闭头寸。也就是说,使用这个函数,你可以按照手数大小的升序或降序来平仓。函数ClosePosBySortLots()接受以下可选参数。

  • sy - 交易工具的名称。"" - 任何乐器,NULL - 当前乐器。默认值为""。
  • op - 贸易操作的类型。有效值-1 - 任何位置,OP_BUY - 买入,OP_SELL - 卖出。默认值为-1。
  • mn - MagicNumber,交易操作的唯一标识符。默认值-1 - 任何神奇的数字。
  • sd - 地段大小排序方向。有效值MODE_ASCEND - 升序,MODE_DESCEND - 降序。默认值是MODE_DESCEND。

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

非常感谢伊戈尔。我将为你祈祷:-)

 

私有化

ǞǞǞ

谢谢你的例子!

如果你不介意的话,请破译这个。

var=Close[0]
它的作用是什么?
 

呃......。停在这里...对不起...删除...创造性永远是受欢迎的!

并从附件文件中获取功能的链接...

附加的文件:
f_kimiv.rar  12 kb
 
WroC писал(а)>>

如果不难的话,请解读这个。

var=Close[0]

你想用什么来吃呢?

命名为var 的变量被分配为当前条形图收盘时的价格水平值(零数)。但是,由于当前栏位还没有结束,Close[0]Bid 相同,即当前价格。

 

KimIV


而我一直试图以某种方式使用marketinfo,结果发现它更简单 ....

 
if ( ExistPositions(NULL, OP_BUY, Magic)) {
 po= PriceOpenLastPos(NULL, OP_BUY, Magic);
 if (! ExistOrders (NULL, OP_SELLSTOP, Magic+1)
 && ! ExistPositions(NULL, OP_SELL , Magic+1)) {
 pp= po- offSet*Point;
 if ( StopLoss>0) sl= pp+ StopLoss*Point; else sl=0;
 if ( TakeProfit>0) tp= pp- TakeProfit*Point; else tp=0;
 SetOrder(NULL, OP_SELLSTOP, ll, pp, sl, tp, Magic+3);

下午好。
伊戈尔,你有实现锁定战术的功能吗?
在第45页,你给出了一个可用于此的例子。

但这样的方法将未平仓订单的数量限制在1个。
如果我们看一下这个例子,它看起来是这样的
LockStep=20 从未平仓
LockStopLoss=10
1500 - 打开 Buy\1480 - 打开 sellstop

1470 - 打开 buy\1450 - 打开 sellstop

1460 - 关闭 sellstop 1450\打开 sellstop 1450
1490 - 关闭 sellstop 1480\打开 sellstop 1450
所给函数将打开两个订单 sellstop 1450


附:非常感谢您的工作。实际上有很多信息,而且非常有帮助,我已经采纳了其中的大部分。



 
demsan писал(а)>>
伊戈尔,你有实现锁定战术的功能吗?

不,没有单独的功能。所以你必须结合现有的,也许还要加上一些你自己的。我建议你组织以下连接:一对Buy/SellStop - 一个魔术师。下一对--下一个魔术师,以此类推。

 

StringLower()函数。

该函数将一个字符串转换为小写。所有重要的(大)字符都变成小写(小)。StringLower() 函数只接受一个强制性的参数--输入字符串。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает строку в нижнем регистре                            |
//+----------------------------------------------------------------------------+
string StringLower(string s) {
  int c, i, k=StringLen( s), n;
  for ( i=0; i< k; i++) {
    n=0;
    c=StringGetChar( s, i);
    if ( c>64 && c<91) n= c+32;     // A-Z -> a-z
    if ( c>191 && c<224) n= c+32;   // А-Я -> а-я
    if ( c==168) n=184;            //  Ё  ->  ё
    if ( n>0) s=StringSetChar( s, i, n);
  }
  return( s);
}

SZY.附上一个测试StringLower()函数的脚本。

附加的文件:
 

StringUpper()函数。

该函数将字符串转换为大写字母。所有小写(小)字符变成大写(大)。StringUpper() 函数只接受一个强制性参数--输入字符串。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает строку в ВЕРХНЕМ регистре                           |
//+----------------------------------------------------------------------------+
string StringUpper(string s) {
  int c, i, k=StringLen( s), n;
  for ( i=0; i< k; i++) {
    n=0;
    c=StringGetChar( s, i);
    if ( c>96 && c<123) n= c-32;    // a-z -> A-Z
    if ( c>223 && c<256) n= c-32;   // а-я -> А-Я
    if ( c==184) n=168;            //  ё  ->  Ё
    if ( n>0) s=StringSetChar( s, i, n);
  }
  return( s);
}

ZS. 附上一个测试StringUpper()的脚本。

附加的文件:
 

StringToArrayDouble()函数。

这个函数将字符串分割成实数,每个数字作为一个单独的元素加入到数组中。字符串中出现多少个实数,就会有相同数量的元素被添加到数组中。分号被认为是一个分隔符。StringToArrayDouble() 函数返回数组元素的数量,并接受以下强制性参数。

  • st- 一串由分号分隔的实数。
  • ad- 实数的数组。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.10.2008                                                     |
//|  Описание : Перенос вещественных чисел из строки в массив                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    st - строка вещественных чисел через точку с запятой                    |
//|    ad - массив вещественных чисел                                          |
//+----------------------------------------------------------------------------+
//|  Возврат:                                                                  |
//|    Количество элементов в массиве                                          |
//+----------------------------------------------------------------------------+
int StringToArrayDouble(string st, double& ad[]) {
  int    i=0, np;
  string stp;

  ArrayResize( ad, 0);
  while (StringLen( st)>0) {
    np=StringFind( st, ";");
    if ( np<0) {
      stp= st;
      st="";
    } else {
      stp=StringSubstr( st, 0, np);
      st=StringSubstr( st, np+1);
    }
    i++;
    ArrayResize( ad, i);
    ad[ i-1]=StrToDouble( stp);
  }
  return(ArraySize( ad));
}

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

附加的文件: