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

 
EVGENII SHELIPOV # :

Rostislav bunu anlıyorum

Bu fonksiyondaki bayrağı neden bloke edersem, danışman bir seferde 100-200 siparişi açıp kapatmaya başlıyor anlamıyorum.

Çünkü eğer bayrak "0"a eşit değilse, o zaman sürekli olarak CloseAll() işlevini çağırır.
 
EVGENII SHELIPOV # :

Bu fonksiyonun içindeki bayrağı engellersem, danışmanın neden bir seferde 100-200 siparişi açıp kapatmaya başladığını anlayamıyorum.

Kodunuzla açıklıyorum:

Başlangıçta bayrak

 int flag_close= 0 ;
//+------------------------------------------------------------------+

Sırada siparişlerin açılması geliyor

 //-------------------------------------------------------------------+  Команда на открытие первых ордеров в сетке
   if ((UseHour== 1 && Hour() >= StartTime && Hour()<=StopTime)||UseHour== 0 )
     {

Ayrıca, siparişleri kapatmak için bir koşul belirirse (bunlardan üç tane var)

 //-------------------------------------------------------------------+  Команда на закрытие сетки ордеров при условии (Суммарный профит сетки >=0 и Просадка больше заданного уровня)
   if (CalculiteProfit() >= 0 && Drawdown > DrawdownClosingTakeprofitZero)
     {
      flag_close= 1 ;
//-------------------------------------------------------------------+  Команда на закрытие сетки ордеров
   if ((CountTrade( 0 ) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()== 0 )||(CountTrade( 1 ) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()== 1 ))
     {
      flag_close= 1 ;
//-------------------------------------------------------------------+  Команда на закрытие первых ордеров
   if ((CountTrade( 0 ) == 1 && CalculiteProfit() >= 0 &&  OrderCloseSignal()== 0 )||(CountTrade( 1 ) == 1 && CalculiteProfit() >= 0 &&  OrderCloseSignal()== 1 ))
     {
      flag_close= 1 ;

bayrak "1" değerini alır ve siparişleri kapatmaya başlar

 //-------------------------------------------------------------------+  Команда на закрытие ордеров
       if (flag_close== 1 )ClosseAll();

ve tüm siparişler kapanır kapanmaz bayrak "0" değerini alır.

   if (CountTrade() == 0 )
     {
       flag_close= 0 ;
 
Tretyakov Rostyslav # :
Çünkü bayrak "0"a eşit değilse, o zaman sürekli olarak CloseAll() işlevini çağırır.

Komutun bir sipariş açmaya yol açması şartıyla böyle olabilir. Burası bir tür "DÖNGÜ"nün gerçekleştiği yerdir.

 
EVGENII SHELIPOV # :

Komutun bir sipariş açmaya yönlendirmesi şartıyla böyle olabilir. Burası bir tür "DÖNGÜ"nün gerçekleştiği yerdir.

Kredi kartın var mı?

Mağazaya girip her seferinde bir şişe bira alıyorsunuz ve kartta "0" gelene kadar her kartla ödeme yaptığınızda,

ondan sonra kartı doldur ve tekrar bira iç

 
Mihail Matkovskij # :

Evet. Ama kilit aynı lotla açılıyor. Ve iki çok yönlü emir aynı anda açılır. Riskten korunma, bir ticaretin bir düşüşe girmesi ve bir tüccarın aynı yönde daha büyük bir lot ile bir pozisyon açmasıdır (farklı yönlerle karıştırdım), bu, bir ticaretten kar elde etmek için fiyatın tersine döneceğini ima eder. daha büyük bir lot ve daha küçük bir lot veya ortalama 0 ile bir ticaretin kaybını karşılayın. Bir şey karıştıysa, beni düzeltin.

Riskten korunma kesinlikle bir kilit veya kısmi bir kilit değil, tamamen farklı bir sistemdir.

 
Vitaly Muzichenko # :

Riskten korunma kesinlikle bir kilit veya kısmi bir kilit değil, tamamen farklı bir sistemdir.

Ama kayıp olduğunu söylemiyorum. Daha dün karıştırdım (dedi ki: tek yönlü pozisyon yerine zıt pozisyon açmanız gerekiyor). Saat çoktan geç olmuştu. Bugün nerede yanlış yaptığımı anladım.

 
Mihail Matkovskij # :

Ama kayıp olduğunu söylemiyorum. Daha dün karıştırdım (dedi ki: tek yönlü pozisyon yerine zıt pozisyon açmanız gerekiyor). Saat çoktan geç olmuştu. Bugün nerede yanlış yaptığımı anladım.

O zaman her şey netleşir, olur :)

 
EVGENII SHELIPOV # :

Komutun bir sipariş açmaya yönlendirmesi şartıyla böyle olabilir. Burası bir tür "DÖNGÜ"nün gerçekleştiği yerdir.

Kapatmak için biletlerle birlikte bir sipariş listesi oluşturmanız gerekir (birçoğunun burada söylediği gibi). Robot bir çıkış sinyali algılarsa, ilgili siparişleri (biletleri) kapanış listesine ekleyin. Liste, kapatma istekleri gönderen bir döngü tarafından geçilir (OrderClose). Ardından, bu listeye eklenen biletlerle açık sipariş olup olmadığını sürekli kontrol etmeniz gerekir. Bir veya daha fazla bilet bulunamazsa, onları listeden çıkarmanız gerekir. Böylece fonksiyon, var olmayan siparişleri kapatmak için bir istek göndermez.

Doldurulan liste döneminde ortaya çıkan yeni sinyaller ve emirlerle ne yapmalı? Bunları ayrıca çıkış kapatma listesine de ekleyebilirsiniz. Böylece onlar da sırayla kapanacaklar. Bu kadar. Böyle bir liste oluşturun ve siparişleri döngüsel olarak biletlere göre kapatın. Döngü geçişi başına bir saniye veya birkaç saniye aralıklarla mümkündür. Bu algoritmayı uygulamak için kalır ve her şey işe yarayacaktır.

 
Mihail Matkovskij # :

Biletlerle kapatmak için (birçoğunun burada söylediği gibi) bir sipariş listesi oluşturmanız gerekir. Robot bir çıkış sinyali algılarsa, ilgili siparişleri (biletleri) kapanış listesine ekleyin. Liste, kapatma isteği (OrderClose) gönderen bir döngü tarafından geçilir. Ardından, bu listeye eklenen biletlerle açık sipariş olup olmadığını sürekli kontrol etmeniz gerekir. Bir veya daha fazla bilet bulunamazsa, onları listeden çıkarmanız gerekir. Böylece fonksiyon, var olmayan siparişleri kapatmak için bir istek göndermez.

Doldurulan liste döneminde ortaya çıkan yeni siparişlerle ne yapmalı? Bunları da kapanış listesine ekleyebilirsiniz. Böylece onlar da sırayla kapanacaklar. Bu kadar. Böyle bir liste oluşturun ve görgü kurallarıyla ilgili siparişleri döngüsel olarak kapatın. Döngü geçişi başına bir saniye veya birkaç saniye aralıklarla mümkündür. Bu algoritmayı uygulamak için kalır ve her şey işe yarayacaktır.

Teker teker alın her biri kapanacak mı?Izgara bu kadar uzun olunca göz sağdakileri kapatacak.
İkincisi kapatıldığında, zaten 10 siparişin kapatılması gerekebilir ve şimdi birer birer her şey kapanır ve sonsuz uzun sürer.

 
Alexander Avksentyev # :

Teker teker alın her biri kapanacak mı?Izgara bu kadar uzun olunca göz sağdakileri kapatacak.
İkincisi kapatıldığında, zaten 10 siparişin kapatılması gerekebilir ve şimdi her şey sırayla kapanır ve süresiz olarak sürüklenir.

Kesinlikle bu şekilde değil. Zaten tüm siparişler terminal tarafından birer birer kapatılır. OrderSend döngüsünde   saniyede birçok kez ateş edebilir (donanımınıza bağlı olarak). Ancak OrderSend yalnızca karşılık gelen komutları kapatma için kuyruğa ekler. Ardından terminal , bu komutları sunucuya belirli bir aralıkta veya sunucudan önceki istek hakkında bir yanıt aldıktan sonra gönderir ve hemen değil. Her neyse, çok sayıda emir (pozisyon) bir emirden çok daha yavaş kapatılır.