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

 

下午好,需要帮助的代码,我是一个新手。

问题是--追踪只在买入方向上起作用,在卖出方向上不起作用,代码显示错误" 订单修改错误。错误代码=4051"。

这里是代码中负责拖尾的部分。

void Trailing(int tral)
{ 
  int Mag=OrderMagicNumber();  

  OrderSelect(Mag,MODE_TRADES);

//+------------------------------------------------------------------+

//|                      tral buy                                    |

//+------------------------------------------------------------------+

  if (OrderType()==OP_BUY)

  if(Bid-OrderOpenPrice()>Point*tral)
    {
    if(OrderStopLoss()<Bid-Point*tral) 
       { 
       bool ress= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*tral,Digits),0,0,Blue); 
       if(!ress) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if(OrderStopLoss()>Ask+Point*tral) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          

 
Ivan Rozhkov:

下午好,需要帮助的代码,我是个新手,我认为在这里插入整个代码是不合适的。

问题是,追踪只在买入方向上起作用,在卖出方向上不起作用,而且代码给出错误" 订单修改错误"。错误代码=4051"。

谁能帮我解决这个问题,请发信息到

这个话题是用来讨论的,不是用来讨论轿子的。
 
Artyom Trishkin:
这个话题是用来讨论的,不是用来讨论轿子的。

请原谅我^_^

粘贴了部分代码,请告知错误所在

 
Ivan Rozhkov:

请原谅我^_^

插入了部分代码,请告诉我错误在哪里

看看这个主题--我已经发布了一个拖网模板。在中间的某个地方。
 
Ivan Rozhkov:

下午好,需要帮助的代码,我是一个新手。

问题是--追踪只在买入方向上起作用,在卖出方向上不起作用,代码显示错误" 订单修改错误。错误代码=4051"。

这里是负责拖尾的代码部分。

//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if((OrderStopLoss()==0.0) || (OrderStopLoss()>Ask+Point*tral)) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          
而且我不喜欢整个设计,这里有一个简单的拖尾魔术,和你的几乎一样。

bool trailingpos(int magic_,int trail_p)
  {
   bool res=true; double sl,slnew,tpips=trail_p*Point; int i,k=OrdersTotal();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==magic_)
           {
            switch(OrderType())
              {
               case OP_BUY:
                  slnew=NormalizeDouble(Ask-tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()<slnew)
                     if((sl<slnew) || (sl==0.0))
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
               case OP_SELL:
                  slnew=NormalizeDouble(Bid+tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()>slnew)
                     if((sl>slnew) || sl==0.0)
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
              }
           }
        }
     }
   return(res);
  }
 
如何为ZigZag正确地写一个iCustom,以便它能输出极值?
 
02031986dima:
如何正确编写ZigZag的iCustom,使其产生extrema的值?

你不需要写任何东西,你只需要来

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Igor Makanu:

我不喜欢整个结构,这里有一个简单的拖尾魔术,与你的几乎一样:

非常感谢你的帮助,由于某些原因,加入你的代码尾部不工作,我一定是做错了什么()

if((OrderStopLoss()==0.0)

我添加了它,它工作了,但它一直被垃圾邮件缠身,有1号和4051号错误。

#1-没有错误,但结果不明

#4051-函数参数的 无效

 

你好,有一个数据类型为datatime的数组。

我怎样才能把它变成一个可读的文件?

代码。

int h=FileOpen("test",FILE_WRITE|FILE_CSV|FILE_UNICODE);
      FileWriteArray(h,timeHistory,0,WHOLE_ARRAY);
      FileClose(h);

它只在有FILE_BIN 标志的情况下写,但它写的是不可读的。

如果FILE_BIN标志不存在,该文件仍然为空。

 
Karlinvain:

你好,有一个数据时间类型的数据数组。

我怎样才能把它变成一个可读的文件?

代码。

它只在有FILE_BIN 标志的情况下写,但它写的是不可读的。

如果FILE_BIN标志不存在,该文件仍然为空。

文件写入阵列

注.

一个字符串数组只能被写入TXT类型的文件。在这种情况下,字符串会自动以"\r\n "结尾。根据文件类型ANSI或UNICODE,字符串被转换为ANSI编码,或不转换。