只有“KimIV 的有用功能”。 - 页 11

 
我得到的只是这些函数,我决定理解程序员的逻辑。这就是我提问的原因。这就是这个论坛的作用。
 
satop:

DistMarketAndPos()函数。

我们来了!更多有趣的功能来了!例如,它返回市场和最近的位置之间的距离,单位是点。更准确地选择要检查的位置是由外部参数设定的。

  • sy- 仪器的名称。如果设置了这个参数,函数将只检查指定仪器的位置。""或NULL表示当前符号。
  • op- 贸易操作,职位类型。有效值:OP_BUY、OP_SELL或-1。默认值-1意味着任何位置。
  • mn- 位置标识符(MagicNumber)。默认值为-1意味着任何MagicNumber。


satop:

DistMarketAndPos()函数。

我们来了!让我们去看看更多有趣的功能吧!例如,它返回市场和最近的位置之间的距离,单位是点。更准确地选择要检查的位置是由外部参数设定的。

  • sy- 仪器的名称。如果设置了这个参数,函数将只检查指定仪器的位置。""或NULL表示当前符号。
  • op- 贸易操作,职位类型。有效值:OP_BUY、OP_SELL或-1。默认值-1意味着任何位置。
  • mn- 位置标识符(MagicNumber)。默认值-1表示任何MagicNumber。


我试着让它来回工作,来回开单。 我有一个错误,请帮助我解决它。

外置 int TakeProfit = 150;

外来的双数Lot = 0.01。

外部inttern MAGIC = 1234。

int start()

{

如果(DistMarketAndPos()>150)

{

OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point)

}

return(0);

}

int DistMarketAndPos(string sy="", int op=OP_BUY, int mn=-)

{

双D,P。

int i, k=OrdersTotal(), r=1000000;


如果(sy=="" || sy=="0") sy=Symbol();

p=MarketInfo(sy, MODE_POINT)。

如果(p==0)如果(StringFind(sy, "")<0)p=0.00001;否则p=0.01。

for (i=0; i<k; i++)

{

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

如果((OrderSymbol()==sy)&& (op<0 || OrderType()==op))

{

如果(mn<0 || OrderMagicNumber()==mn)

{

如果(OrderType()==OP_BUY)

{

d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p。

如果(r>d)r=NormalizeDouble(d,0)。

}

如果(OrderType()==OP_SELL)

{

d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p。

如果(r>d)r=NormalizeDouble(d,0)。

}

}

}

}

}

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


如果(DistMarketAndPos()>150)

{

OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point)。

}

return(0);


{

int DistMarketAndPos(string sy="", int op=OP_SELL, int mn=-1) //这一行给出了一个错误。

//如果这一行被删除。

//它编译了,但随后

//我不把op=OP_SELL。

//而没有它,专家顾问会认为。

//你要计算的顺序是什么?

//距离是OP_BUY

如果(sy=="" || sy=="0") sy=Symbol();

p=MarketInfo(sy, MODE_POINT)。

如果(p==0)如果(StringFind(sy, "")<0)p=0.00001;否则p=0.01。

for (i=0; i<k; i++)

{

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

如果((OrderSymbol()==sy)&& (op<0 || OrderType()==op))

{

如果(mn<0 || OrderMagicNumber()==mn)

{

如果(OrderType()==OP_BUY)

{

d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p。

如果(r>d)r=NormalizeDouble(d,0)。

}

如果(OrderType()==OP_SELL)

{

d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p。

如果(r>d)r=NormalizeDouble(d,0)。

}

}

}

}

}

return(r)。

return(r)。

}

}

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

谢谢你

 
qwanya:


正在努力使它来回工作,用它来回开单。 我有一个无法摆脱的错误,请帮助我解决。

谢谢你


你应该试试。

并在 提出问题......。

extern  int     TakeProfit = 150;
extern  double  Lot        = 0.01;
extern  int     MAGIC=1234;
      
      
//=====================================================================
  int    start()
      {
     if (DistMarketAndPos(NULL,OP_BUY)>150)
            {                                     
            OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point);
            }
          
     if (DistMarketAndPos(NULL,OP_SELL)>150)
            {                                     
         OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point);   
            }            
       return(0);
       }
          
//========================================================================          
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает расстояние в пунктах между рынком и ближайшей       |
//|             позицей                                                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    op - торговая операция          (    -1      - любая позиция)           |
//|    mn - MagicNumber                (    -1      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
  double d, p;
  int i, k=OrdersTotal(), r=1000000;

  if (sy=="" || sy=="0") sy=Symbol();
  p=MarketInfo(sy, MODE_POINT);
  if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
            if (r>d) r=NormalizeDouble(d, 0);
          }
          if (OrderType()==OP_SELL) {
            d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
            if (r>d) r=NormalizeDouble(d, 0);
          }
        }
      }
    }
  }
  return(r);
}
 
请在源码分支留下你的评论。门到源头(来自KimIV的有用功能)
 
请在源码分支留下你的评论。门到源头(来自KimIV的有用功能)
 
satop:

MovingInWL()函数。

谁能解释一下,为什么你要发布不起作用的功能?

'LevelWLoss' - 未声明的标识符
'LevelProfit' - 未声明的标识符
'ModifyOrder' - 未定义的函数
'LevelWLoss' - 未声明的标识符
'LevelProfit' - 未声明的标识符
'ModifyOrder' - 未定义的函数
6 错误, 0 警告.

而这是在函数本身中

 
DenisovOleg:

谁能解释一下,为什么你要发布不起作用的功能?

'LevelWLoss' - 未声明的标识符
'LevelProfit' - 未声明的标识符
'ModifyOrder' - 未定义的函数
'LevelWLoss' - 未声明的标识符
'LevelProfit' - 未声明的标识符
'ModifyOrder' - 未定义的函数
6 错误, 0 警告.

而这是在函数本身里面

该函数可以工作,但是它调用了 ModifyOrder函数,该函数应该被添加到EA代码中,同时在EA中添加变量LevelWLoss和LevelProfit,类似这样

外来的int LevelProfit = 1000。

外部int LevelWLoss = 50;

 
Виктор
郁里-托克曼(Iurii Tokman)

非常感谢你的这个论坛主题。最大的感谢是lurii Tokman提供的功能。就我个人而言,我几乎准备将其等同于斯特鲁斯特鲁普。
谢谢你!

 
Iurii Tokman:

GetAmountLotFromOpenPos()函数。

该函数返回未结头寸的手数之和。要考虑的位置的更精确选择是由外部参数指定的。

  • sy- 市场工具的名称。如果设置了这个参数,函数将只考虑指定符号的位置。默认值"" 意味着任何市场工具。NULL 表示当前的仪器。
  • op- 贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何位置。
  • mn- 位置标识符,MagicNumber。默认值-1 表示任何标识符。

不返回!!!。

无论我怎么做,要么是零,要么是 "未找到事件处理函数 4.mq4 1 1
"

 
Aleksey Maryaskin:

非常感谢你的这个论坛主题。最大的感谢是lurii Tokman提供的功能。就个人而言,我几乎准备将他等同于斯特鲁斯特鲁普。
谢谢你!

不要忘了也要感谢功能的作者。