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

 

如果你知道,有两条线,一条跟着一系列蜡烛图中的新高点,另一条跟着低点。当线与线之间的距离超过50时,应画一条垂直线。垂直线需要一个坐标--时间。当线与线之间的距离将超过50时,我怎样才能画出时间?我什么都想不出来。

我想用ObjectCreate 来绘制垂直线...如果可以不用时间,应该用什么来做?
 
waitra >> :

能否有一个功能可以简单地检测出 "在EA历史上还没有订单"?- 那就足够了。

我不知道。也许这里有人能告诉我们?

我认为我们应该尝试修改金的功能。这一个。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru            |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                  |
//|  Описание : Возвращает количество позиций.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                            |
//|    sy - наименование инструмента   (""   - любой символ,  |
//|                                     NULL - текущий символ)          |
//|    op - операция                   (-1   - любая позиция)       |
//|    mn - MagicNumber                (-1   - любой магик)               |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;
  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()== sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op) {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}  return( kp);}

也就是说,不采取MODE_TRADES,而采取MODE_HISTORY - 即在已关闭和已删除的订单中选择该订单。

然后(改变f-i的名称)。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru            |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                  |
//|  Описание : Возвращает кол-во ордеровиз истории счета  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                           |
//|    sy - наименование инструмента   (""   - любой символ, |
//|                                     NULL - текущий символ)        |
//|    op - операция                   (-1   - любая позиция)       |
//|    mn - MagicNumber                (-1   - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfPos_HISTORY (string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;
  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )) {
      if (OrderSymbol()== sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op) {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}  return( kp);}

试试吧,--到底行不行?

 

下午好,朋友们。


请告诉我这个问题。


例如,我需要在 "价格蜡烛 "越过移动平均线 时开立一个头寸。

到目前为止,我只知道当蜡烛图在移动平均线上方/下方收盘/开盘时如何对信号进行分类...

( iMA( .....) >Close[1] 或 iMA( ....) >Open[0] )

如果当前的蜡烛图已经在MA之上/之下,我怎样才能进入,而不是等待当前的蜡烛图关闭,下一个蜡烛图打开,如果它已经在MA之上/之下?


事先非常感谢你。

 
Morzh09 >> :

下午好,朋友们。


请告诉我这个问题。


例如,我需要在 "价格蜡烛 "越过移动平均线时开立一个头寸。

到目前为止,我只知道当蜡烛图在移动平均线上方/下方收盘/开盘时如何对信号进行分类...

( iMA( .....) >Close[1] 或 iMA( ....) >Open[0] )

如果当前的蜡烛图已经在MA之上/之下,我怎样才能进入,而不是等待当前的蜡烛图关闭,下一个蜡烛图打开,如果它已经在MA之上/之下?


我不知道该如何处理它。

你喜欢它吗?

iMA(....) >Open[0] ?- 零是当前的蜡烛。

 
rid >> :

有什么不喜欢的。

iMA(....) >Open[0] ?- 零是当前的蜡烛图

这是真的,但是,举例来说,有些情况下,在MA下开盘后,价格随后(通常是在新闻中)以长阳线突破MA,并上升了,....。

如果我们使用我的开局标准,我们可能会错过这样的动作......

因此,我想在当前价格高于/低于平均线的情况下开仓,而不是等待这根蜡烛收盘和下一根蜡烛开盘。

 

这可能是:

if (  iMA(.... .... , 1) >Close[1]  && iMA(.... ... , 0) < Open[0]  ) // продажа

(如果前一交易日的MA值大于前一交易日的收盘价,并且当前交易日的MA值小于当前交易日的开盘价,那么就卖出。)

 

我已经捣鼓了两天了,也没能弄明白。我从科瓦廖夫的教程中提取了代码,试图开立一个买入订单,得到的答案是 "错误130"。

编码

nt f_Open_Ord(int Tip)
{
int Ticket, // Order number
MN; // MagicNumber

double SL, // StopLoss (相对价格值)
TP; // TakeProf (相对价格值)
//--------------------------------------------------------------- 3 --
while(g_Mas_Tip[Tip]==0) // As long as .
{ //...没有成功
if (SL<g_Level_new) //如果小于允许的范围...
SL=(g_Level_new+20); // ... 然后允许
if (TP<g_Level_new)
// 如果小于允许值...
TP=(g_Level_new+20); // .则允许
MN=TimeCurrent(); // Simple MagicNumber
f_Inform(13,Tip); // Message on attempt to open
if (Tip=0) // Let's open Buy
{
SL=Bid - SL*Point;// 止损(价格)
SL=NormalizeDouble(SL,Digits);
TP=Bid + TP*Point; // 止盈(价格)
TP=NormalizeDouble(TP,Digits);
Ticket=OrderSend(Symbol(),0,g_Lots_New,Ask,5,1.46500,1.47500,",MN);
err=GetLastError();
Comment("错误号码",err);
if (Ticket>0) f_Inform(4);
//if (Ticket<0) f_Inform(25)

代码重做了。一切工作正常。我认为错误不在代码中。DC-Broco/。

 

索里,这太仓促了。OrderSend函数 中的数值1.46500和1.47500应分别改为SL和TP。

 
VNG писал(а)>>

索里,这太仓促了。OrderSend函数中的数值1.46500和1.47500必须分别用SL和TP来代替。

SL和TP等于什么?如果它是零,就像上面的代码一样,一切都正确。应该产生一个错误

 

止损点取自全局变量 g_Level_new,其计算方法为g_Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL )

原因: