初学者的问题 MQL5 MT5 MetaTrader 5 - 页 42

 

下午好!我不知道如何在MQL5中做一件简单的事情。我需要声明一个类级变量(类型为三维数组双),然后在构造函数中对其进行后期初始化。在C#中,它看起来像这样。

public class MyClass
{
   
  private double[,,] myArray;
   
  public MyClass(int dimension1, int dimension2, int dimension3)

{
   myArray = new double[dimension1, dimension2, dimension3];

}

如何在MQL5中实现同样的结果?我可以声明一个三维的动态数组。但是用ArrayResize函数,我只能为第一个维度分配内存,其他两个维度呢?

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
日安!亲爱的论坛用户,谁能在这里提供建议
int OnInit()
  {
//---
  Print ( ACCOUNT_BALANCE );
   Print (SYMBOL_MARGIN_INITIAL);//Начальная (инициирующая) маржа обозначает размер необходимых залоговых средств в маржинальной валюте для открытия позиции объемом в один лот. Используется при проверке средств клиента при входе в рынок.
  
   printf("ACCOUNT_BALANCE =  %G",AccountInfoDouble(ACCOUNT_BALANCE));
   printf("ACCOUNT_CREDIT =  %G",AccountInfoDouble(ACCOUNT_CREDIT));
   printf("ACCOUNT_PROFIT =  %G",AccountInfoDouble(ACCOUNT_PROFIT));
   printf("ACCOUNT_EQUITY =  %G",AccountInfoDouble(ACCOUNT_EQUITY));
   printf("ACCOUNT_MARGIN =  %G",AccountInfoDouble(ACCOUNT_MARGIN));
   printf("ACCOUNT_FREEMARGIN =  %G",AccountInfoDouble(ACCOUNT_FREEMARGIN));
   printf("ACCOUNT_MARGIN_LEVEL =  %G",AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));
   printf("ACCOUNT_MARGIN_SO_CALL = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL));
   printf("ACCOUNT_MARGIN_SO_SO = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_SO));
  
   MqlTradeRequest request={0};
      MqlTradeResult result={0};
      
 
  {
    request.    action=TRADE_ACTION_DEAL;           // Тип выполняемого действия
  
    request.                        volume=1;           // Запрашиваемый объем сделки в лотах     
    request.               type=ORDER_TYPE_SELL;             // Тип ордера
    
   }
   
  OrderSend(request,result); 
  
  
  int Error=GetLastError(); ResetLastError();
        printf("Error %i ",Error);
      
        
        
       
  
  
  
  
  
  
  
  
//---
   return(0);
  }
//+------------------------------------------------------------------+

误入歧途。
4756
发送交易请求 失败

为什么没能成功?也许专业人士可以迅速告诉我去哪里找,否则我就得猜到晚上了......。

Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
Dimka-novitsek:
日安!亲爱的论坛用户,谁能在这里给你一些提示?

误入歧途。
4756
发送交易请求 失败

为什么没能成功?也许专业人士会很快告诉你该去哪里找,否则我就要猜到晚上了......。

你不需要猜测,你需要看一下MqlTradeRequest请求中的信息,你创建它是有原因的。

好吧,首先你没有说明你打算以什么价格出售

 
Dimka-novitsek: 我希望能迅速知道在哪里找,否则我将一直猜测到晚上......
首先,你需要看一下这种类型的动作的请求变量必须填写多少个必填字段。
 
谢谢你!!!。我莫名其妙地认为,即时执行的价格是可以理解的,....。
 
日安!我不太明白如何使用函数
 for (int i=0;i<10;i=i+0.1){ Print( "i ",i);  
 bool  OrderCalcMargin(
         action=ORDER_TYPE_SELL,           // тип ордера
                  symbol=_Symbol,           // имя символа
                  volume=i,           // объем
                  price=last_tick.bid,            // цена открытия
   double&               margin            // переменная для получения значения маржи
   ); 
   Print( " margin  ", margin );  }
  

OrderCalcMargin' - 函数只能在全局范围内声明 deposit.mq5 86 有问题,简而言之。

一般来说,我想创建一个使用存款百分比的函数。例如,50%是我一半的存款的交易。我想了解1手是多少钱?能否通过程序计算?我已经思考和阅读了第三天了。而且各地的地段可能不同--这取决于交易的类型 和账户!

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
 
Dimka-novitsek:
日安!我不太明白如何使用函数

OrderCalcMargin' - 该函数只能在 deposit.mq5 86 的全局范围内声明。

德米特里!

仔细阅读什么是函数,什么是函数调用

你有一个完全混乱的声明和用途

 
Dimka-novitsek: 我想了解,1手是多少钱?是否有可能通过程序计算?我已经思考和阅读了三天了。而且各地的地段可能不同--这取决于交易的类型 和账户!
如果你的答案是第二个问题,请尝试按标题找到《货币交易的ABC》 这篇文章 它似乎是为MT4编写的,但它并不太特别。
 

谢谢你!

是的,双重预测功能是我的错...

 

但它仍然犯了错误......比方说,action=ORDER_TYPE_SELL,它说'action'-未声明的标识符。或者ENUM_ORDER_TYPE action=ORDER_TYPE_SELL,它说'action'--意外的标记。

它无处不在...而在英语方面...

 for (int i=0;i<10;i=i+0.1){ Print( "i ",i);  
  OrderCalcMargin(
       ENUM_ORDER_TYPE  action=ORDER_TYPE_SELL,           // тип ордера
                  symbol=_Symbol,           // имя символа
                  volume=i,           // объем
                  price=last_tick.bid,            // цена открытия
                 margin            // переменная для получения значения маржи
   ); 
   Print( " margin  ", margin );  }