"Yeni Başlayanlar için MQL5’te Uzman Danışman Yazmak İçin Adım Adım Açıklamalı Kılavuz" makalesi için tartışma - sayfa 13

 
Yardıma ihtiyacım var Expert Advisors'daki bir hatayı düzeltemiyorum, piyasaya giriş ve çıkış zamanını yazıp ayarları değiştirebilmek istiyorum,
Dosyalar:
 
michael sedgley:
MQL5 programlamasındaki tüm değişikliklerle birlikte, bu adım adım kodun güncellenmiş bir sürümüne ihtiyaç var, bu kodu kopyalarsam artık derlenmiyor - en son değişiklikleri içeren bir sürüm var mı - çok teşekkürler.

Merhaba Michael,

Yorumunuz için teşekkürler. Önerinizi inceleyeceğim ve kodlarda herhangi bir güncelleme gerekiyorsa, yakında kullanıma sunulacaktır.

 

neden çıktı hata kodu: 10030?

Dosyalar:
2.png  74 kb
 

Yardım edin, burada kimse var mı?


neden çıktı hata kodu: 10030?

 

Öncelikle makale için teşekkürler, mql5 programlamaya başlamamda bana yardımcı oluyor.

Kodunuzu denedim ve OnInit() üzerinde amacını anlamadığım bir kod var:

//--- 4 yerine 5 veya 3 basamaklı fiyatlara sahip döviz çiftlerini ele alalım

STP = StopLoss;

TKP = TakeProfit;

if(_Digits==5 || _Digits==3)

{

STP = STP*10;

TKP = TKP*10;

}

Bu kısım, kar alma ve zararı durdurma piblerinin değerlerini değiştirerek giriş değerleriniz ile gerçekte kullanılanlar arasında bir farka neden olur.

Ancak, if içindeki iki satırı kaldırırsam, emri sunucuya gönderirken genellikle 10016 (geçersiz stoplar) hatası alıyorum. İlk emir verme denemesi iyi gidiyor ve 10009'u alıyorum, ancak sonraki zamanların çoğunda 10016 alıyorum. EA'da hata ayıkladım ve tüm zarar durdurma ve kar alma işlemleri, zarar durdurma 30 veya 300 ve kar alma 100 veya 1000 pibs mevcut fiyatın üstünde veya altında olma farkıyla iyi görünüyor.

STP ve TKP 10 ile çarpılmadığında sunucunun bana 10016 hatası vermesinin nedenini bulamıyorum.

Hatanın neden olduğunu veya _Digits 5 veya 3 olduğunda 10 ile çarpmanın amacını bana açıklayabilecek biri var mı?

Yardımlarınız için teşekkürler.

 
an you please guguqiaqia:

Yardım edin, burada kimse var mı?


neden çıktı hata kodu: 10030?

Merhaba,

Hatayı nasıl aldığınızı bize bildirebilir misiniz?

 

eshelios.sr:


Öncelikle makale için teşekkürler, mql5 programlamaya başlamamda bana yardımcı oluyor.

Kodunuzu denedim ve OnInit() üzerinde amacını anlamadığım bir kod var:

//--- 4 yerine 5 veya 3 basamaklı fiyatlara sahip döviz çiftlerini ele alalım

STP = StopLoss;

TKP = TakeProfit;

if(_Digits==5 || _Digits==3)

{

STP = STP*10;

TKP = TKP*10;

}

Bu kısım, kar al ve zararı durdur piblerinin değerlerini değiştirerek giriş değerleriniz ile gerçekte kullanılanlar arasında bir farka neden olur.

Ancak, if içindeki iki satırı kaldırırsam, emri sunucuya gönderirken genellikle 10016 (geçersiz stoplar) hatası alıyorum. İlk emir verme denemesi iyi gidiyor ve 10009'u alıyorum, ancak sonraki zamanların çoğunda 10016 alıyorum. EA'da hata ayıkladım ve tüm zarar durdurma ve kar alma işlemleri, zarar durdurma 30 veya 300 ve kar alma 100 veya 1000 pibs mevcut fiyatın üstünde veya altında olma farkıyla iyi görünüyor.

STP ve TKP 10 ile çarpılmadığında sunucunun bana 10016 hatası vermesinin nedenini bulamıyorum.

Hatanın neden olduğunu veya _Digits 5 veya 3 olduğunda 10 ile çarpmanın amacını bana açıklayabilecek biri var mı?

Yardımlarınız için teşekkürler.

Merhaba,

Öncelikle açıklamanızdan, bu kod satırlarını kaldırdığınızda hata alıyorsunuz ve stoploss/takeprofit değerlerini 10 ile çarpmadığınızda hata alıyorsunuz? Bu, bu kod satırlarının çok önemli olduğunu açıkladığına inanıyorum.

Makaleye geri dönersek, 5 ondalık basamaklı (0.XXXXX) veya 3 ondalık basamaklı (0.XXX) döviz çiftlerine sahip bir grafik kullanıyorsanız, bu kod satırlarının gerekli olduğunu açıkladı.

Bu yüzden burada EA'mızın tüm brokerlerle çok iyi çalıştığından emin olmak istiyoruz.Digits veya Digits(), mevcut grafik sembolünün fiyatının doğruluğunu belirleyen ondalık basamak sayısını döndürür.5 basamaklı veya 3 basamaklı bir fiyat grafiği için, hem Zararı Durdur hem de Kâr Al'ı 10 ile çarparız.

Aşağıdaki örneklere bakınız:

5 Ondalık Basamaklı fiyat

5 - Ondalık Basamaklı fiyat

3 - Ondalık Basamaklı fiyat

3 - Ondalık Basamaklı fiyat

Umarım bu sorunuza cevap olmuştur.

 
Samuel Olowoyo:

Merhaba,

Hatayı nasıl aldığınızı bize bildirebilir misiniz?

1. adım: bu örnek kodunuzu indirin.

adım 2: mql5'te derleyin.

3. adım: mt5'te eurusd 1mgrafiğini açın, ardından "otomatik ticaret" i tıklayın

4. adım: 223,224 vb. kod satırında kesme sembolünü ayarlayın...

adım 5: mt5'te hata ayıklamayı başlat düğmesine tıklayın, ardından bu hatayı gösterin.

 
 guguqiaqia:

1. adım: bu örnek kodu indirin.

adım 2: mql5'te derleyin.

adım 3: mt5'te eurusd 1mgrafiğini açın, ardından "otomatik ticaret" i tıklayın

4. adım: 223,224 vb. kod satırında kesme sembolünü ayarlayın...

5. adım: mt5'te hata ayıklamayı başlat düğmesine tıklayın, ardından bu hatayı gösterin.

Merhaba,

Adımlarınızı paylaştığınız için teşekkürler. Sizi koda geri götürebilirsem,

if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
{
   Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
}
else
{
   Alert("The Buy order request could not be completed -error:",GetLastError());    // line 223
   ResetLastError();                                                                // line 224
   return;

Bildiğim kadarıyla, kod yapması gerekeni yaptı. Hatayı aldınız çünkü vermeye çalıştığınız emir BAŞARILI DEĞİLDİ ve 223. satırın yapması gereken de buydu. Hatanın ne anlama geldiğini öğrenmek için lütfen bunu okuyun - https://www.mql5.com/tr/docs/constants/errorswarnings/enum_trade_return_codes - (Aslında, 10030 Geçersizsipariş doldur matürü anlamına gelir).

Sipariş doldurma tipinin ne olduğunu anlamak için -ORDER_FILLING_FOK -

mrequest.type_filling = ORDER_FILLING_FOK; // Order execution type  ( line 213 )

anlamına gelir, lütfen https://www.mql5.com/tr/docs/constants/tradingconstants/orderproperties#enum_order_type_filling adresini okuyun

Umarım bu sorunuzu yanıtlamıştır.

 

Merhaba Samuel,

Kodu indirdim, kurdum ve çalıştırdım ve çoğunlukla kriterleri karşılayan her mumda alış ve satış emirleri açtığını fark ettim (zaman dilimi olarak H1 kullanıyorum).

Hata ayıklama yapmadım ve kodların bir kısmının tetiklenmediğini fark ettim. EA'yı indirilebilen kodla düzgün bir şekilde çalıştırabiliyor musunuz?

Dosyalar:
screen.jpg  417 kb