EA sürümünü güncellemeye çalışıyorum ve bir hata alıyorum.
Strateji test cihazında aynı EA.
Aynı zamanda, MT4 için danışmanlar yazıyorum, orada her şey yolunda. 4 ve 5 için Uzman Danışmanların kodu aynıdır, yalnızca içerme dosyasında farklılık gösterirler (4 ve 5 için farklıdırlar).
Bu danışman en son Ocak ayında güncellendiğinde - her şey yolundaydı.
Program sürümü - MetaTrader 5 x64 build 2025 başladı (MetaQuotes Software Corp.)
-Terminal Windows 10 (derleme 14393) x64, IE 11, UAC, Intel Celeron N2815 @ 1.86GHz, Bellek: 1866 / 3967 Mb, Disk: 5/35 Gb, GMT+3
Aptalca oynayın ve 1$ veya 100500 lot yatırın ve takas olup olmayacağını görün. Ve sadece bir aptalın bu tür parametreleri ayarlayabileceğine dair bildirimler olacak mı?
Aptalca oynayın ve 1$ veya 100500 lot yatırın ve takas olup olmayacağını görün. Ve sadece bir aptalın bu tür parametreleri ayarlayabileceğine dair bildirimler olacak mı?
Aynı sorun. Denedim - yardımcı olmuyor). 13 Nisan'dan beri güncelleme yapamıyorum. Her şeyi ve her şeyi kontrol etmekle yaparsanız - tüm semboller için bir "ticaret işlemi yoktur" yazısı çıkar. Çekler olmadan bir hata oluşur - bir pozisyon açmak için yeterli fon yoktur. Ve MT4'ün yanı sıra TS'nin yazarının sürümü de sorunsuz bir şekilde güncellendi.
Rakam minimum lotu gösteriyor - 2000, bakiye 10000, açmak için açıkça yeterli değil, en azından yeterli para olmadığını kontrol edin, en azından bahis yapmayın. Hala testi geçmiyor.
Ve bu gibi durumlarda ne yapmalı?
Elbette pazarlık olmayacak. Bildirimler ne olmalı? Yalnızca lot boyutu SYMBOL_VOLUME_MIN ve SYMBOL_VOLUME_MAX aralığına dahil değilse OnInit'te var, ardından INIT_PARAMETERS_INCORRECT başlatma hatası
Elbette pazarlık olmayacak. Bildirimler ne olmalı? Yalnızca lot boyutu SYMBOL_VOLUME_MIN ve SYMBOL_VOLUME_MAX aralığına dahil değilse OnInit'te var, ardından INIT_PARAMETERS_INCORRECT başlatma hatası
Benim için de aynı olduğunu hatırlıyorum sonra moderatörler arabadan sonra kontrol ettiler. kontrol eder. Yanlış parametreler durumunda OnInit, INIT_PARAMETERS_INCORRECT koduyla aynı şeyi tamamladı. Ve otomatik. çek, takas olmadığı için aynı hatayı verdi. Bu yüzden moderatör bana OnInit()'i bu kodla tamamlamamamı, sadece bir Uyarı vermemi tavsiye etti.
Muhtemelen ayda bir, birileri bu soruyu soruyor. Bir kez daha.
Mesele şu ki, ticaret yaparken (gerçek hayatta), sadece bakiyenin büyüklüğü değil, aynı zamanda partinin büyüklüğü de değişebilir.
Ve test sırasında depozitin boyutu (1'den 10.000.000'a kadar) veya lotun (1.000.000'den 0.01'e) değişebilir.
Bu nedenle, bu kontroller OnInit'te bir kez değil, sürekli olarak, bir döngüde (örneğin, OnTick'te) yapılmalıdır.
Log taşması olmaması için bir uyarı (Mesaj Yazdır veya Uyarı) sadece bir kez görüntülenmelidir.
Elbette pazarlık olmayacak. Bildirimler ne olmalı? Yalnızca lot boyutu SYMBOL_VOLUME_MIN ve SYMBOL_VOLUME_MAX aralığına dahil değilse OnInit'te var, ardından INIT_PARAMETERS_INCORRECT başlatma hatası
Aptal gibi davranmanın çok zor olduğunu anlıyorum ama bu beceri bazen yardımcı oluyor. Tekrar deneyin. Hesabına bir danışman, 1 dolar koydun, 100500 dolar koydun ve bekle... Bir gün, bir saniye, üçüncü bir bekledin... sonra kızmaya başlıyorsun, "Ne için ödedim. Neden vermiyorsun? Bu bok işe yaramıyor mu?" ve kimse bir şey demiyor, kimse "Sen salaksın... Forex piyasasında böyle bir mevduatla çalışamazsın. Sadece bir aptal 100500 koyabilir" gibi bir şey söylemek istemiyor... Bir şey bunun gibi.
Muhtemelen ayda bir, birileri bu soruyu soruyor. Bir kez daha.
Mesele şu ki, ticaret yaparken (gerçek hayatta), sadece bakiyenin büyüklüğü değil, aynı zamanda partinin büyüklüğü de değişebilir.
Ve test sırasında depozitin boyutu (1'den 10.000.000'a kadar) veya lotun (1.000.000'den 0.01'e) değişebilir.
Bu nedenle, bu kontroller OnInit'te bir kez değil, sürekli olarak, bir döngüde (örneğin, OnTick'te) yapılmalıdır.
Log taşması olmaması için bir uyarı (Mesaj Yazdır veya Uyarı) sadece bir kez görüntülenmelidir.
Son derece basit kod - ve doğrulamayı geçemez. Listelediğiniz koşulları karşılıyor gibi görünüyor.
void OnTick () { ENUM_POSITION_TYPE PosType= POSITION_TYPE_SELL ; MqlTradeRequest request; MqlTradeResult result; MqlTradeCheckResult check; ZeroMemory (request); ZeroMemory (result); ZeroMemory (check); long digit; double point,Bid; SymbolInfoDouble ( _Symbol , SYMBOL_BID ,Bid); request.type = ORDER_TYPE_SELL ; request.price = Bid; request.action = TRADE_ACTION_DEAL ; request.symbol = _Symbol ; request.volume = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN ); request.sl= 0 ; request.tp= 0 ; request.deviation= 10 ; request.magic= 55555 ; request.comment= NULL ; request.type_filling= 0 ; if ( PositionsTotal ()== 0 &&CheckMoneyForTrade( _Symbol , SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN ), ORDER_TYPE_SELL )== true ){ OrderSend (request,result); } else { ExtExpert.Deinit(); return ; } } bool CheckMoneyForTrade( string symb, double lots, ENUM_ORDER_TYPE type) { //--- получим цену открытия MqlTick mqltick; SymbolInfoTick (symb,mqltick); double price=mqltick.ask; if (type== ORDER_TYPE_SELL ) price=mqltick.bid; //--- значения необходимой и свободной маржи double margin,free_margin= AccountInfoDouble ( ACCOUNT_MARGIN_FREE ); //--- вызовем функцию проверки if (! OrderCalcMargin (type,symb,lots,price,margin)) { //--- что-то пошло не так, сообщим и вернем false Print ( "Error in " , __FUNCTION__ , " code=" , GetLastError ()); return ( false ); } //--- если не хватает средств на проведение операции if (margin>free_margin) { //--- сообщим об ошибке и вернем false Print ( "Not enough money for " , EnumToString (type), " " ,lots, " " ,symb, " Error code=" , GetLastError ()); return ( false ); } //--- проверка прошла успешно return ( true ); }para çeki ile - çek olmadan ticaret işlemi yok - yeterli para yok
Muhtemelen ayda bir, birileri bu soruyu soruyor. Bir kez daha.
Mesele şu ki, ticaret yaparken (gerçek hayatta), sadece bakiyenin büyüklüğü değil, aynı zamanda partinin büyüklüğü de değişebilir.
Ve test sırasında depozitin boyutu (1'den 10.000.000'a kadar) veya lotun (1.000.000'den 0.01'e) değişebilir.
Bu nedenle, bu kontroller OnInit'te bir kez değil, sürekli olarak, bir döngüde (örneğin, OnTick'te) yapılmalıdır.
Log taşması olmaması için bir uyarı (Mesaj Yazdır veya Uyarı) sadece bir kez görüntülenmelidir.
Bu kontroller (LotMin, LotMax, LotNormalizeStep, bakiye kontrolü, OrderCheck) her pozisyon açıldığında yapılır. Ve OnInit'te sadece parti kontrol edilir. OnInit'teki bakiye kontrol mantığını hayal edemiyorum.
Not: Uyarı, Doğrulayıcı hatalarından kaydedilmez (((((((((((((((((((((((((
Bu kontroller (LotMin, LotMax, LotNormalizeStep, bakiye kontrolü, OrderCheck) her pozisyon açıldığında yapılır. Ve OnInit'te sadece parti kontrol edilir. OnInit'teki bakiye kontrol mantığını hayal edemiyorum.
Not: Uyarı, Validator hatalarından kaydedilmez (((((((((((((((((((((((((((((((
Doğrulayıcıda hata yok :)
Doğrulayıcı bir kez daha sağlanan kodda
- tam kontrol yok
- hata işleme yok
Doğrulayıcıda hata yok :)
Doğrulayıcı bir kez daha sağlanan kodda
- tam kontrol yok
- hata işleme yok
))
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
EA sürümünü güncellemeye çalışıyorum ve bir hata alıyorum.
Strateji test cihazında aynı Uzman Danışman.
Aynı zamanda MT4 için danışmanlar yazıyorum, orada her şey yolunda. 4 ve 5 için Uzman Danışmanların kodu aynıdır, yalnızca içerme dosyasında farklılık gösterirler (4 ve 5 için farklıdırlar).
Bu danışman en son Ocak ayında güncellendiğinde - her şey yolundaydı.
Program sürümü - MetaTrader 5 x64 build 2025 başladı (MetaQuotes Software Corp.)
-Terminal Windows 10 (derleme 14393) x64, IE 11, UAC, Intel Celeron N2815 @ 1.86GHz, Bellek: 1866 / 3967 Mb, Disk: 5/35 Gb, GMT+3