Uzman Danışmanların uygulanmasının tartışılması. - sayfa 5

 
Ivan_Invanov :
Burada dilin sözdizimini inceledim. Tasarımcı örneğinden öğreniyorum. Bir sınıf çağrısı görüyorum. Sonra mantık benim için bozuldu. Ne yapmalıyım? Makaleler mi arıyorsunuz? Standart araçları uygulamak mı yoksa kendi sınıflarınızı yazmak mı daha iyi?
Tasarımcıyı açıklayan bir makale buldum. Örneğin, sinyal bloğunun çalışmasının açıklaması. Ve evet gibi birkaç kuru ifade, bu parametre sabittir. Ve değiştirmek için hiçbir şey yazılmaz. Burada böyle sorularım var, eğer bir parametreye ihtiyacım yoksa onu silebilir miyim? başlatma aşamasında, orada da silindi mi? Başka hangi seçenekleri ekleyebilirim ve nasıl? Değişimin bir örneğini görseydim, anlayabilirdim. Bunun tamamen referans materyalleri sorunu olduğunu düşünüyorum. Yeterince detay yok, yeterli örnek yok, sistemik algı için yeterli genelleme yok. Belki de gerçekten aptalım, bilmiyorum. Merak ediyorum, sadece benim için mi? Ya da belki öğreticilerin iyileştirilmesi gerekiyor? Örneğin, kişisel olarak para ödemeye hazırım.
 
Ivan_Invanov :

MQL5 - Bu, belgelerin en ayrıntılı açıklamasını içeren bir kaynaktır. Makalelerde, forumda ve CodeBase'de çok büyük bir bilgi katmanı. Her şeyin bu kadar detaylı çiğnendiği dünyanın hiçbir yerinde bulamazsınız.

İhtiyacın olan tek şey, her şeyi çözecek irade.

 
Vladimir Karputov :

MQL5 - Bu, belgelerin en ayrıntılı açıklamasını içeren bir kaynaktır. Makalelerde, forumda ve CodeBase'de çok büyük bir bilgi katmanı. Her şeyin bu kadar detaylı çiğnendiği dünyanın hiçbir yerinde bulamazsınız.

İhtiyacın olan tek şey, her şeyi çözecek irade.

İşte özel bir soru. CExpertSignal var, AddFilter var, AddFilter işlevleri hakkında yardımda hiçbir şey yazmıyor. Orada, örneğin, bir yayılma var. Örnek göremezsem nasıl yazayım. Tam olarak ne yapmam gerekiyor? Şimdi tahmin etmeye çalışacağım.

CExpert ExtExpert;
ExtExpert.InitSignal(signal);
signal.AddFilter(filter0);
filer0.Spread( 20 );

Hatasız derleme. Doğru yazmış mıyım? Şimdi spread 20'den fazla olursa işlemler sonuçlanmayacak mı? Ve böyle bir durumda ne yapmalısınız? Ne okuyabilir?

 
Ivan_Invanov :

İşte özel bir soru. CExpertSignal var, AddFilter var, AddFilter işlevleri hakkında yardımda hiçbir şey yazmıyor. Orada, örneğin, bir yayılma var. Örnek göremezsem nasıl yazayım. Tam olarak ne yapmam gerekiyor? Şimdi tahmin etmeye çalışacağım.

Hatasız derleme. Doğru yazmış mıyım? Şimdi spread 20'den fazla olursa işlemler sonuçlanmayacak mı? Ve böyle bir durumda ne yapmalısınız? Ne okuyabilir?

Okuyun: MQL4/MQL5 Sihirbazı

Egzersiz yapmak:

  • Sihirbazı kullanarak basit bir Uzman Danışman oluşturun
  • ortaya çıkan kodu MetaEditor'da açın
Ondan sonra sorular sorun.
Мастер MQL4/MQL5 - Справка по MetaEditor
Мастер MQL4/MQL5 - Справка по MetaEditor
  • www.metatrader5.com
Благодаря Мастеру MQL4/MQL5, трейдер может создать советника, не обладая знаниями в области программирования. Все что нужно сделать — это выбрать торговые сигналы, которые будет использовать советник, алгоритм мани-менеджмента и трейлинг-стопа. Код советника будет сгенерирован автоматически на основе выбранных параметров. Помимо этого, Мастер...
 
Ivan_Invanov :

İşte özel bir soru. CExpertSignal var, AddFilter var, AddFilter işlevleri hakkında yardımda hiçbir şey yazmıyor. Orada, örneğin, bir yayılma var. Örnek göremezsem nasıl yazayım. Tam olarak ne yapmam gerekiyor? Şimdi tahmin etmeye çalışacağım.

Hatasız derleme. Doğru yazmış mıyım? Şimdi spread 20'den fazla olursa işlemler sonuçlanmayacak mı? Ve böyle bir durumda ne yapmalısınız? Ne okuyabilir?

Bana öyle geliyor ki, temel bilgilere sahip olmadan yetişkinlere yönelik konuları hemen yazmaya başlama girişimi var. Bu böyle olmaz. Önce alfabeyi öğrenirler, sonra büyük harflerle yazarlar ve böylece yavaş yavaş kompozisyonlara ulaşırlar ve sonra yetenek gerekir. Yani burada, temel bilgi olmadan, otomatik olarak oluşturulan kodu bulmaya çalışmak... Kafanızı duvara vurmanın en iyi yolu değil.

 
//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalMA.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string              Expert_Title         = "1" ;         // Document name
ulong                     Expert_MagicNumber   = 15825 ;       //
bool                      Expert_EveryTick     = false ;       //
//--- inputs for main signal
input int                 Signal_ThresholdOpen = 10 ;           // Signal threshold value to open [0...100]
input int                 Signal_ThresholdClose= 10 ;           // Signal threshold value to close [0...100]
input double              Signal_PriceLevel    = 0.0 ;         // Price level to execute a deal
input double              Signal_StopLevel     = 50.0 ;         // Stop Loss level (in points)
input double              Signal_TakeLevel     = 50.0 ;         // Take Profit level (in points)
input int                 Signal_Expiration    = 4 ;           // Expiration of pending orders (in bars)
input int                 Signal_MA_PeriodMA   = 12 ;           // Moving Average(12,0,...) Period of averaging
input int                 Signal_MA_Shift      = 0 ;           // Moving Average(12,0,...) Time shift
input ENUM_MA_METHOD      Signal_MA_Method     = MODE_SMA ;     // Moving Average(12,0,...) Method of averaging
input ENUM_APPLIED_PRICE Signal_MA_Applied    = PRICE_CLOSE ; // Moving Average(12,0,...) Prices series
input double              Signal_MA_Weight     = 1.0 ;         // Moving Average(12,0,...) Weight [0...1.0]
//--- inputs for money
input double              Money_FixRisk_Percent= 10.0 ;         // Risk percentage
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- Initializing expert
   if (!ExtExpert.Init( Symbol (), Period (),Expert_EveryTick,Expert_MagicNumber))
     {
       //--- failed
       printf ( __FUNCTION__ + ": error initializing expert" );
      ExtExpert.Deinit();
       return ( INIT_FAILED );
     }
//--- Creating signal
   CExpertSignal *signal= new CExpertSignal;
   if (signal== NULL )
     {
       //--- failed
       printf ( __FUNCTION__ + ": error creating signal" );
      ExtExpert.Deinit();
       return ( INIT_FAILED );
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalMA
   CSignalMA *filter0= new CSignalMA;
   if (filter0== NULL )
     {
       //--- failed
       printf ( __FUNCTION__ + ": error creating filter0" );
      ExtExpert.Deinit();
       return ( INIT_FAILED );
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodMA(Signal_MA_PeriodMA);
   filter0.Shift(Signal_MA_Shift);
   filter0.Method(Signal_MA_Method);
   filter0.Applied(Signal_MA_Applied);
   filter0.Weight(Signal_MA_Weight);
//--- Creation of trailing object
   CTrailingNone *trailing= new CTrailingNone;
   if (trailing== NULL )
     {
       //--- failed
       printf ( __FUNCTION__ + ": error creating trailing" );
      ExtExpert.Deinit();
       return ( INIT_FAILED );
     }
//--- Add trailing to expert (will be deleted automatically))
   if (!ExtExpert.InitTrailing(trailing))
     {
       //--- failed
       printf ( __FUNCTION__ + ": error initializing trailing" );
      ExtExpert.Deinit();
       return ( INIT_FAILED );
     }
//--- Set trailing parameters
//--- Creation of money object
   CMoneyFixedRisk *money= new CMoneyFixedRisk;
   if (money== NULL )
     {
       //--- failed
       printf ( __FUNCTION__ + ": error creating money" );
      ExtExpert.Deinit();
       return ( INIT_FAILED );
     }
//--- Add money to expert (will be deleted automatically))
   if (!ExtExpert.InitMoney(money))
     {
       //--- failed
       printf ( __FUNCTION__ + ": error initializing money" );
      ExtExpert.Deinit();
       return ( INIT_FAILED );
     }
//--- Set money parameters
   money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parameters
   if (!ExtExpert.ValidationSettings())
     {
       //--- failed
      ExtExpert.Deinit();
       return ( INIT_FAILED );
     }
//--- Tuning of all necessary indicators
   if (!ExtExpert.InitIndicators())
     {
       //--- failed
       printf ( __FUNCTION__ + ": error initializing indicators" );
      ExtExpert.Deinit();
       return ( INIT_FAILED );
     }
//--- ok
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick ()
  {
   ExtExpert. OnTick ();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade ()
  {
   ExtExpert. OnTrade ();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   ExtExpert. OnTimer ();
  }
//+------------------------------------------------------------------+
Merhaba. Lütfen bana bu danışman için pazara girme sinyalinin ne olduğunu ve kodun neresinde olduğunu söyleyin?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Pazara giriş sinyali "filtrede" değil mi?
 
Neden farklı sınıf bildirimleri? neden bazen bellek yığını ve bazen değil? Yıldızlı mı yoksa yıldızsız mı?
 
Yayılmış bir filtreye ihtiyacım var ve burada ne yapıldığını anlıyorum. Buradaki stratejinin, eğer fiyat ortalamadan bir miktar daha yüksekse, o zaman bir anlaşma yapılması şeklinde olduğunu doğru anladım mı?
 
Ivan_Invanov :
Merhaba. Lütfen bana bu danışman için pazara girme sinyalinin ne olduğunu ve kodun neresinde olduğunu söyleyin?

Bu tür sorunları çözmek için bir hata ayıklayıcı kullanmanız gerekir.

Bir onay işareti geldiğinde OnTick() işlevi çağrılır. Tüm işlemler bunun içinde gerçekleşir, gerekirse sinyaller algılanır, gerekirse alım satım işlemleri yapılır.

Gördüğünüz gibi, bu fonksiyonda ExtExpert fonksiyonu çağrılır. OnTick () ve içinde her şey olur, kodda başka bir şey yoktur.

Buna göre, üzerinde bir kesme noktası belirlersiniz ve hata ayıklayıcıda Expert Advisor'ı başlatırsınız. İlk işaret gelir gelmez kesme noktası tetiklenir ve bu noktada kodda durursunuz. Ve sonra - neden ve hangi eylemlerin gerçekleştirildiğini anlayarak kodun içinde adım adım ilerlersiniz.

Neden: