[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 123

 
谢谢你的帮助,我把OrdersTotal() 改为OrdersHistoryTotal()。它起作用了。
 

对于那些比我更了解mql4的人,请帮助。有3个问题。

1.首先是关于双常数。我们都知道iMa,面具,移动平均线/ 问题是。值的映射不正确。

例子。

extern string  MA1="";
extern string  MA2="";
extern string  MA3="";
string com;


double MA1 = iMA(NULL,PERIOD_M15,9,0,0,0);
double MA2 = iMA(NULL,PERIOD_M15,15,0,0,0);
double MA3 = iMA(NULL,PERIOD_M15,21,0,0,0);

if (MA1>MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 ) com="значение1";
if (MA1<MA2 && MA1==MA2 && MA1<MA3 && MA3!=MA3 ) com="значение2";

因此,所有时间的值将是=value1。代码顽固地拒绝理解 != (不相等)

2.问题/打开搜索关闭/。

我想从这个程序中得到什么,但它没有发挥作用。

1.检查条件(真;假)。

2.如果有这样的命令,我们就不打开;如果没有命令,我们就打开。我们根据OrderComment() 条件来打开它。

3.检查 如果X或Y事件发生,关闭它。X-(例如另一个信号iMA1>iMA2,Y-另一个信号iMA2>iMA3)。

我就是这样做的,但什么都没有出来。

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)
{
   for (int i=1;i<=OrdersTotal(); i++)       
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);
            }
           }
       } 
}

如何关闭,我不知道该在哪里插入。

3.关于偏移量的问题(int shift)

在第二组iMA中,我把相对的当前条形向后移了3)什么为,这样,当出现上述信号时,不要在每个条形上开重复的订单。但由于某些原因,这种转变并没有发生。

double MA1 = iMA(NULL,PERIOD_M15,9,0,0,0);
double MA2 = iMA(NULL,PERIOD_M15,15,0,0,0);
double MA3 = iMA(NULL,PERIOD_M15,21,0,0,0);

double MA4 = iMA(NULL,PERIOD_M15,9,0,0,3);
double MA5 = iMA(NULL,PERIOD_M15,15,0,0,3);
double MA6 = iMA(NULL,PERIOD_M15,21,0,0,3);

请用知识帮助我。我不知道如何使用它。我不知道在互联网上哪里有类似的实现。

 
dertop:

对于那些比我更了解mql4的人,请帮助。有3个问题。

1.首先通过恒定的两倍。

2.如何关闭,我完全不明白该放在哪里。

3.关于偏移量(int shift)的问题

1. https://www.mql5.com/ru/articles/1561

2. 如果(关闭条件)OrderClose(...)

3.看看这种转变究竟是什么,以及它转变了谁
 
ilunga:

1. https://www.mql5.com/ru/articles/1561

2. 如果(关闭条件)OrderClose(...)

3.看看这种转变究竟是什么,以及它转变了谁


非常感谢您的快速回复。

关于1.是的,我知道了,我们将在那里挖掘。

在2。如果(关闭条件)OrderClose(...)(没有它就很清楚),但我在if,what中混淆了where where和why....。

如果错误,请纠正....

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // а вот тут проблемы кто за чем идёт и куда вставить условие закрытие отдельно за телом всего условия (ma1;ma2 и тд), или там где OrderSelect()
            }
           }
       } 
}

指标缓冲区 获得的数值的索引(相对于当前条形图,向后移动指定的周期数),来自mql4帮助

 
dertop:


非常感谢您的快速回复。

由2。如果(关闭条件)OrderClose(...)(没有它也可以理解)但我对if,what对于where where和why感到困惑....

如果错误,请纠正....


if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // а вот тут пока написано следующее: для каждого из ордеров у которого мы сюда зашли мы поставим еще один ордер
            }
           }
       } 
}
 
ilunga:

对不起,既然条件已经给出,为什么还要检查不等式呢?这就减慢了对条件的阅读和实现的速度!

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)//MA1!=MA2 && и && MA2!=MA3 не нужны, т.к. в предыдущих сравнениях
                                                          //равенство ухе исключено! Так что нужно так:
if (MA1>MA2 && MA1<MA3 && MA2>MA3)
 
borilunad:

对不起,既然条件已经给出,为什么还要检查不等式呢?这就减慢了对条件的阅读和实现的速度!


这里有一些奇怪的东西。

if (MA1>MA2 && MA1<MA3 && MA2>MA3)

MA1>MA2,MA2>MA3,然后MA1<MA3

特别是由于它足以

if (MA1>MA2 && MA2>MA3)
 
borilunad:

对不起,既然条件已经给出,为什么还要检查不等式呢?这就减慢了对条件的阅读和实现的速度!


对不起,我漏掉了一点,我一开始没有注意到。这些计算是针对4个MAs进行的,有些情况下MA1>MA2,在MA3=MA4的时候(所以需要检查,因为这是策略的建立方式)。

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2<MA3 && MA2!=MA3 && MA3<MA4 && MA3!=MA4)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
                else
                {
                if (OrderComment()!="значение1")                                                         // если такого ордера нету
                   {
                   OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // тогда открываем
                   }
                }
         if (MA1<MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 && MA3>MA4 && MA3!=MA4)                          // если true новый сигнал
             {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,CLR_NONE);               // тогда закрываем
             }

           }
       } 
}

像这样?????

 
Vinin:


这里有一些奇怪的东西。

MA1>MA2,MA2>MA3,然后MA1<MA3


是的,对不起,我弄糊涂了,第一次在论坛上写作。先是抄写,然后决定手写,结果弄混了......。但上面的例子是正确的...

MA1>MA2,MA1<MA3,MA3<MA4

 

下午好。

请帮助我修改该指标

我有一个标准的Pivot,我想有一个指标,使用标准公式计算水平,但使用我自己输入的H、L、C数据。

我想用它来替代标准的Pivot。