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

 

大家下午好。

我正在学习数组知识。

你能告诉我如何从数组中删除我需要的值吗?

按照我的理解,在删除一个值后,数组的大小 将被减少,可能是

新的数组大小值也需要被指定。

我在《参考手册》中没有找到删除数组值的函数。你能给我看看整个程序是什么样子的吗?

以便在删除后,该数组将继续发挥作用。

谢谢你。

下面是我需要的一个具体例子。

int start()                                             
{

double mass[3]=
{
1.2414,
1.2438,
1.2874
};

double value =  Bid ;
int S = ArrayBsearch(mass,  value,  WHOLE_ARRAY,  0, MODE_ASCEND);

if ( Bid == mass[S]) //Bid = 1.2874
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
}
// после того как открылся ордер по цене элемента массива с индексом 2 (1.2874)
// КАК УДАЛИТЬ ИЗ МАССИВА ЗНАЧЕНИЕ 1.2874 так что бы массив продолжил функционировать дальше.
 
ANDREY:

大家下午好。

我正在学习数组知识。

你能告诉我如何从数组中删除我需要的值吗?

按照我的理解,在删除一个值后,数组的大小将被减少,可能是

新的数组大小也需要被指定。

我在《参考手册》中没有找到删除数组值的函数。请告诉我整个过程是怎样的。 要删除一个数组值。

这样,删除后,数组将继续发挥作用。

谢谢你。

下面是我需要的一个具体例子。

你可以把一个数组 "复制 "到自己的体内,然后通过减少1来调整数组的大小。一个例子,删除数组的 零号索引,并填入最后一个,但你可以从任何索引复制任何数量的元素。

第二个选择是覆盖 "释放 "空间中的最后一个值,同时减少数组的大小。

Подскажите про массивы
Подскажите про массивы
  • 2017.12.03
  • www.mql5.com
Я только учусь и на массивах попал в засаду: пытаюсь написать скрипт в котором массив данных будет перезаписываться...
 
Alexey Viktorov:

你可以把一个数组 "复制 "到自己身上,然后通过减少1来调整数组的大小。一个例子是删除数组的索引 并填充最后一个索引,但复制可以从任何索引开始,有任何数量的元素。

第二个选择是覆盖 "释放 "空间中的最后一个值,同时减少数组大小。

非常感谢你的提示。
 

你好!!给我解释一下,虽然我不是初学者,但我对一个问题感到非常厌恶。我正在从指标中调用该指标。当我收到一个有一个值的新条,当我马上重新编译时,我得到了完全不同的值。按时间计算指标 的延迟导致一无所获。因此,根本不存在自动功能。这个问题。WHY????我太累了,我已经筋疲力尽了。这个不可思议的故障是什么...我受够了...

 

你好!我无法解决在价格超出信号位时移动信号位的问题。在编译的时候,一切都很好,但在测试器中,当 "合适 "的条件出现时,没有任何变化。请教一下,价格超出信号水平的情况下,有什么问题吗?

//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------
 price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
 ObjectCreate("UrO",OBJ_HLINE,0,0,price);
 ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
 ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
 ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
 ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
 ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
//--------------------------------------------------------------------------
if((Bid>=priceA) ||(Bid<=priceB)){                                                                 //если цена вышла за одну из ГРАНИЦ, сдвинуть уровни
  ObjectSet("UrO",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_M15,0));  
                                                                                             

UrA""UrB " 水平应该被移动到m15的最后一根蜡烛的最大值,但它并没有发生。有谁知道原因吗?

 
vikzip:

你好!我无法解决在价格超出信号位时移动信号位的问题。在编译的时候,一切都很好,但在测试器中,当 "合适 "的条件出现时,没有任何变化。请教一下,价格超出信号水平的情况下,有什么问题吗?

UrA""UrB " 水平应该被移动到m15的最后一根蜡烛的最大值,但它并没有发生。有谁知道原因吗?


ObjectMove() 有什么问题?

 
Vitalie Postolache:

ObjectMove() 有什么问题?


谢谢你!!!)

 
Vitalie Postolache:

ObjectMove() 有什么问题?


这个功能很好!但由于某些原因,条件没有得到满足!有谁知道原因吗?

  double price;                                                                                    //цена сердцевины
  double priceA;                                                                                   //цена верхнего сигнального уровня
  double priceB;                                                                                   //цена нижнего сигнального уровня
//+------------------------------------------------------------------------------------------------------------------------------------------------------------
int start(){
//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------

price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
ObjectCreate("UrO",OBJ_HLINE,0,0,price);
ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                                                                                                                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
 //---------------------------------------------------------------------------------------------------------------------------------------------------------------
if((Bid<=priceB)||(Bid>=priceA)){                                                                 //если цена вышла за одну из ГРАНИЦ
  ObjectsDeleteAll();                                                                             //для примера удаляю все объекты, но этого не происходит!
  }                                                                                               //Почему ведь очевидно на тестере цена выходит за пределы, но ни чего не происходит???
return(0);
}
谁能解释一下这个错误是什么?
 

你好!

我刚刚开始学习MQL4。我不明白为什么该脚本无视MT4(4.0版1090)中的"允许自动交易"按钮。

我无法掌握这种建筑的情况。

int start()
{

     Alert("Привет!");

return;
}

我没有按下按钮,但它仍然显示一个有警报的窗口。当我在脚本中设置一个订单时,无论自动交易按钮是否被按下,它都会不间断地在每个tick上发射。


我曾尝试过这样的结构。


int start()
{

 while(!IsStopped())
    {
    
      Alert("Привет!");

     if(!IsExpertEnabled()) break;
    }


return;
}

起初,它似乎是有效的,但在复杂化脚本的过程中,它也停止了工作......

我不知道是不是应该这样,但我感觉不到EA工作的流畅性:当我更换EA时,旧的EA一直在工作,就像在后台一样,但也许我还没有搞清楚。

 
Dimitry-1983:

你好!

我刚刚开始学习MQL4。我不明白为什么该脚本无视MT4(4.0版1090)中的"允许自动交易"按钮。

我无法让这种建筑发挥作用。

我没有按下按钮,但它仍然显示一个有警报的窗口。当我在脚本中设置一个订单时,无论自动交易按钮是否被按下,它都会不间断地在每个tick上发射。


我曾尝试过这样的结构。


起初,它似乎是有效的,但在复杂化脚本的过程中,它也停止了工作......

我不知道是不是应该这样,但我感觉不到EA工作的流畅性:当我更换EA时,旧的EA一直在工作,就像在后台一样,但也许我还没有搞清楚。

这个按钮只影响交易功能。其他一切都保持正常工作。
原因: