Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 42

 

Tünaydın! MQL5'te basit bir şeyi nasıl yapacağımı anlayamıyorum. Sınıf düzeyinde bir değişken (3D dizi tipi çift) bildirmem ve ardından yapıcıda geç başlatmasını yapmam gerekiyor. C#'da şöyle görünür:

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

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

}

MQL5'te benzer bir sonuç nasıl elde edilir? Bir 3B dinamik dizi ilan edebilirim. Ancak ArrayResize işleviyle, yalnızca ilk boyut için bellek ayırabilirim, peki ya kalan ikisi?

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Güzel gün! Sevgili forum kullanıcıları! Burada biri ipucu verebilir mi?
 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
Ticaret isteği gönderilemedi

Neden işe yaramadı? Belki profesyonel ustalar çabucak nereye bakmanız gerektiğini söyler, yoksa akşama kadar tahmin edebilirim..

Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
Dimka-novitsek :
Güzel gün! Sevgili forum kullanıcıları! Burada biri ipucu verebilir mi?

ERR_TRADE_SEND_FAILED
4756
Ticaret isteği gönderilemedi

Neden işe yaramadı? Belki profesyonel ustalar çabucak nereye bakmanız gerektiğini söyler, yoksa akşama kadar tahmin edebilirim..

ve tahmin etmenize gerek yok, MqlTradeRequest isteğindeki bilgilere bakmanız gerekiyor, onu boşuna yaratmadınız

Yeni başlayanlar için, satmayı planladığınız fiyatı belirtmediniz.

 
Dimka-novitsek : nereye bakman gerektiğini hemen söylerler, yoksa akşama kadar tahmin edebilirim..
Öncelikle, bu tür bir eylem için istek değişkeninde kaç tane zorunlu alanın doldurulması gerektiğine bakmanız gerekir.
 
Teşekkürler!!! Bir şekilde anında yürütme ile fiyatın anlaşılabilir olduğunu düşündüm ..
 
Güzel gün! işlevi nasıl kullanacağımı tam olarak anlamıyorum
 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' - işlev yalnızca deposit.mq5 86 8'in global kapsamında bildirilebilir. Kısacası, bir şeyler doğru değil.

Genel olarak soru şu ki, mevduat yüzdesini kullanmak için bir fonksiyon oluşturmak istiyorum. Örneğin %50, yarım depo anlaşmasıdır. Sadece anlamak istiyorum, aslında 1 lot ne kadar? Programlı olarak hesaplanabilir mi? Üçüncü gün düşünüyorum, okudum, anlamadım. Ve lot her yerde farklı olabilir - hesaptaki işlemin türüne bağlıdır !!

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
 
Dimka-novitsek :
Güzel gün! işlevi nasıl kullanacağımı tam olarak anlamıyorum

'OrderCalcMargin' - işlev yalnızca deposit.mq5 86 8'in global kapsamında bildirilebilir. Kısacası, bir şeyler doğru değil.

Dmitry!

İşlevin ne olduğunu ve işlev çağrısının ne olduğunu dikkatlice okuyun

Artık tam bir reklam ve kullanım karmaşanız var

 
Dimka-novitsek : Sadece anlamak istiyorum, aslında 1 lot ne kadar ?? Programlı olarak hesaplanabilir mi? Üçüncü gün düşünüyorum, okudum, anlamadım. Ve lot her yerde farklı olabilir - hesaptaki işlemin türüne bağlıdır !!
Dimon Vladimirych, ikinci soruya cevap almak için şu makaleyi bulmaya çalışın: " Döviz ticaretinin ABC'si", başlığa göre. MT4 altında yazılmış gibi görünüyor, ancak doğaüstü bir şey yok.
 

Teşekkür ederim!

Evet, çoğaltma işlevi sinirlendi - Ben batırdım ..

 

Hâlâ küfür ediyor. Diyelim ki action=ORDER_TYPE_SELL, bu 'eylem' gibi yemin ediyor - bildirilmemiş tanımlayıcı. Ve böylece ENUM_ORDER_TYPE action=ORDER_TYPE_SELL, 'eylem' gibi yemin eder - beklenmedik belirteç.

Ve böylece her yerde .. Ve İngilizce olarak ...

 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 );  }