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

 

你好。我想为MT4编写一个EA,其任务之一是在一小时内画出M1的菲波线。也就是说,当11.00时,它应该在10.00至10.59的区间内画线,重点关注高点和低点。尝试了不同的方法,贴出了最后的方法。你也许可以缩短代码来绘制水平线。问题是它没有在给定的区域内绘制线条

int timemin=TimeMinute(Time[59]==0);
int timehour=TimeHour(Time[1] && TimeMinute(Time[0]))。
int timemin1=TimeMinute(Time[0]==0);
int timehour1=TimeHour(Time[1] && TimeMinute(Time[59))

int max=iHighest(Symbol(),1,MODE_HIGH,60,timehour);
int min=iLowest(Symbol(),1,MODE_LOW,60,timehour);

double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));
double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevels"); //------ New level

如果(barup)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen) 。

}
if (bardn)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed) 。

}
double f1=ObjectGet("FiboLevels",OBJPROP_PRICE1); //选择第一个价格
double f2=ObjectGet("FiboLevels",OBJPROP_PRICE2) 。//选择第二个价格并绘制
double Diff=f2-f1;
string a11=DoubleToStr(f2-Diff*0.0,Digits);
string a12=DoubleToStr(f2-Diff*0.236,Digits);
string a13=DoubleToStr(f2-Diff*0.382,Digits);
string a14=DoubleToStr(f2-Diff*0.50,Digits);
string a15=DoubleToStr(f2-Diff*0.618,Digits);
string a16=DoubleToStr(f2-Diff*1.0,Digits) 。

bool a1=ObjectSet("FiboLevels",OBJPROP_FIBOLEVELS,6);
bool a2=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+0,0.0;
bool a3=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+1,0.236);
bool a4=ObjectSet("FiboLevels", OBJPROP_FIRSTLEVEL+2,0.382);
bool a5=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+3,0.50);
bool a6=ObjectSet("FiboLevels", OBJPROP_FIRSTLEVEL+4,0.618);
bool a7=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+5,1.0)。

bool a111=ObjectSetFiboDescription("FiboLevels",0, "0.0%");
bool a122=ObjectSetFiboDescription("FiboLevels",1, "23.6%");
bool a133=ObjectSetFiboDescription("FiboLevels",2, "38.2%";
bool a144=ObjectSetFiboDescription("FiboLevels",3, "50.0%");
bool a155=ObjectSetFiboDescription("FiboLevels",4, "61.8%";
bool a166=ObjectSetFiboDescription("FiboLevels",5, "100.0%")。

 
Georgy Sled:

你好。我想为MT4编写一个EA,其任务之一是在一小时内画出M1的菲波线。也就是说,当11.00时,它应该在10.00至10.59的区间内画线,重点关注高点和低点。尝试了不同的方法,贴出了最后的方法。你也许可以缩短代码来绘制水平线。问题是它不能在给定的区域内画线

double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1))。

double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1))。
ObjectDelete("FiboLevels"); //------New level

如果 (barup)
{
WindowRedraw()。
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max];
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen)。

}
如果 (bardn)
{
WindowRedraw()。
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min])。
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed)。

}

这个更短吗? bool barup=...WindowRedraw(); 仍然会被执行--从if中取出。

   ObjectDelete("FiboLevels"); //------Новый уровень
   WindowRedraw();

   if (iOpen(Symbol(),60,1)>iClose(Symbol(),60,1))
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);
   }
   else
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);
   }

它也可以更短......见我的文件

附加的文件:
Proba.mq4  3 kb
 
Artyom Trishkin:

请正确插入代码。


这就更清楚了。


谢谢你解释如何正确粘贴代码)))) 帮助)请检查并帮助我正确书写代码,我将不胜感激!(今天我得到了一个煮熟的三星电视,我学会了卸载,但我无法应付这个代码(((((。
 
void fOrderOpen() {...
    if( iTime(Symbol(),PERIOD_M1,0)) {
     if((fMarketOrders(OP_BUY))) { ....{
int irvbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,NULL,12345,0,0); 

伙计们,为什么我的订单在每次打钩 时都会打开?你能告诉我如何集中精力在酒吧吗?

 
Rustam Bikbulatov:

伙计们,为什么我的订单在每次打钩 时都会打开?你能告诉我如何集中精力在酒吧吗?

根据ATS中描述的条件,给予开放的许可,所以它开放了。
在这种情况下,有很多解决方案。这完全取决于什么更适合你。
我们可以确定,只有当价格离开上一个订单N个点时,才应该开立下一个订单。您可以要求在1根柱子上建立不超过一个订单。诸如此类,不一而足。
写下你需要的条件,并将它们应用于你的测试。

 
Konstantin Nikitin:

根据ATS中描述的条件,它打开订单。
在这种情况下,有很多解决方案。这完全取决于什么更适合你。
我们可以确定,只有当价格离开上一个订单N个点时,才应该开立下一个订单。您可以要求在1根柱子上建立不超过一个订单。诸如此类,不一而足。
写下你需要的条件,并将它们应用于你的测试。

相反,如果( iTime(Symbol(),PERIOD_M1,0)){ 我应该怎么写才能在一个柱子上开出一个订单?

 
Rustam Bikbulatov: 伙计们,为什么我的订单在每次打钩 时都会打开?有什么建议吗?"如何集中精力在酒吧里?

这个问题已经被问过很多次,相应地也被回答过很多次。使用搜索,例如这里

 
STARIJ:

这个问题已经被问过很多次,相应地也被回答过很多次。使用搜索,例如这里

谢谢你!

 

下午好!


我有一个做某些计算的EA。它使用不同的数学运算、数组、循环。 将结果保存到一个文件中。它必须在执行完所有行动后从头开始做所有事情。它已经做了一次所有的计算,然后第二次挂起,没有采取任何行动。你能告诉我们,在开始新的计算之前,是否有必要将变量清零,清除数组或其他东西?

 
Kot:

下午好!


我有一个做某些计算的EA。它使用不同的数学运算、数组、循环。 将结果保存到一个文件中。它必须在执行完所有行动后从头开始做所有事情。它已经做了一次所有的计算,然后第二次挂起,没有采取任何行动。你能告诉我们,在开始新的计算之前,是否有必要将变量清零,清除数组或其他东西?

他们 肯定会有帮助。而在这个问题上,没有这样的专家。
原因: