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

 

Değerli bilgiler için çok teşekkürler.

Bir yapının ne olduğunu ve nasıl çalıştığını genel olarak anladım. Ama henüz tüm incelikleri tam olarak anlayamadım.

ile ilişkili. Görsel örnekler aracılığıyla yeni materyalleri çok daha iyi öğreniyorum.
Aşağıdaki koşulun kodunu mql5'te nasıl yazacağınızı gösterirseniz çok minnettar olurum.
Bir yapı kullanarak bir siparişin nasıl açılacağını zaten öğrendim


if(Saat()==10)

sipariş aç.

Örnek bir sipariş açılışı yazmanıza gerek yok.... koşulunu yazmanız yeterli.

Yardımın için tekrar teşekkürler.

 
Igor Makanu :

muhtemelen barın fiyatını ve zamanını şu şekilde belirlemek istersiniz:

daha ziyade, bunlar grafikteki zaman + fiyat değerlerinde fare tıklamasının koordinatlarıdır, çubuk iBarShift() kullanılarak belirlenmelidir.

Evet, bu, daha da açık olduğu gibi. Teşekkür ederim)

 
ANDREY :

Değerli bilgiler için çok teşekkürler.

Bir yapının ne olduğunu ve nasıl çalıştığını genel olarak anladım. Ama henüz tüm detayları tam olarak kavrayamadım.

ile ilişkili. Görsel örnekler aracılığıyla yeni materyalleri çok daha iyi öğreniyorum.
Aşağıdaki koşulun kodunu mql5'te nasıl yazacağınızı gösterirseniz çok minnettar olurum.
Bir yapı kullanarak bir siparişin nasıl açılacağını zaten öğrendim


if(Saat()==10)

sipariş aç.

Örnek bir sipariş açılışı yazmanıza gerek yok.... koşulunu yazmanız yeterli.

Yardımın için tekrar teşekkürler.

 MqlDateTime time_now;
TimeCurrent (time_now);
if (time_now.hour== 10 )
{
// открыть ордер
}
 
Igor Makanu :

Yardımın için çok teşekkürler. Şimdi her şey açık ve anlaşılır.

 

Hepinize iyi günler!
mql4'ten mql5'e geçmeye çalışıyorum. Siparişleri açan basit bir kodu test etmek için oluşturuldu. Uzman Danışman sipariş test cihazı açılır. Print() fonksiyonunu void OnTick() fonksiyonunun başına yerleştirdim.Dörtlüde, EA bu fonksiyonu her tikte girecek ve Journal'daki her tikte yazdıracaktı. Ve beşte - hiçbir işarette Expert Advisor Print() işlevine girer ve Journal'a hiçbir şey yazdırmaz. Expert Advisor'da görselleştirme ve optimizasyon devre dışı bırakılır.
Lütfen kodu nasıl değiştireceğimi söyleyin, böylece Print() her tikte, dördünde olduğu gibi günlükte yazdırılır.
Bana yardımcı olan herkese şimdiden teşekkürler.

İşte kodum

 input int       StopLoss= 30 ;       // Stop Loss
input int       TakeProfit= 100 ;   // Take Profit
input double    Lot= 0.1 ;           // Количество лотов для торговли
int A;     //

//+------------------------------------------------------------------+
void OnTick ()
  {
Print ( "====================================================" ,   TimeCurrent () )   ;
//--- Объявляем структуры, которые будут использоваться для торговли
   MqlTick latest_price;       // Будет использоваться для текущих котировок
   MqlTradeRequest mrequest;   // Будет использоваться для отсылки торговых запросов
   MqlTradeResult mresult;     // Будет использоваться для получения результатов выполнения торговых запросов
 if (! SymbolInfoTick ( _Symbol ,latest_price))
   {
         mrequest.action = TRADE_ACTION_DEAL ;                                   // немедленное исполнение
         mrequest.price = NormalizeDouble (latest_price.bid, _Digits );           // последняя цена Bid
         mrequest.sl = NormalizeDouble (latest_price.ask + StopLoss* _Point , _Digits ); // Stop Loss
         mrequest.tp = NormalizeDouble (latest_price.ask - TakeProfit* _Point , _Digits ); // Take Profit
         mrequest.symbol = _Symbol ;                                             // символ
         mrequest.volume = Lot;                                                 // количество лотов для торговли
         mrequest.type= ORDER_TYPE_SELL ;                                       // ордер на продажу
         mrequest.type_filling = ORDER_FILLING_FOK ;                             // тип исполнения ордера - все или ничего
         mrequest.deviation= 100 ;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
     OrderSend (mrequest,mresult);
    }   
     return ;
  }

Expert Advisor'daki depozitoyu 100.000'e çıkardı.Sonuç olarak, Print() her tikte log'a yazdırılmaya başlandı... Ama tek bir anlaşma açılmadı.

Ve her iki anlaşmanın da açılmasına ve Print()'in görüntülenmesine ihtiyacım var.

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
ANDREY :

Hepinize iyi günler!
mql4'ten mql5'e geçmeye çalışıyorum. Siparişleri açan basit bir kodu test etmek için oluşturuldu. Uzman Danışman sipariş test cihazı açılır. Print() fonksiyonunu void OnTick() fonksiyonunun başına yerleştirdim.Dörtlüde, EA bu fonksiyonu her tikte girecek ve Journal'daki her tikte yazdıracaktı. Ve beşte - hiçbir işarette Expert Advisor Print() işlevine girer ve Journal'a hiçbir şey yazdırmaz. Expert Advisor'da görselleştirme ve optimizasyon devre dışı bırakılır.
Lütfen kodu nasıl değiştireceğimi söyleyin, böylece Print() her tikte, dördünde olduğu gibi günlükte yazdırılır.
Bana yardımcı olan herkese şimdiden teşekkürler.

İşte kodum

Expert Advisor'daki depozitoyu 100.000'e çıkardı.Sonuç olarak, Print() her tikte log'a yazdırılmaya başlandı... Ama tek bir anlaşma açılmadı.

Ve her iki anlaşmanın da açılmasına ve Print()'in görüntülenmesine ihtiyacım var.

Neyin yazdırıldığını görmek için günlüklere bakın, her adımda oraya bilgi girilir. Büyük olasılıkla siparişlerin açılmasıyla ilgili bir sorun var ve danışman çalışmıyor.

C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E\MQL5\Logs

 
Igor Makanu :

MQL4'ten terminal verilerine birçok kez erişmeye değer olup olmadığını, ardından OrderSelect hakkında sizinle zaten tartışmıştık https://www.mql5.com/ru/forum/342989#comment_16743716

güncel fiyatları da test edebilirsiniz, bence tek tıkta 100500 kez kullanılabilir, çünkü saniyede milyonlarca kez performans olacak


tek şey, evet - piyasaya genel bakış penceresinde ne kadar fazla sembol varsa, terminalin kendisi o kadar fazla yüklenecek ve buna göre, birçok farklı sembolden veri çağırırsanız, gecikmeler de olacaktır.

onlar. terminali akıllıca kullanırsanız, hiçbir şey askıda kalmaz - pazara genel bakış penceresinde sizin kullandığınız on karakter vardır


Aynı anda kaç grafiğin açılabileceğini kontrol etmedim, ancak geçmiş 1000 çubukla sınırlıysa, büyük olasılıkla terminal birkaç düzine grafik penceresini sorunsuz bir şekilde çekecektir.

100

 
Valeriy Yastremskiy :

Neyin yazdırıldığını görmek için günlüklere bakın, her adımda oraya bilgi girilir. Büyük olasılıkla siparişlerin açılmasıyla ilgili bir sorun var ve danışman çalışmıyor.

C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E\MQL5\Logs

Bahşiş için teşekkürler.

Gerçekten çalışmıyor. yazar.

2020.10.27 06:40:45.311 test cihazı EURUSD: geçmiş verileri 2018.01.02 00:00'dan başlar

2020.10.27 06:40:45.312 çekirdek 1 127.0.0.1:3000'e bağlanıyor

2020.10.27 06:40:45.312 çekirdek 1 bağlı

2020.10.27 06:40:45.320 çekirdek 1 yetkili (aracı derleme 2650)

2020.10.27 06:40:45.323 test cihazı EURUSD,M1 (Alpari-MT5-Demo): 2020.09.01 00:00'dan 2020.09.03 00:00'a kadar Experts\GRAIL.ex5 testi

2020.10.27 06:40:45.327 çekirdek 1 ortak senkronizasyon tamamlandı

2020.10.27 06:40:45.328 test cihazı analiz edilen geçmişin kalitesi %100

2020.10.27 06:40:45.348 çekirdek 1 Experts\GRAIL.ex5'i EURUSD üzerinde test edin,M1 iş parçacığı tamamlandı

2020.10.27 06:40:45.348 çekirdek 1 kapatmaya hazırlanın

2020.10.27 06:40:45.348 çekirdek 1 giriş (2650 oluştur)

2020.10.27 06:40:45.348 çekirdek 1 USD para birimi ile hesap bilgisi bulundu

2020.10.27 06:40:45.348 çekirdek 1 1482 bayt test cihazı parametresi yüklendi

2020.10.27 06:40:45.348 çekirdek 1 1724 bayt giriş parametresi yüklendi

2020.10.27 06:40:45.348 çekirdek 1 pip cinsinden kârı hesaplayın, ilk depozito 10000, kaldıraç 1:100

2020.10.27 06:40:45.348 çekirdek 1 başarıyla başlatıldı

2020.10.27 06:40:45.348 çekirdek 1 731 bayt toplam başlatma verisi alındı

2020.10.27 06:40:45.348 çekirdek 1 Intel Core i5-6400 @ 2.70GHz, 7883 MB

2020.10.27 06:40:45.348 çekirdek 1 EURUSD: senkronize edilecek sembol

2020.10.27 06:40:45.348 çekirdek 1 EURUSD: sembol zaten senkronize edildi, 18 bayt alındı

2020.10.27 06:40:45.348 çekirdek 1 EURUSD,M1: geçmiş 2019.01.02 06:00'dan önbelleğe alındı

2020.10.27 06:40:45.348 çekirdek 1 EURUSD,M1 (Alpari-MT5-Demo): üreten her kene

2020.10.27 06:40:45.348 çekirdek 1 EURUSD,M1: Experts\GRAIL.ex5'in 2020.09.01 00:00'dan 2020.09.03 00:00'a kadar testi şu girdilerle başladı:

2020.10.27 06:40:45.348 çekirdek 1 StopLoss=30

2020.10.27 06:40:45.348 çekirdek 1 Kâr Al=100

2020.10.27 06:40:45.348 çekirdek 1 parti = 0.1

2020.10.27 06:40:45.348 çekirdek 1 nihai bakiye 10000.00 pip

2020.10.27 06:40:45.348 çekirdek 1 EURUSD,M1: 111967 keneler, 2880 bar üretildi. Test 0:00:000.019'da geçti.

2020.10.27 06:40:45.348 Core 1 270 Mb bellek, 35 Mb geçmiş verisi, 64 Mb tick verisi dahil

2020.10.27 06:40:45.348 çekirdek 1 günlük dosyası "C:\Users\a1960\AppData\Roaming\MetaQuotes\Tester\36A64B8C79A6163D85E6173B54096685\Agent-127.0.0.1-3000\logs\20201027.log" yazıldı

2020.10.27 06:40:45.371 çekirdek 1 bağlantı kapandı

Bir günlük bir süre boyunca test ediyorum. Yani, danışman 1440 sipariş açmalıdır. Belki de sorun budur. Belki aynı anda açık olan emirlerin sayısında bazı kısıtlamalar vardır.
Ne de olsa, danışmanın depozitosu 10.000 iken, sadece 300 sipariş açtı ve geri kalanını parayla ilgili bir nedenle (yevmiye kayıtlarından anladığım kadarıyla) kaçırdı. Sonra Danışmanın depozitosunu 100.000'e çıkardım ve artık kaçırma hakkı yoktu. Ve siparişleri açmayı tamamen bıraktı.

Ama sonra tekrar Danışmanın depozitosunu 10.000'e düşürdüm ama Danışman buna rağmen hiçbir şey açmıyor ve her zaman yukarıda belirttiklerimi yazıyor.

Başka bir danışman oluşturdu. Aynı kodu ona yükledim. 10.000 depozito Her şey aynı - emir açmıyor.
Lütfen bana Danışmanın normal çalışmasını nasıl sağlayacağımı söyleyin. Aynısını yazıyor sadece vurguladığım sarı çizgide 270 mb yerine 271 değer
Windows 10'um var. 64 bit işletim sistemi 8 GB RAM.
Teşekkür ederim.

 
ANDREY :

Bahşiş için teşekkürler.

Gerçekten çalışmıyor. yazar.


2020.10.27 06:40:45.348 çekirdek 1 EURUSD,M1: 111967 keneler, 2880 çubuk üretildi. Test 0:00:000.019'da geçti.

2020.10.27 06:40:45.348 Core 1 270 Mb bellek, 35 Mb geçmiş verisi, 64 Mb tick verisi dahil

2020.10.27 06:40:45.348 çekirdek 1 günlük dosyası "C:\Users\a1960\AppData\Roaming\MetaQuotes\Tester\36A64B8C79A6163D85E6173B54096685\Agent-127.0.0.1-3000\logs\20201027.log" yazıldı

2020.10.27 06:40:45.371 çekirdek 1 bağlantı kapandı

Bir günlük bir süre boyunca test ediyorum. Yani, danışman 1440 sipariş açmalıdır. Belki de sorun budur. Belki aynı anda açık olan emirlerin sayısında bazı kısıtlamalar vardır.
Ne de olsa, danışmanın depozitosu 10.000 iken, sadece 300 sipariş açtı ve geri kalanını parayla ilgili bir nedenle (yevmiye kayıtlarından anladığım kadarıyla) kaçırdı. Sonra Danışmanın depozitosunu 100.000'e çıkardım ve artık kaçırma hakkı yoktu. Ve siparişleri açmayı tamamen bıraktı.

Ama sonra tekrar Danışmanın depozitosunu 10.000'e düşürdüm ama Danışman buna rağmen hiçbir şey açmıyor ve her zaman yukarıda belirttiklerimi yazıyor.
Lütfen bana Danışmanın normal çalışmasını nasıl sağlayacağımı söyleyin.
Teşekkür ederim.

Günde 1440 sipariş varsa, bir dakikanın başlangıcı için veya daha basit bir şekilde bir dakika çubuğunun görünümü için bir kontrol olmalıdır. Ve şu anda açık. Sizde yok, bu nedenle danışman, mevcut teklifteki sembolümüzdeki koşula göre, kendi başına zor bir koşul olan her onay işareti için bir pozisyon açar. Bu koşul karşılanabilir veya karşılanmayabilir ve keneler atlanır. Ve bir noktada kritik bir hata oluşur.

Ayrıca, emir yürütme türü (bir pozisyon oluşturmak için bir anlaşma yapmak için emir) Ya hep ya hiç.

 input int       StopLoss= 30 ;       // Stop Loss
input int       TakeProfit= 100 ;   // Take Profit
input double    Lot= 0.1 ;           // Количество лотов для торговли
int A;     //

//+------------------------------------------------------------------+
void OnTick ()
  {
Print ( "====================================================" ,   TimeCurrent () )   ;
//--- Объявляем структуры, которые будут использоваться для торговли
   MqlTick latest_price;       // Будет использоваться для текущих котировок
   MqlTradeRequest mrequest;   // Будет использоваться для отсылки торговых запросов
   MqlTradeResult mresult;     // Будет использоваться для получения результатов выполнения торговых запросов
 if (! SymbolInfoTick ( _Symbol ,latest_price))
   {
         mrequest.action = TRADE_ACTION_DEAL ;                                   // немедленное исполнение
         mrequest.price = NormalizeDouble (latest_price.bid, _Digits );           // последняя цена Bid
         mrequest.sl = NormalizeDouble (latest_price.ask + StopLoss* _Point , _Digits ); // Stop Loss
         mrequest.tp = NormalizeDouble (latest_price.ask - TakeProfit* _Point , _Digits ); // Take Profit
         mrequest.symbol = _Symbol ;                                             // символ
         mrequest.volume = Lot;                                                 // количество лотов для торговли
         mrequest.type= ORDER_TYPE_SELL ;                                       // ордер на продажу
         mrequest.type_filling = ORDER_FILLING_FOK ;                             // тип исполнения ордера - все или ничего
         mrequest.deviation= 100 ;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
     OrderSend (mrequest,mresult); // получите (запросите) результаты исполнения / сделки и распечатайте, будет понятней
    }   
     return ;
  }
 
int M = TimeMinute( TimeCurrent ());
int TimeServer()                                                  
{  
   Print (M, " - Tекущее время сервера" );
}

Lütfen bana söyle!

Yeni keneler geldiğinde sunucu zamanı neden güncellenmiyor?

Danışmanı başlatma anında her şey olması gerektiği gibi çalışır, ancak daha sonra zaman geçer ve mevcut dakikanın yeni değeri değişkene girmez.

Onlar. danışmanım int M = TimeMinute(TimeCurrent()); değişkeninin aldığı sayıya bağlı olarak çalışır.

Aslında, kod satırı referans kitabından ve hatta çalışmıyor.

Örneğin 12 dakika içinde başlatıldı -   şimdiki zaman   sunucu tarafından döndürülen değişkendeki zamana karşılık gelir ve daha sonra saat zaten 15-20 dakika olmasına rağmen değişken 12'de kalır

Документация по MQL5: Дата и время / TimeCurrent
Документация по MQL5: Дата и время / TimeCurrent
  • www.mql5.com
Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов. В обработчике OnTick() данная функция вернет время пришедшего обрабатываемого тика. В других случаях (например, вызов в обработчиках OnInit(), OnDeinit(), OnTimer() и так далее) это –...
Neden: