新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 467

 
haron312:

你好,请帮助我解决当我试图修改一个订单(转移到Breakeven)时,在测试器中出现的错误:我把OrderOpenPrice()函数而不是SL,但测试器显示错误1(根据文档,这意味着有一个试图传递未改变的值作为参数给函数)我附上代码!提前感谢您!

void DeleteOrderFunction2() //删除第二个挂单的函数,并在某天晚上将第二个订单保存到Breakeven。

{

bool flag = false。

如果(FlagDeleteSecondOrder2 == true)

{

如果(DayOfWeek() == DAYOFWEEK && //如果选择了一个工作日

Hour() == 22 //if evening

)

{

如果(BuyCount() == 1 && if(有一个 未平仓的买入订单)

SellStopCount() == 1 //有一个卖出挂单

)

{

for( int i = 0; i < OrdersTotal(); i++)//创建订单

{

OrderSelectX(i, SELECT_BY_POS, MODE_TRADES;)

switch(OrderType())

{

case OP_BUY: if(OrderProfit() > 0 &&)

Bid > OrderOpenPrice()

)

{

OrderModifyX(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0,Arrow_Color)。

标志=true。

}

突破。

case OP_SELLSTOP: if(flag==true)

{

OrderDeleteX(OrderTicket(), Arrow_Color)。

}

突破。

}

}

}

如果(SellCount() == 1 && // 如果有一个开放的卖出订单

BuyStopCount() == 1 //有一个买入挂单。

)

{ 打印("IS!!!!")。

for( int i = 0; i < OrdersTotal(); i++)//创建订单

{

OrderSelectX(i, SELECT_BY_POS, MODE_TRADES;)

switch(OrderType())

{

case OP_SELL: 如果(OrderProfit() > 0 &&)

Ask < OrderOpenPrice()

)

{

OrderModifyX(OrderTicket(), OrderOpenPrice(),OrderTakeProfit(),0, Arrow_Color)。

flag = true;Print("flag =", flag);

}

突破。

case OP_BUYSTOP: if(flag == true)

{

Print("flag =", flag);

OrderDeleteX(OrderTicket(), Arrow_Color)。

}

突破。

}

}

}


}


}

}

假设OP_BUY在订单中是第一次遇到,你修改它并设置标志=true,当它被遇到时,待定订单将被删除。看看如果第一次遇到挂单会发生什么...
 

帮我把指标转化 为脚本!

double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexArrow (0,233);
   SetIndexArrow (1,234);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)
     { 
      if (High [i+2] == High[i+3])
      bool DOWN   = High[i+1]== High[i+2]; 
                                               
                    
      if (Low [i+2] == Low [i+3])             
     bool UP =  Low[i+1]==Low[i+2] ;
      
       
      if (UP)   buf_1[i+1] = Low[i+1]-3*Point;
      if (DOWN) buf_2[i+1] = High[i+1]+3*Point;
     }
   return(0);
 }
  //  ---- end

如果写iHigh(NULL,PERIOD_H1,[i+2])和iLow(NULL,PERIOD_H1,[i+2]) 而不是High [i+2]和Low[i+1],那么你可以控制时间框架?

如果Hai匹配卖出,如果Loh买入!

 
Rewerpool:

帮我把指标转化 为脚本!

如果写iHigh(NULL,PERIOD_H1,[i+2])和iLow(NULL,PERIOD_H1,[i+2]) 而不是High [i+2]和Low[i+1],那么你可以控制时间框架?

如果Hai匹配卖出,如果Loh买入!

三个巧合将不得不等待很长时间

 
STARIJ:

三次打击将不得不等待很长时间。

我不是黄牛党,我会等。我们可以对4位数进行归一化。

 

在mql5中,我们有未结头寸,我找到这个头寸的所有交易,并确定它们是由市场订单还是挂单 打开的

在mql4中,我怎样才能发现一个未结头寸是由市场订单还是挂单打开的,当挂单触发时,它的代码发生了变化?

 
Rewerpool: 我不是黄牛党,我会等。我们可以对4位数进行归一化。

是的,结果是弱的......。

5个Hai的匹配,价格就上去了。

 
Pavel Kolchin:

在mql5中,我们有未结头寸,我找到这个头寸的所有交易,并确定它们是由市场订单还是挂单 打开的

在mql4中,我怎样才能知道未结订单是由市场开出的还是挂单开出的,当挂单触发时,它们的代码会发生变化?

赋予他们不同的魔力

 
STARIJ:

赋予他们不同的魔力

订单是由用户打开的,我需要在打开时定义其类型

 
问题是什么会 "加载更多":在每个定义的InChartEvent中重新定义指标手柄,还是在OnInit中事先将所有可能的手柄定义为一个数组?
 
Roman Sharanov:
问题是什么会 "加载更多":在每个定义的InChartEvent中重新定义指标手柄,还是在OnInit中事先将所有可能的手柄定义为数组?
不同。
原因: