KimIV的有用功能 - 页 59

 
更新的功能列表
附加的文件:
f_kimiv_1.rar  12 kb
 

伊戈尔,你能告诉我是否有一个函数可以确定下挂单 的最小点数?

谢谢你!

 
mozg писал(а)>>
伊戈尔,你能告诉我是否有一个函数定义了下挂单的最小值,即点数?
MarketInfo(Symbol(), MODE_STOPLEVEL);
 

你好,伊戈尔!你能不能写一个函数,让EA停止重放信号?这意味着,加入这段代码后的状态应该是这样的:买,卖,买,卖,买,卖....等...

 
Shniperson писал(а)>>

你好,伊戈尔!你能不能写一个函数,让EA不再重新触发信号? ...也就是说,加入这段代码后的状态应该是这样的......买入,卖出,买入,卖出,买入,卖出....等...

挥舞着...

//+----------------------------------------------------------------------------+
//|  Управление позициями.                                                     |
//+----------------------------------------------------------------------------+
void ManagePositions() {
  double sl=0, tp=0;
  int    bs= GetTradeSignal();

  if ( bs>0) {
    if ( ExistPositions(NULL, OP_SELL, Magic)) ClosePositions(NULL, OP_SELL, Magic);
    if (! ExistPositions(NULL, OP_BUY, Magic)) {
      if ( StopLoss  >0) sl=Ask- StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Ask+ TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_BUY, Lots, sl, tp, Magic);
    }
  }
  if ( bs<0) {
    if ( ExistPositions(NULL, OP_BUY, Magic)) ClosePositions(NULL, OP_BUY, Magic);
    if (! ExistPositions(NULL, OP_SELL, Magic)) {
      if ( StopLoss  >0) sl=Bid+ StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Bid- TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_SELL, Lots, sl, tp, Magic);
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Возвращает торговый сигнал:                                               |
//|     1 - покупай                                                            |
//|     0 - сиди, кури бамбук                                                  |
//|    -1 - продавай                                                           |
//+----------------------------------------------------------------------------+
int GetTradeSignal() {
  int bs=0;

  if ( условия для покупки) bs=1;
  if ( условия для продажи) bs=-1;

  return( bs);
}

存在的位置()

关闭位置()

 

归一化价格()函数。

该函数返回归一化的价格值。使用MarketInfo(MODE_TICKSIZE || MODE_DIGITS)函数的值进行规范化。NormalizePrice()函数接受以下参数。

  • np- 归一化的手数价值。必要的参数。
  • sy- 交易工具的名称。NULL""- 当前符号。默认值 -""。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 21.08.2008                                                     |
//|  Описание : Возвращает нормализованное под размер тика значение цены.      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    np - нормализуемое значение цены.                                       |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//+----------------------------------------------------------------------------+
double NormalizePrice(double np, string sy="") {
  if ( sy=="" || sy=="0") sy=Symbol();
  double pp, ts=MarketInfo(Symbol(), MODE_TICKSIZE);
  int    di=MarketInfo(Symbol(), MODE_DIGITS);

  if ( ts>0) pp=NormalizeDouble( np/ ts, 0)* ts;
  else {
    if ( di>0) pp=NormalizeDouble( np* di, 0)/ di; else pp= np;
  }
  return( pp);
}

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

附加的文件:
 

(新手问题)。

尊敬的KimIV 写了一个函数。

GetExtremumZZPrice()。


double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
应该使用什么样的代码来存储最后的最低和最高价格在2个变量中?(我的头脑被烧坏了;(())
 
WroC писал(а)>>
应该使用什么样的代码来存储最后的最低和最高价格在2个变量中?
void start() {
  double p1= GetExtremumZZPrice("", 0, 0);
  double p2= GetExtremumZZPrice("", 0, 1);

  if ( p1> p2) Comment("Последний максимум ", p1, "\n Последний минимум ", p2);
  else Comment("Последний максимум ", p2, "\n Последний минимум ", p1);
}
 

KimIV

谢谢你!

 
伊戈尔,你好!
在我力所能及的范围内,我已经努力理解你所提出的材料。说实话,我还没有使用过专家顾问或脚本,也没有任何实际经验,但我需要创建一个脚本,帮助我下大量的订单。
该脚本的任务是方便下挂单(主要是买入止损和卖出止损)。
即,脚本参数设置如下。
1.下达订单的水平(例如,欧元/美元买入止损从1.3000开始)。
2.每个订单的大小(例如,0.01)。
下单步骤(例如:1点)
4.每个订单的TP(如3个点)。
5.挂单的数量(如70)或挂单应达到的水平(如达到1.3070)。
脚本中的止损和尾随止损参数是可取的,但不是必须的...
脚本应该是每隔3-4小时启动计算机,分析情况并决定设置订单,向上(或向下)突破区间,开仓期为1点,但最低TP(3点)。因此,在价格向必要的一方移动的情况下,这些订单将开始打开,如果达到必要的价格,它们将被TP关闭。然后,一个变体是可能的,当他们都将在一个TP上关闭 - 如果价格运动通过所有的订单或订单的一部分(6个单位)将是开放的,将是 "减去"。在这种情况下,我们应该用其他参数(手数、步数、TP、订单数量)在相反的方向设置下一个 "阶梯 "订单,这对交易者来说是最好的。
在一个交易日结束时,"相反的头寸 "将被关闭,从而给交易者留下大约6个向上(或向下)的订单。
提前感谢专家的解答