Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 42

 

Guten Tag, ich kann nicht herausfinden, wie ich eine einfache Sache in MQL5 machen kann. Ich muss eine Variable auf Klassenebene (Typ dreidimensionales Array double) deklarieren und dann ihre späte Initialisierung im Konstruktor vornehmen. In C# würde es wie folgt aussehen:

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

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

}

Wie lässt sich das gleiche Ergebnis in MQL5 erzielen? Ich kann ein dreidimensionales dynamisches Array deklarieren. Aber mit ArrayResize Funktion kann ich Speicher nur für die erste Dimension zuweisen, was über die anderen beiden?

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Guten Tag! Liebe Forumsnutzer, kann mir bitte jemand einen Rat geben
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);
  }
//+------------------------------------------------------------------+

ERR_TRADE_SEND_FAILED
4756
Handelsanfrage konnte nicht gesendet werden

Warum hat es nicht geklappt? Vielleicht können mir die Fachleute schnell sagen, wo ich suchen muss, ansonsten werde ich bis heute Abend raten müssen...

Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
Dimka-novitsek:
Guten Tag! Liebe Forumsnutzerinnen und -nutzer, kann Ihnen jemand hier ein paar Tipps geben?

ERR_TRADE_SEND_FAILED
4756
Senden einer Handelsanfrage fehlgeschlagen

Warum hat es nicht geklappt? Vielleicht können Ihnen die Fachleute schnell sagen, wo Sie suchen müssen, ansonsten werde ich bis zum Abend raten...

Sie brauchen nicht zu raten, Sie müssen sich die Informationen in der MqlTradeRequest-Anfrage ansehen, Sie haben sie aus einem bestimmten Grund erstellt.

Nun, zunächst einmal haben Sie nicht angegeben, zu welchem Preis Sie verkaufen wollen

 
Dimka-novitsek: Ich würde gerne schnell wissen, wo ich suchen muss, sonst muss ich bis heute Abend raten...
Zunächst müssen Sie feststellen, wie viele Pflichtfelder für die Anforderungsvariable für diese Art von Aktion ausgefüllt werden müssen.
 
Ich danke Ihnen!!! Ich dachte irgendwie, dass bei sofortiger Vollstreckung der Preis verständlich wäre....
 
Guten Tag! Ich verstehe nicht ganz, wie man die Funktion
 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' - Funktion kann nur im globalen Bereich deklariert werden deposit.mq5 86 Kurz gesagt, irgendetwas ist falsch.

Im Allgemeinen möchte ich eine Funktion erstellen, die einen Prozentsatz der Einlage verwendet. 50 % ist zum Beispiel ein Angebot für die Hälfte meiner Einlage. Ich möchte verstehen, wie viel 1 Los ist? Kann sie programmatisch berechnet werden? Ich habe nun schon den dritten Tag nachgedacht und gelesen. Und die Lose können überall unterschiedlich sein - es hängt von der Art der Transaktion und vom Konto ab!

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
 
Dimka-novitsek:
Guten Tag! Ich verstehe nicht ganz, wie man die Funktion

OrderCalcMargin' - die Funktion kann nur im globalen Bereich von deposit.mq5 deklariert werden 86 Hier stimmt etwas nicht.

Dmitri!

Lesen Sie genau, was eine Funktion ist und was ein Funktionsaufruf ist

Sie haben ein völliges Durcheinander von Deklarationen und Verwendungen

 
Dimka-novitsek: Ich möchte verstehen, wie viel ist 1 Los? Ist es möglich, sie programmatisch zu berechnen? Ich habe jetzt drei Tage lang nachgedacht und gelesen. Und die Lose können überall unterschiedlich sein - es hängt von der Art der Transaktion und vom Konto ab!
Wenn Sie die zweite Frage beantwortet haben, versuchen Sie, den Artikel"Das ABC des Devisenhandels" anhand seines Titels zu finden. Es scheint für MT4 geschrieben zu sein, aber es ist nicht allzu speziell.
 

Ich danke Ihnen!

Ja, die Double-Pred-Funktion ist meine Schuld...

 

Er runzelt immer noch die Stirn... Sagen wir action=ORDER_TYPE_SELL, dann heißt es 'action' - nicht deklarierter Bezeichner. OderENUM_ORDER_TYPE action=ORDER_TYPE_SELL, hier steht 'action' - unerwartetes Token.

Es ist überall... Und auf Englisch...

 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 );  }
Grund der Beschwerde: