Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 122

 
Mickey Moose : İstediğimi ekledim, değerlendirmeye alabilirim. Harika sızıyor. Ama burada buna izin verilmiyor.

kişisel olarak... Birleşmeleri severim... Özellikle yazdım. Günün demosu depozito 15 kat arttığında, onu geri boşaltırım. Yarın karşılaştırılabilir sonuçlara sahip olmak için

 
STARIJ :
Test cihazındaki alıntılar? ilk defa duydum...

İşte kanıt. Başlangıç:


ve son:

ve son:




" Öyleyse danışmana koyun, öyleyse çıkın ve bir sonraki tikte devam edin. " - Bu kodda.

 
novichok2018 :

İşte kanıt. Başlangıç:


ve son:

ve son:




" Öyleyse danışmana koyun, öyleyse çıkın ve bir sonraki tikte devam edin. " - Bu kodda.

Peki, If(tester) if(25 veya 26 Ocak) return yazın

 
STARIJ :

Peki, If(tester) if(25 veya 26 Ocak) return yazın

Nedenini anlamadım. Ne, başarısızlığın tekrarını önlemeye yardımcı olacak mı? Ana şey, pozisyonların hala kapalı olması ve komutun bulanık yürütülmesinin nedeni test cihazının başarısızlığı ise, o zaman her şey yolunda demektir. Sebebin farklı olduğundan emin olmak için muhtemelen AL (SAT) açık bir SAT (AL) ile açıldığında durumun tekrarını beklemeniz ve nasıl kapandıklarını görmeniz gerekecektir.

 
novichok2018 :

Tam olarak ihtiyacım olan şey bu, daha doğrusu sadece Al ve Sat için. Basit stratejim için asıl mesele, açık pozisyonların kapanma koşullarını görmek için birbirine müdahale etmemesidir. Belki hala diziler olmadan yapabilirsiniz? Şey, onları anlamıyorum: nasıl yaratılır, nasıl çevrilir - karanlık bir orman. Belki ekrandan durumumu anlarsınız:

Görünüşe göre koddaki her şey basit ve net bir şekilde çalışıyor, sadece bu yanlış anlaşılmanın tek örneği.

Emirlerin muhasebesini Al ve Sat olarak ayırmanız gerekirse, her biri için iki dizi ve iki sayaç bildirilir:

 int g_nBuyOrdersCnt, g_nSellOrdersCnt;
OrderInfo  arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];

Sonuç olarak, veri toplama döngüsü şu şekilde olacaktır:

g_nBuyOrderCnt = 0 ;
g_nSellOrdersCnt = 0 ;
for ( int i = OrdersTotal () - 1 ; i >= 0 ; --i)
{
   if (! OrderSelect (i, SELECT_BY_POS ))
       continue ;

   if ( OrderSymbol () != Symbol ())   // Если нужны ордера только по текущему символу, к графику которого прикреплен советник
       continue ;

   if ( OrderMagicNumber != i_nMagicNumber)   // Если имеется входной параметр советника i_nMagicNumber, в котором указан ID ордеров советника
       continue ;

   if ( OrderType () == OP_BUY )
      SaveOrderInfo(g_arrstBuyOrderInfo, g_nBuyOrdersCnt);
   if ( OrderType () == OP_SELL )
      SaveOrderInfo(g_arrstSellOrderInfo, g_nSellOrdersCnt);
}

void SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt)
{
   if (nOrderCnt >= MAX_ORDERS_CNT)
       return ;

   arrstOrderInfo[nOrdersCnt].nTicket = OrderTicket ();
   arrstOrderInfo[nOrdersCnt].nType = OrderType ();
   arrstOrderInfo[nOrdersCnt].fOpenPrice = OrderOpenPrice ();
   arrstOrderInfo[nOrdersCnt].fSL = OrderStopLoss ();
   arrstOrderInfo[nOrdersCnt].fTP = OrderTakeProfit ();

   ++nOrdersCnt;
}

Ardından, Expert Advisor'da bir Al veya Sat emrinin varlığını belirlemek için şunu yapmanız yeterlidir:

 if (g_nBuyOrdersCnt > 0 )
{
   // Есть ордера Buy
}
 
novichok2018 :

Belki hala diziler olmadan yapabilirsiniz?

Dizilerden yalnızca, aynı anda her türden birden fazla sıranın var olmadığı varsayılırsa vazgeçilebilir. Ardından dizi, OrderInfo yapı tipinde bir değişkene (veya 1 boyutlu bir diziye) dönüşür.

Ancak, sunulan şekilde gördüğüm gibi, durum böyle değil. Her türden aynı anda birden fazla siparişiniz olabilir.
 
novichok2018 :

İşte kanıt. Başlangıç:

Bu, emri kapatırken piyasa dışı bir fiyatın belirtildiğini gösterir. Örneğin, Alış Sor ile, Satış ise Bid ile kapatılır. Kodunuza bakarsanız, bu iyi olabilir, çünkü kapatma işleminden önce sipariş türü için bir kontrol yoktur.

 

Tekrar iyi akşamlar. İşin tam püf noktası.

Danışmanı (işçiyi) piyasaya arz ederim. MT4 platformu. Bir dosya gönderebilirsiniz. Danışman dosyası. Geçerliliği geçmesi gerekir, ancak göstergeleri olmayan bir EA olduğu için geçemez. Ayrı dosyalardalar. EA dört gösterge ile çalışır. Bir şekilde danışmana bağlanmaları gerekiyor. Ya yolları belirtin, yani danışmana kaydolun... Ne? ve nerede? Bana hangi formu ve nasıl yapılacağını söyle.

Anladığım kadarıyla "Kaynaklar" kullanmanız gerekiyor. Ancak danışmanda hangi yerlerde hepsini doğru bir şekilde yazacağımı bilmiyorum. Belki de duruma başka çözümler biliyorsunuzdur.

Teşekkür ederim .

doğrulama başarısız olduğunda söylediği şey budur

 2016.04.01 00:00:00 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:00 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:00 Color_wAppliedPrice.ex4'te 'MQL4\indicators\MA' dosyasını açamıyor [2]
 2016.04.01 00:00:00 Color_wAppliedPrice.ex4'te 'MQL4\indicators\MA' dosyasını açamıyor [2]
 2016.04.01 00:00:00 'MQL4\indicators\HA_Smooth.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:00 'MQL4\indicators\HA_Smooth.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:00 'MQL4\indicators\TrendLord.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:00 'MQL4\indicators\TrendLord.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:05 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:05 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:05 'MQL4\indicators\MA dosyasını Color_wAppliedPrice.ex4' içinde açamıyor [2]
 2016.04.01 00:00:05 'MQL4\indicators\MA dosyasını Color_wAppliedPrice.ex4' içinde açamıyor [2]
 2016.04.01 00:00:05 'MQL4\indicators\HA_Smooth.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:05 'MQL4\indicators\HA_Smooth.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:05 'MQL4\indicators\TrendLord.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:05 'MQL4\indicators\TrendLord.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:10 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:10 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' dosyasını açamıyor [2]
 2016.04.01 00:00:10 'MQL4\indicators\MA dosyasını Color_wAppliedPrice.ex4' içinde açamıyor [2]
 2016.04.01 00:00:10 'MQL4\indicators\MA dosyasını Color_wAppliedPrice.ex4' içinde açamıyor [2]

 
Ihor Herasko :


Detaylı ve çok net cevaplarınız için çok teşekkür ederim.

 
Ihor Herasko :

Emirlerin muhasebesini Al ve Sat olarak ayırmanız gerekirse, her biri için iki dizi ve iki sayaç bildirilir:

Sonuç olarak, veri toplama döngüsü şu şekilde olacaktır:

Ardından, Expert Advisor'da bir Al veya Sat emrinin varlığını belirlemek için şunu yapmanız yeterlidir:

Lütfen kodunuzun şu satırını açıklar mısınız: OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT]; OrderInfo'da neden parantez yok ve tip belirtilmemiş? ve bunların hepsi küresel düzeyde mi ilan edildi?

Pozisyon kapatma fonksiyonuna bir emrin varlığının tespiti eklenmeli mi? Neresi? Ya da belki dizilerle pozisyonları kapatma işlevi genellikle bir şekilde farklı görünmelidir? Şimdiye kadar benim için zor. Teşekkür ederim.


Örneğinizi kendi başıma kullanmaya çalıştım, ancak derleyici dünyanın değerine yemin ediyor ...

Ve ders kitabından örneklere göre, o da yemin ediyor.