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

 
Vasiliy Pushkaryov #:

6201 bar bilgilerini görüntüler

Üzerinde ne yazıyor?

printf((string)TerminalInfoInteger(TERMINAL_MAXBARS));
Büyük olasılıkla hikaye daha çok test uzmanı içindir, böylece göstergeler içinde doğru bir şekilde hesaplanır
 
MrBrooklin #:

Forum üyelerinden gelen ipuçlarını dikkate alarak, ne için büyük bir TEŞEKKÜRLER, senaryonun bu versiyonunu elde ettik:

Saygılarımla, Vladimir.

Senaryodaki çok önemli bir noktayı tamamen kaçırmışım. Partiyi normalleştirmek gerekiyordu. İşte düzeltilmiş versiyon:

//+------------------------------------------------------------------+
//|                            Lot_Size_Depending_On_Risk_And_SL.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
input uint Risk=6;         // Размер риска (> 0, но не более 100 %)
input uint Stop_Loss=1000; // Размер стоп-лосса (> 0, но не более 4294967295)
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot_Size_Depending_On_Risk_And_SL()
  {
//--- блок проверки входных параметров на корректность
   if(Risk==0 || Risk>100 || Stop_Loss==0)
     {
      Print("<===== Введены не корректные размеры риска и/или стоп-лосса! =====>");
      return(0.0);
     }
//--- блок определения размера лота
   double trading_account_currency=SymbolInfoDouble(_Symbol,SYMBOL_POINT)*
                                   SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/
                                   SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
   double lot=NormalizeDouble((AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/
                              (Stop_Loss*trading_account_currency),2);
//--- блок проверки размера лота на минимум и максимум от возможного
   double min_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   if(lot<min_volume)
      lot=min_volume;
   if(lot>max_volume)
      lot=max_volume;
//--- блок расчёта минимального шага изменения объёма необходимого для заключения сделки
   double step_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   int ratio=(int)MathRound(lot/step_volume);
   if(MathAbs(ratio*step_volume-lot)>0.0000001)
      lot=ratio*step_volume;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print(DoubleToString(Lot_Size_Depending_On_Risk_And_SL(),2));
  }
//+------------------------------------------------------------------+

Saygılarımla, Vladimir.

 
İyi günler!
Robotun ileri testini bitirdikten sonra, kalıcı bir sorunla karşılaştım: en iyi parametre setiyle tek bir test başlatırken, strateji test cihazı onu yürütmeye başlıyor ve sonuna kadar yürütüyor gibi görünüyor (ilerleme göstergesi motoruna göre), ancak sonra kilitleniyor. Metatrader'ın yeniden başlatılması gerekiyor ve tek testin (ve genel olarak tüm ileri testin) sonuçları kayboluyor.
Test cihazı neden kilitleniyor ve nasıl tedavi edilebilir?
Saygılarımla, Alexander
 
Uzmanlar, lütfen bana söyleyin: platformu tüm zaman dilimlerinde değil, yalnızca bazılarında işlem geçmiş ini yansıtacak şekilde nasıl ayarlayabilirim?
Ve şimdi sahip olduğumuz şey: "ticaret geçmişini göster" onay kutusunu tıklayın ve haftalık grafikteki tüm geçmiş (yukarı ve aşağı oklar) zaten sağlam bir çit.
Ve diğer araçlar (trend çizgileri, oklar, vb.) Gibi, görüntüsü tüm zaman dilimlerinde ayarlanamayan bir ayar istiyorum.
 

İyi günler. İki MA'nın kesişimine dayanan bir Uzman Danışmanın en basit örneğini nerede görebileceğimi söyleyebilir misiniz (bir ders verebilirsiniz).
Nasıl ekleneceğini biliyorum. Basit bir kopyala-yapıştır yapıp kodu uzatmak istemiyorum, başka yöntemler olduğunu biliyorum.
MQL4'te herhangi bir sorum olmadıysa, MQL5'te nasıl yapılacağını tam olarak anlayamıyorum.

 
makssub bir Uzman Danışmanın en basit örneğini nerede görebileceğimi söyleyebilir misiniz (bir ders verebilirsiniz).
Nasıl ekleneceğini biliyorum. Basit bir kopyala-yapıştır yapıp kodu uzatmak istemiyorum, başka yöntemler olduğunu biliyorum.
MQL4'te herhangi bir sorum olmadıysa, MQL5'te nasıl yapılacağını tam olarak anlayamıyorum.

Merhaba. MetaEDitor 5'i açın. İki MA'nın kesişimine dayanan yerleşik (standart) bir Uzman Danışmanı vardır. Kodu açın ve inceleyin. Veya CodeBase'de arayın. Burada, örneğin, iki MA'nın kesişimi üzerine inşa edilmiş ilk EA var.

Saygılarımla, Vladimir.


 
MrBrooklin #:

Merhaba. MetaEDitor 5'i açın. İki MA'nın kesişimine dayanan yerleşik (standart) bir Uzman Danışmanı vardır. Kodu açın ve inceleyin. Veya CodeBase'de arama yapın. Burada, örneğin, iki MA'nın kesişimi üzerine inşa edilmiş ilk EA var.

Saygılarımla, Vladimir.


Teşekkürler, bir göz attım.

OnInit'te ne olduğunu anladım.

Her şeyi OnTick'e doğru şekilde nasıl vidalayabilirim?

 
makssub #:

Teşekkürler, araştırdım.

OnInit'te kabaca neler olduğunu anlıyorum.

Tüm bunları OnTick'e nasıl vidalayabilirim?

Bir Uzman Danışman yazmanın yalnızca bir çeşidini gösteriyorum, ancak bu tür çok sayıda varyant olabilir. Her şey programcının niteliğine bağlıdır. Bir Uzman Danışmanın yapısı şu şekilde görünebilir:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Input variables                                                  |
//+------------------------------------------------------------------+

// здесь размещаем входные параметры советника

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // здесь инициализируем то, что считаем нужным
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   // здесь деинициализируем то, что считаем нужным   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- абстрактный пример советника

   Check_Trading();           // проверим условия разрешающие торговлю
   Signal_Up();               // ищем сигнал для открытия длинной позиции
   Open_Buy_Position();       // открываем длинную позицию
   Close_Buy_Positions();     // закрываем длинную позицию
   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Check_Trading()
  {

   // здесь вставляем условия разрешающие торговлю

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void  Signal_Up(); 
  {

   // здесь вставляем условия, при которых появляется сигнал на покупку

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Open_Buy_Position(); 
  {

   // здесь вставляем функцию открытия длинной позиции

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Close_Buy_Positions();
  {

   // здесь вставляем функцию закрытия длинной позиции

  }
//+------------------------------------------------------------------+

Bunun gibi bir şey. Bir kez daha vurguluyorum - bu Uzman Danışmanlar yazmak için bir rehber değil, Uzman Danışmanlarımı yazarken uyduğum yaklaşık bir yapıdır.

Saygılarımla, Vladimir.

 
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // здесь инициализируем то, что считаем нужным
   return(INIT_SUCCEEDED);

Nasıl yazacağımı bilmiyorum.

 
Лауреат #:

Nasıl yazacağımı bilmiyorum.

Sizin için tam olarak açık olmayan nedir? Bir EA başlatma işlevi nasıl oluşturulur? O zaman yeni başlayanlar için bu makaleyi incelemeye çalışın.

Saygılarımla, Vladimir.

Neden: