MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1668

 
artem artem # :

SanAlex , evet, bu yıl için test cihazına baktım, her şey yolunda) Sonuçlar iyi, yakın gelecekte gerçek bir hesap açmaya çalışacağım

uzmanın adı ne Kod tabanından mı indirdin? Yazarın bunu bir işlevde nasıl uyguladığını görmem gerekiyor

 //+------------------------------------------------------------------+
// Permission to trade in this day                                   |
//+------------------------------------------------------------------+
bool TradingDay( int hmin, int hmax) // Определение времени и дня разрешения торговли
  {
   bool dtrade = false ;
   switch (DayOfWeek())
     {
       case 1 : // Monday
         if (Monday == 1 )
            dtrade = true ;
         break ;
       case 2 : // Tuesday
         if (Tuesday == 1 )
            dtrade = true ;
         break ;
       case 3 : // Wednesday
         if (Wednesday == 1 )
            dtrade = true ;
         break ;
       case 4 : // Thursday
         if (Thursday == 1 )
            dtrade = true ;
         break ;
       case 5 : // Friday
         if (Friday == 1 )
            dtrade = true ;
         break ;
       default : //
         dtrade = false ;
         break ;
     }
   if (dtrade && !(Hour() >= hmin && Hour() <= hmax))
      dtrade = true ;
   return dtrade;
  }
//+------------------------------------------------------------------+

Bir şey eksik - ontik'e bir koşul eklemek için

 
SanAlex # :

uzmanın adı ne Kod tabanından mı indirdin? Yazarın bunu bir işlevde nasıl uyguladığını görmem gerekiyor

Bir şey eksik - ontik'e bir koşul eklemek için

Sasha, zamanında çalışmak dahil değildi. Geliştirme sürecinde bağlantı kurmak için bazı işlevler eklendi)
 
MakarFX # :
Sasha, zamanında çalışmak dahil değildi. Geliştirme sürecinde bağlantı kurmak için bazı işlevler eklendi)

şimdi kendim değiştireceğim

 
artem artem # :

SanAlex , evet, bu yıl için test cihazına baktım, her şey yolunda) Sonuçlar iyi, yakın gelecekte gerçek bir hesap açmaya çalışacağım

Bu zamanla çalışacak - işlevi değiştirdim

 //---
input string    s0 = "Баланс" ;                   // 1
input string    Template       = "ADX" ;         // Имя шаблона(without '.tpl')
input double    TargetProfit   = 1000000 ;       // Баланс + Прибыль(прибавить к балансу)
input double    TargetLoss     = 0 ;             // Баланс - Убыток(отнять от баланса)
input string    s2 = "Trading options" ;         // 2
input double    Lots           = 0.1 ;           // Lots
input double    MaximumRisk    = 0.02 ;           // MaximumRisk
input double    DecreaseFactor = 3 ;             // DecreaseFactor
input double    InpSLoss       = 4000 ;           // стоплосс
input double    InpTProfit     = 2000 ;           // тейкпрофит
input string    s3 = "TP SL" ;                   // 3
input double    InpTakeProfit  = 2000 ;           // Exchange TP
input double    InpStopLoss    = 4000 ;           // Exchange SL
input string    s4 = "Индикатор MA" ;             // 4
input int       MovingPeriodLw = 13 ;             // MovingPeriodLw
input int       MovingPeriodS1 = 55 ;             // MovingPeriodS1
input int       MovingPeriodS2 = 89 ;             // MovingPeriodS2
input string    s5 = "Индикатор MACD" ;           // 5
input int       InpFastEMA     = 12 ;             // Fast EMA Period
input int       InpSlowEMA     = 26 ;             // Slow EMA Period
input int       InpSignalSMA   = 9 ;             // Signal SMA Period
input string    s6 = "Start Stop" ;               // 6
input datetime HoursFrom      = D'1970.01.02' ; // 1 Время: старт
input datetime HoursTo        = D'1970.01.01' ; // Время: стоп
input datetime HoursFrom2     = D'1970.01.01' ; // 2 Время: старт
input string    s7 = "Time:Start Stop" ;         // 7
input int       HoursFrom1     = 0 ;             // Время: старт
input int       HoursTo1       = 24 ;             // Время: стоп
//+------------------------------------------------------------------+
 //+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//--- Закрыть Общий профит или профит на паре
   if (ProfitTarget())
     {
       return ;
     }
//--- Закрыть профит BUY или SELL на паре
   ProfitOnTick();
//---
   if ((HoursFrom<HoursTo && TimeLocal ()>=HoursFrom && TimeLocal ()<HoursTo) ||
      (HoursFrom>HoursTo && ( TimeLocal ()<HoursTo || TimeLocal ()>=HoursFrom)) ||
      (HoursFrom2<HoursTo2 && TimeLocal ()>=HoursFrom2 && TimeLocal ()<HoursTo2) ||
      (HoursFrom2>HoursTo2 && ( TimeLocal ()<HoursTo2 || TimeLocal ()>=HoursFrom2)))
     {
       MqlDateTime currTime;
       TimeLocal (currTime);
       int hour0 = currTime.hour;
       if ((HoursFrom1 < HoursTo1 && hour0 >= HoursFrom1 && hour0 < HoursTo1) ||
         (HoursFrom1 > HoursTo1 && (hour0 < HoursTo1 || hour0 >= HoursFrom1)))
        {
         // Определение направления пересечения мувингов
         if (Init)
            InitMetod();
         // Ожидание нового бара на графике
         if (timeprev == Time[ 0 ])
             return ;
         timeprev = Time[ 0 ];
         // Открытие ордера по методу Пуриа
         CheckForOpen();
        }
     }
  }
//+------------------------------------------------------------------+

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

mt4 ve mt5'te zaman fonksiyonu çalışıyor

Dosyalar:
 
MakarFX # :
Derslerden kurtulmak mı istiyorsunuz?

Onları daha yeni öğrendim. Bilmiyorum, çok kullanışlı. Ne önerirsiniz? Tüm fonksiyonlar itmek için mi? Eğer bu sorunu çözecekse.

Aynı sınıf Bar'dan iki global nesneye (bar, db_last) sahibim, ilki her yeni çubuğun parametreleriyle (grafikteki normal çubuk) başlatılır ve ikincisi tüm koşullara karşılık gelen çubuğu saklar. Aslında, Order sınıfının zaten yerel olan başka bir order nesnesinde, bir emir açmak için db_last parametrelerinden tüm hesaplamalar yapılır. db_last ve bar parametreleri birçok yerde kullanılır, ancak salt okunur, başlatma ve atama aynı yerde, OnTick()'te gerçekleşir, bu nedenle nesnelerde beklenmeyen herhangi bir değişiklik görünmemelidir.

 void OnTick ()
{
  last_time = iTime ( NULL , 0 , 0 );
  BreakevenActivate();

   if (last_time > bar.time_open){
     bar.Initialize();
    TrawlOnFractals();

     if (BarRelativeMA() == "bear" ){
      n_arrow_down++;
       db_last = bar;
       if (db_last.IsBearishDB() == true ) OpenOrder( "bear" );
      ArrowCreate( OBJ_ARROW_DOWN , 0 , "ArrowDown" + IntegerToString (n_arrow_down, 4 , '0' ),
                   0 , iTime ( NULL , 0 , 1 ),AnchorPrise( "bear" ), ANCHOR_BOTTOM );
    }

     if (BarRelativeMA() == "bull" ){
      n_arrow_up++;
      db_last = bar;
       if (db_last.IsBullishDB() == true ) OpenOrder( "bull" );
      ArrowCreate( OBJ_ARROW_UP , 0 , "ArrowUp" + IntegerToString (n_arrow_down++, 4 , '0' ),
                   0 , iTime ( NULL , 0 , 1 ),AnchorPrise( "bull" ), ANCHOR_TOP );
    }

    bar.time_open = last_time;
  }
   
}
 
Nerd Trader # :

Onları daha yeni öğrendim. Bilmiyorum, çok kullanışlı. Ne önerirsiniz? Tüm fonksiyonlar itmek için mi? Eğer bu sorunu çözecekse.

Aynı sınıf Bar'dan iki global nesneye (bar, db_last) sahibim, ilki her yeni çubuğun parametreleriyle (grafikteki normal çubuk) başlatılır ve ikincisi tüm koşullara karşılık gelen çubuğu saklar. Aslında, Order sınıfının zaten yerel olan başka bir order nesnesinde, bir emir açmak için db_last parametrelerinden tüm hesaplamalar yapılır. db_last ve bar parametreleri birçok yerde kullanılır, ancak salt okunur, başlatma ve atama aynı yerde, OnTick()'te gerçekleşir, bu nedenle nesnelerde beklenmeyen herhangi bir değişiklik görünmemelidir.

Deneyeceğim - bunun için para almıyorlar)

Ancak hatalar var , özellikle de basit normalleştirme hataları olduğu için

Dosyayı yükleyebilir misin? Göreceğiz.
 
SanAlex # :

uzmanın adı ne Kod tabanından mı indirdin? Yazarın bunu bir işlevde nasıl uyguladığını görmem gerekiyor

Bir şey eksik - ontik'e bir koşul eklemek için

SanAlex , bu mesaja indirdiğim sürümü ekledim - Puria + takip eden stop + başabaş seviyesi + saat başı işlem var. Ellerim buna ulaşana kadar ticareti saat başı test ederdim)

 
MakarFX # :

Geçmişin olmaması, testin başlangıcındaki gösterge okumalarını etkiler.

MakarFX , ben de düşündüm, bu yüzden her şey olması gerektiği gibi çalışmalı

 
artem artem # :

SanAlex , bu mesaja indirdiğim sürümü ekledim - Puria + takip eden stop + başabaş seviyesi + saat başı işlem var. Ellerim buna ulaşana kadar ticareti saat başı test ederdim)

https://www.mql5.com/en/code/12654 kod tabanında buldum

- Hedefini kaçırdım, neyi değiştirmek istedin?

Советник по методу Пуриа
Советник по методу Пуриа
  • www.mql5.com
Советник открывает позиции по алгоритму метода Пуриа.
 
SanAlex # :

https://www.mql5.com/en/code/12654 kod tabanında buldum

- Hedefini kaçırdım, neyi değiştirmek istedin?

Hangi eklemeleri yapmak istiyorum:

1. Öyle yap    bir anlaşma açmak   ve    tüm gösterge koşullarına uygunluğun kontrol edilmesi   (hızlı (5) iki yavaş (75) (85) çubuğun çaprazlanması ve MACD çubuğunun hızlı (5) ile aynı yönde açılması ) yapıldı.    sadece yeni bir mumun açılış fiyatına    (her biri 30 dakikalık bir mumun ilk tik işareti) ;
  1. "Sıfırlama" göstergeleri için koşullar oluşturun . Örneğin,    hızlı hareket eden ortalama (5) için: yavaş olanlardan daha yüksekse, bu bir satın alma sinyalidir. Ondan sonra aşağı inerse ve   (75) ve (85) yavaş hareket eden ortalamalardan birine dokunur veya arasındadır   - daha sonra hızlı hareket eden ortalamadan gelen sinyal, olduğu gibi,    "sıfırlandı" ve böyle kalacak    Yavaş dokunduğu veya arasında kaldığı sürece "sıfır" konumu . Bundan sonra ise,    hızlı, her iki yavaş olanı da bir yönde keser   (yavaş olanların dokunuşundan önce geldiği yöne döndüyse) -   o zaman bu göstergeden bir sinyal olacaktır .    MACD ile durum benzer   - bir tek    "sıfır" MACD=0 olacaktır   (mum üzerinde ise 1. MACD, örneğin değerle açıldı     0.0043 ve mum üzerinde 2. değeri ile    -0.0010 , öyleydi    "sıfır"   ve 2. mumdaki MACD yeni bir sinyal yayınladı). Ancak bir nokta var:    hızlı (5) ve MACD, olduğu gibi "eşit düzeyde" olmalıdır   - (5) yavaş olanlara göre pozisyonunu değiştirmiyorsa ve bu sırada MACD karşı bölgedeki son mumda (giriş yok) ve hızlı mumla aynı bölgedeki bir sonraki mumda açıldıysa, o zaman tüm koşullar birleşti ve arama emrine bir giriş olmalı.    Tüm bunların sadece mumların açılış fiyatlarında olması gerektiğine dikkatinizi çekiyorum - sadece bu kene için ;
  1. Aslında sonuncusu. Göstergeler için tüm koşulların çakışmasından sonra (mumların açılış fiyatlarında),    EA art arda 4 mum açılış fiyatı bekledi :

    1. 1. mumun açılış fiyatı - (5) (75) ve (85) + 0 üzerinde açılan MACD çubuğu -   4 onaydan 1'i ;
    2. 2. mumun açılış fiyatı - (5) (75) ve (85) + 0 üzerinde açılan MACD çubuğu -    4 onaydan 2'si ;
    3. 3. mumun açılış fiyatı - (5) (75) ve (85) + MACD çubuğu 0'ın üzerinde açıldı -    4 onaydan 3'ü ;
    4. 4. mumun açılış fiyatı - (5) (75) ve (85) üzerinde + MACD çubuğu 0'ın üzerinde açıldı -    4 onaydan 4'ü   -    Aynı mumu satın almak için bir anlaşma açmak (4.).
  Siparişler için benzer bir durum    sat , sadece göstergeler diğer yönde açılmalıdır. Ve önemli bir nokta var -   diyelim ki, 1. mumdan 4. muma kadar herhangi bir aşamada,    göstergeler konumlarını değiştirecek   (örneğin, 3. açılış mumunda, MACD çubuğu ya 0'ın altında ya da = 0'ın altında açılacaktır) —   sonra her şey sıfırlanır, tk. sinyaller arka arkaya 4 mum açma testini geçemedi .