[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 222

 
smartemiy :

Sevgili PROS!

Senden yardım istiyorum!

20-80 işlem sonuçlandırıyor. Anlayamıyorum, DC'ye mi bağlı?

bir yerine - 100 adet koyar.

lütfen yardım et!!

Başlatma fonksiyonu her tik üzerinde yürütülür ve emir açma koşulu karşılanırsa her tikte yeni bir emir açılır.

Maksimum açık sipariş sayısı veya çubuk başına bir sipariş vb. için limitler girin.

 
splxgf :

Başlatma fonksiyonu her tik üzerinde yürütülür ve eğer emir açma koşulu sağlanırsa her tikte yeni bir emir açılır.

Maksimum açık sipariş sayısı veya çubuk başına bir sipariş vb. için limitler girin.

Cevabınız için çok teşekkür ederim!

splxgf , şunu da düşündüm:

 int init()
{   RefreshRates ();
   if (NumberOfOrders()> 15 ) return ( 0 ); // если число открытых ордеров превышает число 15, тогда советние не торгует
   if (OpenStop()> 30 ) return ( 0 );       // если число отложеных ордеров превышает число 15, тогда советние не торгует
}

NumberOfOrders - açık siparişlerin sayısını sayar. OpenStop - f-I gecikmelerin sayısını sayar.

Bir sipariş açma koşulu karşılanır ve danışman arka arkaya isteğe bağlı sayıda mevduat yerleştirir.

>splxgf : bu kod seçeneği, işlem sayısı aşıldığında EA'yı durdurur. Ve nasıl yazılır, böylece koşul tetiklendiğinde bir sipariş verilir?

 

init yalnızca bir kez yürütülür https://docs.mql4.com/en/basis/functions/special

 int MaxOpenOrders= 15 ;

int start()
  { 
     //bla-bla
     if ((( OrderOpenPrice ()-pAsk) >= - 60 || OrdersTotal ()<MaxOpenOrders) //открываем новые если количество открытых и отложенных ордеров не превышает 15
     OrderSend ...
  

Genel olarak, bir öğretici https://book.mql4.com/en/ vardır.

Durumun yalnızca bir kez çalışmasını istiyorsanız, o zaman daha zordur.

 
Kral! Netbook ve 3G modem (sayfa 221 ) hakkındaki soruma birisi cevap verebilir mi? Şimdiden teşekkürler.
 
splxgf :

init yalnızca bir kez yürütülür https://docs.mql4.com/en/basis/functions/special

Genel olarak, bir öğretici var https://book.mql4.com/ru/

Koşulun yalnızca bir kez çalışmasını istiyorsanız, o zaman daha zordur.

teşekkür etmek!

Bunu halledeceğim!

 

Veritabanını karıştırdım, bulamadım ama belki de kötü görünüyordum.

Söyle bana canım, benzer bir şeyin var mı:

Algoritma basittir: her n noktada bir emrin açıldığı bir ızgara analogu (fiyat hareketinin yönüne bağlı olarak alım veya satım). Siparişler, m puanlık bir kâr elde edilene kadar açılır. Bu değere ulaşıldığında tüm siparişler kapatılır, her şey baştan başlar.

İlginiz için şimdiden teşekkür ederiz.

 
Zhunko :
Yüklenen geçmişi geçmiş dosyalarına kaydetme görevi vardı. İndirme işlemi sırasında tüm geçmiş bellekte tutulur. MT4 penceresini kapattıktan sonra MT4 kullanarak dosyalara kaydetme başlar. Hızlı bir süreç değil.

Vadim, kaydetme sorununu şu şekilde çözdüm:

 if ( Bars <7000)
  {
     int handle, bar, wParam;
    handle= WindowHandle ( Symbol (), Period ());
    switch ( Period ())
            {
                   case PERIOD_M1 :  wParam = 33137 ; break ;
                   case PERIOD_H1 :  wParam = 33135 ; break ;
                   case PERIOD_D1 :  wParam = 33134 ; break ;
            }
     for (bar= 1 ;bar<7000;bar=+ 100 )
      {
         Comment ( Bars );
        PostMessageA(handle,WM_KEYDOWN,VK_HOME, 0 ); Comment ( Bars ); Sleep ( 10000 ); 
        PostMessageA(handle,WM_COMMAND, 33135 , 0 );   Comment ( Bars ); Sleep ( 10000 ); 
        PostMessageA(handle,WM_KEYDOWN,VK_HOME, 0 ); Comment ( Bars ); Sleep ( 10000 ); 
        PostMessageA(handle,WM_COMMAND, 33134 , 0 );   Comment ( Bars ); Sleep ( 10000 ); 
        PostMessageA(handle,WM_KEYDOWN,VK_HOME, 0 ); Comment ( Bars ); Sleep ( 10000 ); 
        PostMessageA(handle,WM_COMMAND, 33137 , 0 );   Comment ( Bars ); Sleep ( 10000 ); 
        bar= Bars ;
         RefreshRates ();
         if ( Bars >=7000) {PostMessageA(handle,WM_KEYDOWN,VK_END, 0 ); StartProfit();} //обязательный выход, иначе просто остается и подкачивает данные
        
      }
   }

Zaman dilimleri arasında geçiş sayesinde, geçmiş aynı anda birkaç zaman dilimi için kaydedilir (bu durumda dakika, 1 saat, gün). Böylece, terminali kapatmaya gerek yok, ancak indirme o kadar hızlı değil, bir döviz çifti için yaklaşık 1 dakikalık (bu koşullar altında) bir hız elde etmeyi başardık, yani. birçok para biriminde çalıştırılırsa, terminal yarım saat donar. EA, terminali yeniden başlatmadan geçmiş verileri kullanmaya başlar.

 
forexnew :

Vadim, kaydetme sorununu şu şekilde çözdüm:

Zaman dilimleri arasında geçiş sayesinde, geçmiş aynı anda birkaç zaman dilimi için kaydedilir (bu durumda dakika, 1 saat, gün). Böylece, terminali kapatmaya gerek yok, ancak indirme o kadar hızlı değil, bir döviz çifti için yaklaşık 1 dakikalık (bu koşullar altında) bir hız elde etmeyi başardık, yani. birçok para biriminde çalıştırılırsa, terminal yarım saat donar. EA, terminali yeniden başlatmadan geçmiş verileri kullanmaya başlar.

Aynı şeye sahibim, sadece çok daha güvenilir. TF'yi değiştirirken, geçmiş dosyalara kaydedilmez. Sadece terminali boşaltırken.

Bazen terminalin kendisi geçmişi kaydetmeye başlar, ancak bunun TF'yi değiştirmekle ilgisi yoktur.

 
Zhunko :

Aynı şeye sahibim, sadece çok daha güvenilir. TF'yi değiştirirken, geçmiş dosyalara kaydedilmez. Sadece terminali boşaltırken.

Bazen terminalin kendisi geçmişi kaydetmeye başlar, ancak bunun TF'yi değiştirmekle ilgisi yoktur.

Ve sadece belirli zaman dilimlerini (tümü değil) indirecek şekilde nasıl kurulur: dakika, 1 saat ve gün?

Yani: string sTimeFrame = {"M1", "H1", "D1"}; // Taranan TF'leri listeleyen dize.

Dakikada 2000 çubuktan fazlasını indirmiyor ve danışmanımın 7000'den fazlasına ihtiyacı var. Bu komut dosyasını kullanarak indirdikten sonra danışmanım indirmeyi bitiriyor.

Tüm çubukların pompalanmaması tasarımdan mı kaynaklanıyor?

 

Merhaba sevgili topluluk.

Böyle bir problemim var. Şablonumda "Bollinger Bantları" göstergesini kullanıyorum (iBands - https://docs.mql4.com/en/indicators/iBands ) parametrelerinden biri - sapma (standart sapma) orada int olarak tanımlanır. Bir şekilde double olarak biçimlendirmek mümkün mü? MT4'te Özel Göstergeler bölümünde, sapmanın double olarak tanımlandığı başka Bollinger Bantları ("Bands" olarak işaretlenmiştir) vardır. Ama MQL4'e nasıl eklenir. Standart yerleşik göstergeler grubuna dahil değildir, değil mi? Teşekkür ederim.