mql5语言的特点、微妙之处以及技巧 - 页 7

 
为了处理RAM文件,可以使用以下结构
const int handleRAM = FileOpen("\\\\.\\pipe\\RAM", FILE_READ | FILE_WRITE | FILE_BIN);

事先创建 一个适当的文件。

通过这种实现方式,可以方便/快速地将任何维度(和不同维度)的数组相互复制--而不需要强奸HDD/SDD。

// Копирование массивов любых размерностей (и разных) друг в друга
#define ARRAYCOPY(Dest, Source) \
  if (ArraySize(Source) > 0)                                                                  \
  {                                                                                           \
    const int handleRAM = FileOpen("\\\\REN\\pipe\\RAM", FILE_READ | FILE_WRITE | FILE_BIN);  \
                                                                                              \
    if (handleRAM != INVALID_HANDLE)                                                          \
    {                                                                                         \
      if (FileWriteArray(handleRAM, Source) > 0)                                              \
        FileReadArray(handleRAM, Dest);                                                       \
                                                                                              \
      FileClose(handleRAM);                                                                   \
    }                                                                                         \
  }
这是一个普遍的解决方案。这种抄袭的经典之作是这样的
// Копирует двумерный массив в одномерный
#define MATRIX_TO_VECTOR(Matrix, Vector)      \
  if (ArraySize(Matrix) > 0)                  \
  {                                           \
    const int Range1 = ArrayRange(Matrix, 0); \
    const int Range2 = ArrayRange(Matrix, 1); \
                                              \
    ArrayResize(Vector, Range1 * Range2);     \
                                              \
    int k = 0;                                \
                                              \
    for (int i = 0; i < Range1; i++)          \
      for (int j = 0; j < Range2; j++)        \
      {                                       \
        Vector[k] = Matrix[i][j];             \
                                              \
        k++;                                  \
      }                                       \
  }

// Копирует одномерный массив в двумерный
#define VECTOR_TO_MATRIX(Vector, Matrix)                               \
  if (ArraySize(Vector) > 0)                                           \
  {                                                                    \
    const int Size = ArraySize(Vector);                                \
    const int Range = ArrayRange(Matrix, 1);                           \
                                                                       \
    ArrayResize(Matrix, Size / Range + ((Size % Range == 0) ? 0 : 1)); \
                                                                       \
    for (int i = 0; i < Size; i++)                                     \
      Matrix[i / Range][i % Range] = Vector[i];                        \
  }
使用宏来代替函数,因为不可能将一个普遍大小的数组传递给函数。
 
德米特里-费多塞耶夫

重点是OnTradeTransaction()不会在OrderSend后立即触发。

总之,这里只是一群争论者,没有进入争论的主题。

如果必须在OrderSend()之后立即做一些事情,有两种算法的变体。

1.我们可以启动一个循环,等待订单和交易清单的更新。

2.完成OnTick()并等待OnTradeTransaction()触发。

3.通过打勾检查,看是否有新的订单或交易出现在列表中。

选择2和3 ))
 
什么可以取代mql5中的四重MODE_MARGINREQUIRED ?
 
阿尔乔姆-特里什金
在mql5中,我可以用什么来代替MODE_MARGINREQUIRED?

这个问题你需要问开发人员,因为论坛成员都不知道。我已经在不同的主题中问了4次这个问题,有一次我甚至得到了答案:"使用搜索",但搜索中的问题有100多个,没有一个答案。开发商没有 回答这个问题,可能是因为在Five中 没有可能 获得与存款货币不同的货币对的保证金。

在Five中,所有的东西都还是原始的,而且看起来会保持这种状态,但每个人都有一个OpenGL =)

 
Artyom Trishkin:
什么可以取代mql5中的四重MODE_MARGINREQUIRED ?
OrderCalcMargin() try https://www.mql5.com/ru/docs/trading/ordercalcmargin
 
安德烈-巴里诺夫
订单CalcMargin() try

这是可以理解的,但从指标上看,这并不可行

  double One_Lot=0.0;
  OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot);
  Comment(One_Lot); // залог на 1 лот
 
维塔利-穆齐琴科

这是可以理解的,但它与指标不兼容。

  double One_Lot=0.0;
  OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot);
  Comment(One_Lot);
它在帮助中说,它不能从指标中工作https://www.mql5.com/ru/docs/runtime/running
 
安德烈-巴里诺夫
这一点在帮助中写得很明确,从指标https://www.mql5.com/ru/docs/runtime/running,这一点不起作用。
我希望有一个独立于程序类型的计算。
 
阿尔乔姆-特里什金
我希望有一个独立于节目类型的计算。
哦,我也想得到很多东西 :)
 
安德烈-巴里诺夫
哦,我也想要很多 :)
嗯...这不是一个答案...
而这个问题只是关于支部的话题。