"Alım Satımlar MetaTrader 5'ten MetaTrader 4'e Nasıl Kopyalanır?" makalesi için tartışma - sayfa 13

 
zhserg:

Basit bir kopyalayıcı yaptım. Nereden, nereye ve kopyalama aralığını ayarlayın.

Arşivdeki exe dosyası
 
Warstein:
Harika şeyler için teşekkürler!!!
Çok büyük bir istek, sadece belirli bir magik numarasına sahip siparişlerle çalışma ekleyin.

Fikri destekliyorum, belki birisi yazacak ve bu yüzden kod harika yazar sayesinde her şey süper! Sadece iyi bir tüccar bulmam ve yatırım yapmasını istemem gerekiyor ;)

 

Eklemeliyiz.

1. Lot orantılılığı - 5 basamaktan 4 basamağa - lot da 1 basamak hareket eder.

Genel olarak, lotu değil, serbest marjı ve lotu ve dights'ı çekmek ve alıcıda lotu mevcut serbest marj ve teklif ondalık basamaklarına göre yeniden hesaplamak daha iyidir.

Bu şekilde mani-yönetim korunacaktır - bu olmadan program anlamını yitirir.

2. Sembollere ön ekler-ekler - bazen DC bir işlem sembolünü EURUSD değil EURUSD_byaka olarak adlandırır (muhtemelen "hangisinden hangisine" yazışmasını ayrı bir yapılandırma dosyasında çoğaltılmış sembol yapmak daha iyidir).

3. Bir dosyanın birkaç mt4 dosyasına kopyalanmasını gerçekleştirmek güzel olurdu.

Örneğin yardımıyla mt5 klasöründen mt4 dosyası alarak:

#import "kernel32.dll"
   bool CopyFileA(string lpExistingFileName, string lpNewFileName, bool bFailIfExists);
#import

/////////////////

CopyFileA(TerminalPath()+CharToStr(92)+"experts"+CharToStr(92)+"files"+CharToStr(92)+fSymbol+".txt",CopyTo1+fSymbol+".txt",false);

Bu şekilde mt4 dosya sanal alanının ötesine geçebilirsiniz.

Mql5'te maalesef bu ve benzeri MSDN hileleri çalışmıyor.

Genel olarak deneyeceğim ve hata yoksa şimdilik kendim yazmayacağım. Teşekkürler.

 
zhserg:

Basit bir kopyalayıcı yaptım. Nereden, nereye ve kopyalama aralığını ayarlayın.

"Kaydet/başlat" düğmesi ile kopyalamaya başlayın. Çalışma sırasında yanıp sönecektir))).

Translator positions.MQ5'te int han=FileOpen(subfolder+"\\\experts\\files\\"+folder+".csv",FILE_WRITE|FILE_SHARE_READ|FILE_ANSI,","); satırını int han=FileOpen(folder+".csv",FILE_WRITE|FILE_SHARE_READ|FILE_ANSI,","); yani dosya \\Program Files\MetaTrader 5\MQL5\Files klasörüne yazılacaktır.

Bir bootnik kullanabilirsiniz. Hem ağ üzerinden hem de bilgisayarın içinde olacaktır.

@Echo off
:loop
xcopy "F:\folder\*.txt" "\\Comp1\folder" /Y /R /C /I /G /Z /D >nul
xcopy "C:\Program Files\MetaTrader 5\MQL5\Files\Translator positions.csv" "C:\Program Files\MetaTrader 4\experts\files" /Y /R /C /I /G /Z /D >nul
timeout /t 1
goto :loop

Bu arada, mega dosya senkronizasyonu için Microsoft SyncToy 2.1 http://www.microsoft.com/en-us/download/details.aspx?id=15155'u öneririm.

SyncToy 2.1
SyncToy 2.1
  • www.microsoft.com
Note: There are multiple files available for this download. Once you click on the “Download” button, you will be prompted to select the files you need. Overview There are files from all kinds of sources that we want to store and manage. Files are created by our digital cameras, e-mail, cell phones, portable media players...
 
Tüm bunlar artık geçerli değil, makale kendini aştı, gelişmiş özelliklere sahip yeni bir derleyici mql4++ yakında piyasaya sürülecek, her şey değişecek.
 

Sanırım sorun Metatrader'ın verileri nerede sakladığı ile ilgili. Windows'un en son sürümlerinde kurulum klasörünün alt klasörlerini kullanmaz.

Sunucu 2008'de (benim durumumda) MT5 şunları kullanır:
C:\Users\[kullanıcı adı]\AppData\Roaming\MetaQuotes\Terminal\[uzun hex numarası]\MQL5\vb...

Her terminal kurulumu bu konumda benzersiz bir [uzun onaltılık sayı] ile kendi klasörünü kullanır. MT4'ü yukarıdaki klasör yoluna kurmayı denedim, ancak kendi benzersiz veri klasöründen de okuyup yazıyor, bu yüzden bu da çalışmıyor. Her durumda, programları bu konumdan çalıştırmak muhtemelen iyi bir fikir değildir.

Windows 8'de de böyle bir sorun olduğundan şüpheleniyorum.

Bu noktada fikir bulmakta zorlanıyorum ama umarım bu bilgi faydalı olur.

 

Windows Server 2008'deki MT4 veri dosyası konumlarım:

C:\Users\[kullanıcı adı]\AppData\Local\VirtualStore\Program Files\[MT4 program klasörünün adı]

İşletim sisteminin dosya işlemlerini yeniden yönlendirdiğini tahmin ediyorum.

 

4103 - dosya açma hatası, MT5'in bir dosyaya işlem yazdığı ve MT4'ün bunu 'bulamadığı' anlamına gelir.

Bunun nedeni MT5'in MT4'ten farklı çalışmasıdır. MT5'te yüklediğimiz klasör, çalıştırıldığı klasörden farklıdır. Örneğin, MT5'i C:\Accounts\MT5'e ve MT4'ü C:\Accounts\MT5\MQL\Files\MetaTrader 4'ekurdum .

MT5, C:\Users\[kullanıcı adı]\AppData\Roaming\MetaQuotes\Terminal\[uzun hex numarası]\MQL5\vb... klasörünü oluşturdu ve aslında buradan çalışıyor. Yani MT5 işlemleri bu klasörde bir yere yazıyor.

Orijinal makalede olduğu gibi, MT4 MT5 klasörünün 'içinde' olmalıdır. Yani çözüm, MT5 kurulum klasörünü çalıştırma klasörü ile "AYNI" yapmakta yatıyor. Ve en basit yol şudur:

1. tüm MT5 örneklerini kaldırın

2. C:\Users\[kullanıcıadı]\AppData\Roaming\ klasöründen 'Metaquotes' klasörünü silin

Şimdi yükleme klasörünü çalıştırma klasörü ile aynı yapacağız:

3. MT5'i yeniden yükleyin. Program files klasöründe olmamalıdır, örneğin C:\Accounts\MT5 yapın. Yükleme sırasında 'bittikten sonra başlat' seçeneğinin işaretini kaldırın (kritik adım)

4. MT5'i ilk kez çalıştırmadan ÖNCE, masaüstündeki MT5 kısayoluna sağ tıklayın, özelliklere tıklayın, yola tırnak işaretleri olmadan "/portable" ekleyin. Böylece C:\Accounts\MT5\terminal.exe /portable olacaktır. (terminal.exe'den sonra bir boşluk olduğuna dikkat edin, ileri eğik çizgi, büyük harf olmadan taşınabilir). Tamam'a tıklayın.

Şimdi MT4'ü kuracağız, EA'ları kopyalayacağız ve terminalleri çalıştıracağız

5. MT4'ü C:\Accounts\MT5\MQL\Files\MetaTrader 4 klasörüne yükleyin. (Klasör adının MetaTrader 4 veya her ne ise, EA'lardaki adla aynı olması gerektiğini unutmayın)

6. Çevirmen ve Kopyacı EA'yı ilgili klasörlere kopyalayın.

7. Hem MT5 master hem de MT4 slave'i çalıştırın.

8. Keyfini çıkarın !!!

İpucu: Bir şey düzgün yapılmazsa bir sonraki adıma geçmeyin.

'Teknik olmayan' bir dil kullandığım için özür dilerim, bu bir doktordan bekleyebileceğiniz maksimum şeydir!

 
doctornasir:

4103 - dosya açma hatası, MT5'in bir dosyaya işlem yazdığı ve MT4'ün bunu 'bulamadığı' anlamına gelir.

Bunun nedeni MT5'in MT4'ten farklı çalışmasıdır. MT5'te yüklediğimiz klasör, çalıştırıldığı klasörden farklıdır. Örneğin, MT5'i C:\Accounts\MT5'e ve MT4'ü C:\Accounts\MT5\MQL\Files\MetaTrader 4'ekurdum .

MT5, C:\Users\[kullanıcı adı]\AppData\Roaming\MetaQuotes\Terminal\[uzun hex numarası]\MQL5\vb... klasörünü oluşturdu ve aslında buradan çalışıyor. Yani MT5 işlemleri bu klasörde bir yere yazıyor.

Orijinal makalede olduğu gibi, MT4 MT5 klasörünün 'içinde' olmalıdır. Yani çözüm, MT5 kurulum klasörünü çalıştırma klasörü ile "AYNI" yapmakta yatıyor. Ve en basit yol şudur:

1. tüm MT5 örneklerini kaldırın

2. C:\Users\[kullanıcıadı]\AppData\Roaming\ klasöründen 'Metaquotes' klasörünü silin

Şimdi yükleme klasörünü çalıştırma klasörü ile aynı yapacağız:

3. MT5'i yeniden yükleyin. Program files klasöründe olmamalıdır, örneğin C:\Accounts\MT5 yapın. Yükleme sırasında, 'bittikten sonra başlat' seçeneğinin işaretini kaldırın (kritik adım)

4. MT5'i ilk kez çalıştırmadan ÖNCE, masaüstündeki MT5 kısayoluna sağ tıklayın, özelliklere tıklayın, yola tırnak işaretleri olmadan "/portable" ekleyin. Böylece C:\Accounts\MT5\terminal.exe /portable olacaktır. (terminal.exe'den sonra bir boşluk olduğuna dikkat edin, ileri eğik çizgi, büyük harf olmadan taşınabilir). Tamam'a tıklayın.

Şimdi MT4'ü kuracağız, EA'ları kopyalayacağız ve terminalleri çalıştıracağız

5. MT4'ü C:\Accounts\MT5\MQL\Files\MetaTrader 4 klasörüne yükleyin. (Klasör adının MetaTrader 4 veya her ne ise, EA'lardaki adla aynı olması gerektiğini unutmayın)

6. Çevirmen ve Kopyacı EA'yı ilgili klasörlere kopyalayın.

7. Hem MT5 master hem de MT4 slave'i çalıştırın.

8. Keyfini çıkarın !!!

İpucu: Bir şey düzgün yapılmazsa bir sonraki adıma geçmeyin.

'Teknik olmayan' bir dil kullandığım için özür dilerim, bu bir doktordan bekleyebileceğiniz maksimum şeydir!

Bunu yazmak için zaman ayırdığınız için teşekkürler.

Diğer bir yol ise varsayılan kurulum ayarlarını korumak ve iki klasör arasındaki bağlantıyı sembolik bir bağlantı ile yapmaktır.

http://en.wikipedia.org/wiki/NTFS_symbolic_link

 

mql4++ derleyici

bu, mt4'teki alıcı için ek parametreler içeren yeni bir sürüm mü?