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

 
Igor Makanu:

MQL的帮助与其他语言是一样的

并假定你至少有一些编写简单代码的基本经验

这就是为什么"//占位符 "这个词,大多数人甚至不会测试和检查它。

ushortfill_symbol='filler'// filler

就这些了。

 
awsomdino:

这是否意味着,在这里和像这样的情况下,你可以不填写这个字段?

喜欢

(指使用它是多么正确)

而第二个参数可以省略。

不,不是这样的。

有一个 "默认值 "的东西--你应该在帮助中阅读它,那里有 "函数 "的解释

但使用" 默认值 "很简单:如果函数描述中的帮助有一个符号= ,那么这就是默认值,如果你没有在这个地方自己写任何东西,编译器将使用 帮助中写的值

string  IntegerToString(
   long    number,              // число
   int     str_len=0,           // длина строки на выходе
   ushort  fill_symbol=' '      // заполнитель
   )
 

@Igor Makanu

谢谢,现在很多事情都清楚了。没有初步的知识,就很难做到一切

 
Artyom Trishkin:

一个简单的移动平均线,周期为14,移位为0,根据当前符号的日线图上的收盘价计算。我们取第一个条形图的值(零为当前日期)。

有什么方法可以在移动平均线上快速获得开盘和收盘之间的价格,并进行0转移,你指的是当前的酒吧?还是一个棘手的问题,这个函数没有现成的变量。

 

大家好。

当部分关闭订单时,我在警报窗口中得到一个警告 "OrderClose (28800839, 0.01) error (method: CloseOrderPartial) - trade is not allowed in expert properties"。

然而,事实上,一个正确的订单部分正在被关闭,EA正确地执行了订单的开仓和关闭。我在文档中没有发现这样的错误,在论坛上也没有发现。错误翻译说'该EA不允许交易',但我们可以看到实际情况并非如此,该EA正在交易。

也许有人遇到过这样的问题?

部分关闭的方法代码

//Закрытие ордера на продажу
//NumberOrder = тикет ордера, 0 - закрытие всех ордеров
//ValueClose = объем закрытия ордера
bool CloseOrderSell(int NumberOrder, double ValueClose)
{
   if (NumberOrder == 0)
   {
      for (int i = OrdersTotal() - 1; i >= 0; i--)
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
            {
               if(OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrMaroon) == false)
               {
                  Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());    
                  return false;       
               }
               else
               {
                  if (EnableMgs == true)
                     Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
                  return true;            
               }         
            }      
         }
   }
   else
   {
      if (OrderSelect(NumberOrder, SELECT_BY_TICKET) == true)
      {
         ValueClose = NormalizeDouble(ValueClose * OrderLots(), 2);
         if(OrderClose(OrderTicket(), ValueClose, Ask, Slippage, clrMaroon) == false)
         {
            Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());   
            return false;
         }
         else
         {
            if (EnableMgs == true)
               Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
            return true;
         } 
      }
      else
         Print("Ошибка #" + (string)GetLastError() + " выбора ордера на продажу #" + (string)NumberOrder + " при закрытии ордера");
   }
   return false;
} 
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
  • www.mql5.com
Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Seric29:

有什么方法可以快速获得开盘和收盘之间的价格,并在幻灯片上进行0转移,你指的是当前的酒吧?还是一个棘手的问题,这个函数没有现成的变量。

你是用它来做猫头鹰还是做指示器?
,它们的腿不同,你需要不同的滑轨)

 
Medvedina:

大家好。

当部分关闭订单时,警报窗口中出现 "OrderClose (28800839, 0.01) error (method: CloseOrderPartial) - trade is not allowed in expert properties"。

我认为问题不在于方法,而在于关闭条件。

日志中说什么?你能截图吗?

 
Taras Slobodyanik:

你要找的是猫头鹰还是火鸡?
,它们有不同的腿,需要不同的滑道)

正态平滑(还有指数平滑加权平均和其他什么)。我需要一个简单的也许是平滑的移动平均线,它将愚蠢地从开盘和收盘之间的中间穿过。我意识到,没有这样的事情,你必须做,因为没有人会认为像我这样的混蛋会出现,在非常复杂的情况下使用这样简单的东西,但我想到要做这样复杂的变量(Simle...)。

...不知道自己在计算什么,只是重画价格。我甚至不知道大型投资者是否注意平均数(如200,30,21,14,7)。如果我没有,我以后会做的。

 
MakarFX:

我认为问题不在于方法,而在于关闭条件。

日志上是怎么说的?可以给我一张截图吗?

下午好。

谢谢你的想法。的确,我没有注意到这一点,但得到警告的不是我的EA,而是另一个在同一对上并行工作的EA。奇怪的是,第二个EA的警告只在并行工作时出现。

 
Seric29:

一个普通的平滑的(还有指数平滑加权平均和其他什么)。我需要一个 简单的可能是平滑的移动平均线,愚蠢的是它会在开盘和收盘之间的中间位置通过。

所以自己加起来除以 - (MA1 + MA2 + MA3) / 3 = 平均MA

如果你按缓冲区计算,那么iMAOnArray

原因: