MetaTrader 4 Client Terminal build 402'nin yeni versiyonu - sayfa 6

 
dmmikl86 :
Bunun nedeni, farklı çiftlerdeki bir puanın maliyetinin farklı olmasıdır ...

Bence, bir puanın maliyeti, "puan cinsinden kâr" görüntüleme modunda dikkate alınmalıdır.

 
olyakish :

Bence, bir puanın maliyeti, "puan cinsinden kâr" görüntüleme modunda dikkate alınmalıdır.

bu başka bir sonsuz aksaklık MT)
 

Hatalar...

1) Piyasa İzleme'den gereksiz enstrümanları çıkarır ve sonra tekrar eklerseniz, ilginç bir şey elde edersiniz.

Enstrüman üzerinde sağ tıklayın, "Grafik penceresi"ni seçin - grafiği açmak için.

Seçilenin değil, başka bir enstrümanın tablosu açılacaktır!!

Bu hatanın oluşması için yeni eklenenlerden bir araç seçmeniz gerekiyor. (resim1, pic2, pic3 ekran görüntülerine bakın)

2) Ekran görüntüsünde USDCHF enstrümanının "Semboller" penceresinde seçili olarak işaretlendiğini görebiliyorum, ancak gerçekte "Piyasa İzleme"de değil. (resim4)

Belki de ilk aksaklık, ikincisinin bir sonucudur, çünkü. "Piyasa İzleme"deki enstrümanların numaralandırılması yanlış gitti.

İnternetim çok kötü, bu yüzden tüm ekran görüntüleri arşivde.

İşte bağlantı http://www.sendspace.com/file/tbav73

 
dimonsky :

Hatalar...

1) Piyasa İzleme'den gereksiz enstrümanları çıkarır ve sonra tekrar eklerseniz, ilginç bir şey elde edersiniz.

Enstrüman üzerinde sağ tıklayın, "Grafik penceresi"ni seçin - grafiği açmak için.

Seçilenin değil, başka bir enstrümanın tablosu açılacaktır!!

Bunu 401'inci yapıda da fark ettim.
 

Bugün (veya daha doğrusu dün) sabah MT4'te garip bir aksaklık aldım - OrderSelect, bir Uzman Danışmanda bilet numarasına göre bir sipariş bulamadı .

Uzman Danışman, mevcut fiyatın karşı taraflarına bekleyen iki BUY_STOP ve SELL_STOP emri verir. Bu siparişlerin biletleri t1 ve t2'de saklanır. Hatanın oluştuğu ve aşağıda verilen kod şu şekildedir: Bu ertelemelerden biri açıldığında ikincisi silinir ve yerine t3 numaralı ertelenen bir sonraki ayarlanır. t1 ve t2'nin ilk yerleşimi sırasında hatalar varsa, hatalı bilet sipariş listesinde olmamalıdır. Bu tam olarak if (OrderSelect ...) kullanılarak kontrol edilir ve bir hata durumunda günlüğe bir mesaj yazılır ve restart() fonksiyonu ile seriden çıkılır.

Bugün 6:30 t1 de açıldı. Sipariş t2, EA tarafından hemen silindi (piyasadan kaldırıldı, ancak tarihte kaldı - "iptal edildi", kontrol ettim). Bundan sonra, t3 yerleştirildi. Tüm bu olaylar MT ve danışmanın günlüklerindedir. Ardından "OrderSelect(t2, SELECT_BY_TICKET)" kontrolü YANLIŞ verir ve seri "Bilinmeyen sipariş t2" hatasıyla sona erer. Garip, çünkü t2 hatasız olarak ortaya çıktı ve kaldırıldı ve tarihte kaldı. MT'de geçmiş görüntüleme modu - "Tüm geçmiş". OrderSelect onu nasıl bulamaz?

Bilgisayar ayrıdır, yalnızca ticaret için kullanılır, başka bir şey için kullanılmaz. Benden başka kimse dokunamaz. CPU kullanımı ortalama %10'dur. Bellek, vidadaki boşluk vb. bol bol yeter.
Sürüm MT4 - 402. EA, üç farklı çiftte (üç grafikte) paralel olarak bir MT'de bir demo üzerinde gerçek zamanlı olarak farklı varyasyonlarda birkaç aydır çalışıyor. Bu sabaha kadar kodun bu kısmında herhangi bir sorun yoktu. Ve bundan sonra, gündüz ve akşam, aynı Expert Advisor'daki diğer çiftler için her şey sorunsuz gitti. Yani, hata istendiği zaman yeniden üretilemez.

Soru: Bu nasıl olabilir? Bu bir MT hatası mı yoksa kodda bir şeyi mi kaçırdım?

Kod, OrderDeleteX ve OrderSendX işlevlerini kullanır - standart OrderDelete ve OrderSend üzerindeki sarmalayıcılar, boşta kalma için bir ticaret akışı kontrolü ekler ve EA'nın günlüğünde "Sipariş siliniyor ..." ve "Sipariş gönderiliyor ..." gibi olayları kaydeder.
Kodu basitleştirmek ve daha anlaşılır hale getirmek için fiyat hesaplamalarını kaldırdım.

 if ( OrderSelect (t1, SELECT_BY_TICKET)) {
   if (OrderType() == OP_BUY) {
     Print ( "--------------------------------------------------" );
     if (t2 > 0 ) OrderDeleteX(t2);
    // Расчёты цены, стоплосса и тейкпрофита
    // .....
    t3 = OrderSendX( Symbol (), OP_SELLSTOP, 0.02 , Price1, slip, StopLoss, TakeProfit, "step 2" , Magic, 0 , ColorOrderSendSell);
  }   
} else {
   Print ( "ERROR: Unknown order t1 in step 1" );
  restart( 3 );
}
 

if ( OrderSelect (t2, SELECT_BY_TICKET)) {     
   if (OrderType() == OP_SELL) {
     Print ( "--------------------------------------------------" );
     if (t1 > 0 ) OrderDeleteX(t1);
    // Расчёты цены, стоплосса и тейкпрофита
    // .....
    t3 = OrderSendX( Symbol (), OP_BUYSTOP, 0.02 , Price1, slip, StopLoss, TakeProfit, "step 2" , Magic, 0 , ColorOrderSendBuy);
  }
} else {
   Print ( "ERROR: Unknown order t2 in step 1" );
  restart( 4 );
}


Değişkenlere göre sıra numaraları:
t2 = 119732180
t3 = 119733656

Лог эксперта:
06 : 30 : 43 CheMurom v3. 4 .real EURUSD,H1: --------------------------------------------------
06 : 30 : 43 CheMurom v3. 4 .real EURUSD,H1: Deleting order #119732180; attempt number: 1
06 : 30 : 43 CheMurom v3. 4 .real EURUSD,H1: delete #119732180 sell stop 0.01 EURUSD at 1.46432 sl: 1.47032 tp: 1.43432 ok
06 : 30 : 43 CheMurom v3. 4 .real EURUSD,H1: Sending order cmd=SELL_STOP, lot= 0.02 , price= 1.46032 , slip= 3 , sl= 1.46932 , tp= 1.44082 ; attempt number: 1
06 : 30 : 44 CheMurom v3. 4 .real EURUSD,H1: open #119733656 sell stop 0.02 EURUSD at 1.46032 sl: 1.46932 tp: 1.44082 ok
06 : 30 : 44 CheMurom v3. 4 .real EURUSD,H1: ERROR: Unknown t2 in step 1

Лог терминала:
06:30:43 '2871084': delete pending order #119732180 sell stop 0.01 EURUSD at 1.46432 sl: 1.47032 tp: 1.43432
06:30:44 '2871084': request was accepted by server
06:30:44 '2871084': request in process
06:30:44 '2871084': pending order #119732180 was deleted
06:30:44 '2871084': pending order sell stop 0.02 EURUSD at 1.46032 sl: 1.46932 tp: 1.44082
06:30:44 '2871084': request was accepted by server
06:30:45 '2871084': request in process
06:30:45 '2871084': order was opened : #119733656 sell stop 0.02 EURUSD at 1.46032 sl: 1.46932 tp: 1.44082
 

Arama emri bulamıyor. Burada 67930924 emrinin açıldığını DC raporundan görebilirsiniz...

bunlar, 06/08/11 tarihinden itibaren hesap geçmişindeki kapalı işlemlerdir. Gördüğünüz gibi, bu sipariş burada değil.

Bu yüzden açık işlemlerde olmalıdır. Aşağıdaki resim, açık işlemler.

Ama o da burada değil. DC'nin yarın hangi raporu göndereceğini merak ediyorum ama yazılım geliştiricilerin sürümünü, bunun nasıl olabileceğini duymak istiyorum.

Ve bir şey daha, belki fark etmez ama tarih nasıl kaydedilirse, dönem seçimini nasıl açarsam açayım hep mayıs ayına mal oluyor.


 
voinG :

Arama emri bulamıyor. Burada 67930924 emrinin açıldığını DC raporundan görebilirsiniz...

bunlar, 06/08/11 tarihinden itibaren hesap geçmişindeki kapalı işlemlerdir. Gördüğünüz gibi, bu sipariş burada değil.

Bu yüzden açık işlemlerde olmalıdır. Aşağıdaki resim, açık işlemler.

Ama o da burada değil. DC'nin yarın hangi raporu göndereceğini merak ediyorum ama yazılım geliştiricilerin sürümünü, bunun nasıl olabileceğini duymak istiyorum.

Ve bir şey daha, belki fark etmez ama tarih nasıl kaydedilirse, dönem seçimini nasıl açarsam açayım hep mayıs ayına mal oluyor.



bulundu. "bütün tarihi" açtı ve bu versiyonda görülebilir.
 

Konunun devamında " OrderSelect, bilet numarasına göre bir sipariş bulamadı ".

Bu sabah, aynı Expert Advisor'da başka bir çiftte aynı hata oluştu. Bekleyen emir t2=#119899844 başarıyla yerleştirildi, ardından aynı başarıyla silindi, ondan sonra bekleyen emir t3=#119903758 hatasız verildi ve bundan sonra t2, OrderSelect işlevi tarafından bulunamadı.

Dünün hatası ile bugünün hatası arasında, Expert Advisor'daki bir önceki mesajımdaki kod birkaç kez başarılı bir şekilde çalıştı, hatasız, uzaktan siparişler sorunsuz bulundu.

Bundan önce, Expert Advisor MT4 229 sürümünde birkaç ay çalıştı, bu gözlemlenmedi. 4 gün önce hafta sonu 402 sürümüne geçtim. Hataların yeni sürümle ilgili olup olmadığını bilmiyorum. Bu Expert Advisor'ın işlem yaptığı Alpari, kotasyonların zaman dilimini değiştirdiği ve sadece 402 versiyonu (Alpari'nin iddia ettiği gibi) bu değişiklikleri doğru bir şekilde işlediği için eskisine dönmek artık mümkün değil.

Sorular açık kalır:
Bu nasıl olabilir, tüm geçmiş görüntülenmesine rağmen, OrderSelect neden tarihte bir sipariş bulamadı, kaybolan sipariş onda görünüyor? Bu bir MT hatası mı yoksa kodda bir şeyi mi kaçırdım?

Лог эксперта:
10 : 15 : 33 CheMurom v3. 4 .real EURCHF,H1: --------------------------------------------------
10 : 15 : 33 CheMurom v3. 4 .real EURCHF,H1: Deleting order #119899844; attempt number: 1
10 : 15 : 34 CheMurom v3. 4 .real EURCHF,H1: delete #119899844 sell stop 0.01 EURCHF at 1.22245 sl: 1.22945 tp: 1.19735 ok
10 : 15 : 34 CheMurom v3. 4 .real EURCHF,H1: Sending order cmd=SELL_STOP, lot= 0.02 , price= 1.21745 , slip= 3 , sl= 1.22845 , tp= 1.20015 ; attempt number: 1
10 : 15 : 36 CheMurom v3. 4 .real EURCHF,H1: open #119903758 sell stop 0.02 EURCHF at 1.21745 sl: 1.22845 tp: 1.20015 ok
10 : 15 : 36 CheMurom v3. 4 .real EURCHF,H1: ERROR: Unknown t2 in step 1

Лог терминала:
10:15:35 '2871084': delete pending order #119899844 sell stop 0.01 EURCHF at 1.22245 sl: 1.22945 tp: 1.19735
10:15:35 '2871084': request was accepted by server
10:15:35 '2871084': request in process
10:15:36 '2871084': pending order #119899844 was deleted
10:15:36 '2871084': pending order sell stop 0.02 EURCHF at 1.21745 sl: 1.22845 tp: 1.20015
10:15:36 '2871084': request was accepted by server
10:15:36 '2871084': request in process
10:15:37 '2871084': order was opened : #119903758 sell stop 0.02 EURCHF at 1.21745 sl: 1.22845 tp: 1.20015
 
Bu sorunu Renat'a bir ekranla anlattım, build 399'da kaldırdılar ama 401 ve 402'de bu hata tekrar ortaya çıktı, build 399'a geri dönmek zorunda kaldım.
 

Delphi7'de yazılmış bir DLL var. Yalnızca bir işlevi uygular - belirtilen yolda bir dosyanın olup olmadığını kontrol eder.

İşte onun kodu.

 library FileGDV;

uses
  SysUtils,
  Classes;

//{$R *.res}

function FileExists(s:pchar):boolean; StdCall;
begin
   result:=sysutils.fileexists(s);
end;

exports FileExists;

begin
end.

Karmaşık bir şey yok, özel bir şey yok. sadece bir fonksiyon.

İşte bu işlevi kullanan Uzman Danışman kodu:

 if (FileExists(s))
      {
         handleM= FileOpen (fn, FILE_BIN | FILE_WRITE | FILE_READ );
         
      }
       else
      {
         Alert ( "File not found   " +s);         
         handleM= FileOpen (fn, FILE_BIN | FILE_WRITE );
         s= "Time;;M1;M5;M15;M30;H1;H4;D1\n" ;
         FileWriteString (handleM,s, StringLen (s));
      } 

ve işte başlık dosyası kodu

 #import "FileGDV.dll"


bool FileExists( string s);

 
#import


Şimdi bir soru. Neden, terminalde bir danışman varsa, o zaman her şey günlerce saat gibi çalışır.

Terminalde farklı pencerelerde bu tür iki Uzman Danışman varsa ve bu işlevi çağırırlarsa, birkaç saatte bir her iki Uzman Danışman da çalışmayı durdurur ve günlükte mesajlar görünür.

2011.06.09 14:33:57     gdv_e_MultiMACD_a_KSP_GBP_v082 GBPCHF,M5: expert stopped
2011.06.09 14:33:57     gdv_e_MultiMACD_a_KSP_GBP_v082 GBPCHF,M5: function 'FileExists' call from dll 'FileGDV.dll' critical error