[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 163

 
polsvv , bunun için sihir kullanılır. her danışmanın kendi büyüsü vardır
 
vnn :

Herkese merhaba...

Lütfen bana MetaTrader 4 geçmiş dosyalarının yolunu nasıl toplayacağımı söyler misiniz? "c:\program files\metatrader 4\history\alpari-classic\" gibi

https://docs.mql4.com/ru/files/FileOpenHistory
 

Çok teşekkürler, sergeev , sanırım anladım ...

Print("Terminal path: ", TerminalPath() + "\\history\\" + AccountServer() + "\\");

bu satır, editörün renklerde yanlış olmasına rağmen doğru yolu gösteriyor... Kodu muhtemelen bir not defterine yazmalısınız. Şaka.

 

Herkese iyi akşamlar!

Sergey Kovalev'in ders kitabında bir uzman buldum - takip eden bir durdurma. MetaEditor'a kopyaladım, derledim ama program çalışmıyor. Lütfen bana sebebinin ne olduğunu söyle. Belki yanlış bir şey yapıyorum.

 

mql ile mi yazılmış?

kodu gönder

 
Beyler, aptallara iCustom'un nasıl kullanılacağını açıklayın
yazıyorum
double BBUP =iCustom(NULL, 0, "Bands","BandsPeriod","BandsShift","BandsDeviations",1,0);
double BBDW =iCustom(NULL, 0, "Bands","BandsPeriod","BandsShift","BandsDeviations",2,0);
ve hala çalışmıyor...
Görevim, üst ve alt satırların Bantlar göstergesinden sinyal almak ...... Yani Bantlar .....
 
//------------------------------------------------ --------------------
// changestoploss.mq4
// MQL4 eğitiminde örnek olarak kullanılmak üzere tasarlanmıştır.
//------------------------------------------------ --------------------
harici int Tral_Stop=10; // Mah. zulüm
//------------------------------------------------ --------------- 1 --
int start() // Özel. başlatma işlevi
  {
   string Symb=Sembol(); // Finans. alet
//------------------------------------------------ --------------- 2 --
   for(int i=1; i<=OrdersTotal(); i++) // Sipariş üzerinden döngü
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Sonraki Varsa
        { // Siparişlerin analizi:
         int İpucu=SiparişTürü(); // Sipariş türü
         if(OrderSymbol()!=Symb||Tip>1)continue;// Bizim siparişimiz değil
         double SL=OrderStopLoss(); // Seçilen siparişin SL'si.
         //------------------------------------------------ ------ 3 --
         while(true) // Döngüyü Değiştir
           {
            çift TS=Tral_Stop; // başlangıç değeri
            int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Min. uzak
            if (TS<Min_Dist) // İzin verilenden az ise
               TS=Min_Dist; // Yeni TS değeri
            //------------------------------------------------ --- 4 --
            bool Değiştir=yanlış; // modifiyeye atanmamış
            switch(İpucu) // Sipariş tipine göre
              {
               durum 0 : // Siparişi satın al
                  if (NormalizeDouble(SL,Digits)< // Daha düşük isteniyorsa.
                     NormalizeDouble(Teklif-TS*Puan,Rakamlar))
                    {
                     SL=Teklif-TS*Noktası; // sonra değiştir
                     string Metin="satın al"; // Satın Al için Metin 
                     Değiştir=doğru; // modifiyeye atandı.
                    }
                  kırmak; // Çıkış anahtarı
               durum 1: // Satış emri
                  if (NormalizeDouble(SL,Digits)> // Daha yüksek isteniyorsa.
                     NormalizeDouble(Sor+TS*Puan,Rakamlar)
                     || NormalizeDouble(SL,Digits)==0)//veya sıfır
                    {
                     SL=Sor+TS*Puan; // sonra değiştir
                     Metin="Sat"; // Satış için Metin 
                     Değiştir=doğru; // modifiyeye atandı.
                    }
              } // bitiş anahtarı
            if (Değiştir==yanlış) // Değiştirilmediyse
               kırmak; // iken çık
            //------------------------------------------------ --- 5 --
            çift TP =OrderTakeProfit(); // Seçilen siparişin TP'si.
            doublePrice=OrderOpenPrice(); // Fiyat seçildi. ord.
            int Bilet=OrderTicket(); // Seçilen numara. ord.

            Uyarı ("Değiştirme",Metin,Bilet". Cevap bekleniyor..");
            bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Değiştirin!
            //------------------------------------------------ --- 6 --
            if (Ans==true) // Anladım :)
              {
               Alert("Sipariş",Metin,Bilet" değiştirildi :)");
               kırmak; // Değiştir döngüsünden.
              }
            //------------------------------------------------ --- 7 --
            int Hata=GetLastError(); // İşe yaramadı :(
            switch(Error) // Önlenebilir Hatalar
              {
               case 130:Alert("Yanlış duraklar. Tekrar deneyelim.");
                  Yeniler(); // Veriyi güncelle
                  devam etmek; // Yolda. yineleme
               case 136:Alert("Fiyat yok. Yeni bir onay işareti bekleniyor..");
                  while(RefreshRates()==false) // Bir sonraki onay işaretine kadar
                     Uyku(1); // Döngüde gecikme
                  devam etmek; // Yolda. yineleme
               case 146:Alert("İşlem alt sistemi meşgul. Tekrar deneyelim");
                  Uyku(500); // Basit bir çözüm
                  Yeniler(); // Veriyi güncelle
                  devam etmek; // Yolda. yineleme
                  // Kritik hatalar
               durum 2: Alert("Genel hata.");
                  kırmak; // Çıkış anahtarı
               case 5 : Alert("Müşteri terminalinin eski versiyonu.");
                  kırmak; // Çıkış anahtarı
               case 64: Alert("Hesap bloke edildi.");
                  kırmak; // Çıkış anahtarı
               case 133:Alert("Ticaret yasak");
                  kırmak; // Çıkış anahtarı
               varsayılan: Alert("Bir hata oluştu ",Hata);//Diğer. hatalar
              }
            kırmak; // Değiştir döngüsünden.
           } // Değiştirme döngüsünün sonu.
         //------------------------------------------------ ------ sekiz --
        } // Sipariş analizi sonu.
     } // Sipariş numaralandırmasının sonu.
//------------------------------------------------ --------------- dokuz --
   dönüş; // başlangıçtan çık()
  }
//------------------------------------------------ -------------- on --
 
VOLDEMAR :
Beyler, aptallara iCustom'un nasıl kullanılacağını açıklayın
yazıyorum
double BBUP =iCustom(NULL, 0, "Bands","BandsPeriod","BandsShift","BandsDeviations",1,0);
double BBDW =iCustom(NULL, 0, "Bands","BandsPeriod","BandsShift","BandsDeviations",2,0);
ve hala çalışmıyor...
Benim görevim, üst ve alt satırların Bantlar göstergesinden sinyal almak...... Yani Bantlar.....
https://docs.mql4.com/en/indicators/iBands
 
FelixFX :

Herkese iyi akşamlar!

Sergey Kovalev'in ders kitabında bir uzman buldum - takip eden bir durdurma. MetaEditor'a kopyaladım, derledim ama program çalışmıyor. Lütfen bana sebebinin ne olduğunu söyle. Belki yanlış bir şey yapıyorum.


Bunu kullan:

Kullanıcı değişkenlerinde şunu yazıyoruz:

 extern string    с 9 = "------ Трейлингстоп ------" ;
extern int       TrailingStop= 20 ; //Трейлинг-Стоп рыночного ордера. Если = 0 или то тарла нет
extern int       TrailingStep= 5 ; //Шаг трала рыночного ордера
extern bool      WaitProfit = true ; // Если true, то ждать профит = значению TrailingStop и только потом начинать тралить
                                     //Иначе, трейлинговать не дожидаясь положительного профита

extern string   с10=" -------- Прочие параметры -------------";
extern int      MAGIC=123456;//У ордеров открытых вручную MAGIC=0
extern int      Proskalz=10;//Проскальзывание

Danışmanın başında şunu yazıyoruz:

 // ----------------------------- Тралим ордера ------------------------------------
TrailingRyn_b(TrailingStop,TrailingStep,Proskalz,MAGIC,WaitProfit,false);

Başladıktan sonra, kullanıcı rutinlerinde şunu yazıyoruz:

 // =================================================================================================
// ************************* Трейлинг рыночных ордеров *********************************************
// =================================================================================================


// =================  TrailingRyn() =============================================================
// функция осуществляет трейлинг рыночных ордеров 
// ----------------------------------------------
void TrailingRyn_b( int ryn_TrStop, int ryn_TrStep, int Proskalz, int MAGIC, bool WaitProfit,   bool UseTrailingSound) {
   string SMB= Symbol (); 
   int i;
   int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL); //Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах   
   int SchBuy=SchBuy(MAGIC);
   int SchSell=SchSell(MAGIC);
   if (ryn_TrStop>=MinLevel && ryn_TrStep> 0 && (SchBuy> 0 || SchSell> 0 )){    
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--){
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {WriteError(i);}
       else {
         if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC){
          TrailingPositions_b(ryn_TrStop,ryn_TrStep,Proskalz,WaitProfit,UseTrailingSound);
        }
      }
    }
  }
 if (ryn_TrStop>=MinLevel && ryn_TrStep== 0 )
 Alert ( "Трейлинг невозможен - ryn_TrStep==0" );
} 
// =================================================================================================

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions_b( int ryn_TrStop, int ryn_TrStep, int Proskalz, bool WaitProfit, bool UseTrailingSound){
   if (OrderType()==OP_BUY){
     if (!WaitProfit || (Bid-OrderOpenPrice())>ryn_TrStop* Point ){
       if (OrderStopLoss()<Bid-(ryn_TrStop+ryn_TrStep- 1 )* Point ){
        ModifyStopLoss_b(Bid-ryn_TrStop* Point ,UseTrailingSound);
      }
    }
  }
   if (OrderType()==OP_SELL){
     if (!WaitProfit || OrderOpenPrice()-Ask>ryn_TrStop* Point ) {
       if (OrderStopLoss()>Ask+(ryn_TrStop+ryn_TrStep- 1 )* Point || OrderStopLoss()== 0 ){
        ModifyStopLoss_b(Ask+ryn_TrStop* Point ,UseTrailingSound);
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss_b( double ldStopLoss, bool UseTrailingSound){
   bool fm=false;
   string NameTrallingSound  = "ok.wav" ; // Наименование звукового файла для трейлинга
  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(), 0 , CLR_NONE );
   if (fm!= 0 && fm!=- 1 ){
     if (UseTrailingSound) { PlaySound (NameTrallingSound);}
  }   
   if (fm== 0 || fm==- 1 ) { ModifError();}
}
//+------------------------------------------------------------------+

ModifError() gibi işlevler benim özel işlevlerimdir - sadece bir hata mesajı yazdırırlar. Bunun yerine mesajlarınızı yazın.

 
Teşekkürler .... Bana yardımcı olsaydı, soruyu burada sormazdım .............