[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 222
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Deneyimlerime göre, hataları bulmanın en etkili yolu, yorumlardaki mesajları hata numarasıyla birlikte görüntülemek ve ardından EA'nın görsel bir çalışmasını izlemektir. Başlangıçta çok zaman alır, ancak daha sonra bunu hatasız nasıl yapacağınızı çabucak öğrenirsiniz. Ayrıca, /* ... */ kullanarak kodun bölümlerini hariç tutarak, danışmanın davranışının nasıl değişeceğini belirleyebilirsiniz.
Doğru anladın. Ayrıca, değeri kutudan çıkardığımızda, double türündedir, ancak sonucu int türünde bir değişkene yazma komutu verilirse, derleyici değeri bir değişkene koymak için gerekli tüm işlemleri otomatik olarak yapacaktır. yeni kutu.
Sonunda her şeyi doğru anladığımdan emin olmak için lütfen son paragrafınızla ilgili düşüncelerimi kontrol edin ... O halde yukarıda bahsedilen uzmanı alalım:
sonra satırda:
Tamsayı türündeki Experts değişkenini depolama için "GV değişkeni" kutusuna koyuyoruz (çift türe dönüştürerek). O zaman eğer (varsayımsal varsayım) Uzman Danışmanda bir satır olurdu
int New_Experts=Experts;
o zaman bu, sonucun int türünde bir değişkene yazılması için komutun verildiği anlamına gelir. Bu durumda derleyici:
* double türündeki Experts değişkeninin değerini kutudan çıkar,
* Experts değişkeninin değerinde gerekli değişiklikleri yapacak,
* bu değeri New_Experts değişkenine atar ve...
*, New_Experts değişkeninin değerini "int" kutusuna koyar.
O. değişken tip - bir değere sahip dış ambalajdan/paketlemeden başka bir şey yok mu? ve bu nedenle GV değişkenleri string türünde olamaz, çünkü Aşağıya yayına yalnızca sayısal değerler için izin verilir ve dizeler sayılara dönüştürülmez .
Böyle?
Yanıtınız için şimdiden teşekkür ederiz
(f=1;f<Bars;f++) için yanlış olan nedir
{
Fiyat1 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,f)) / MarketInfo(Symbol_1, MODE_POINT);
Fiyat2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,f)) / MarketInfo(Symbol_2, MODE_POINT);
Fark = Fiyat1 - Fiyat2;
Print("Fiyat1="+Fiyat1, "Fiyat2="+Fiyat2);
if (Spread==0){t=f; kırmak;}
}
Fiyat12 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,t)) / MarketInfo(Symbol_1, MODE_POINT);
Fiyat22 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,t)) / MarketInfo(Symbol_2, MODE_POINT);
Spread2 = Fiyat12 - Fiyat22;
if (MathAbs(Spread2) >= razdvizka && Spread2 < 0) { bir ticaret açın }
Yayılmanın sıfıra eşit olduğu çubuğu düzeltmek ve ondan yayılmayı kontrol etmek istiyorum
if( MathAbs (Spread)<eps) { ........ } ve ayrıca sonucu kontrol etmeniz gerekir - koşulu karşılayan bir nokta bulunup bulunmadığı. IMHO, örneğin bunun gibi ayrı bir işlev vermek daha iyidir:
merhaba.
Kim bilir, göstergelerde her zaman aynı periyodu gösterecek şekilde bir #özellik var mı, örneğin d1?
ve metatrader'da zaman çerçevesini değiştirseniz bile değişmedi mi?
Teşekkür ederim
------------------------------------------------
oh... çok fazla profesyonel.....
Yardım!!!!
gösterge komut dosyasından nasıl çağrılır, çok gereklidir - böylece pencerede görüntülenebilir
iyi akşamlar! Lütfen danışman kodunda değişiklik yapmama yardım edin.
1. Test ederken, her şey yolundadır - ancak ticaret yaparken, ilk anlaşmayı manuel olarak açmanız, bir stop koymanız ve ayrıca bir alım yapmanız gerekir. Danışman etkinleştirildiğinde ve yeni bir tick fiyatı geldiğinde danışmanın otomatik olarak işlem yapmaya başlamasını istiyorum.
2. Stoploss tetiklendiğinde, bir sonraki pozisyon bir öncekinden iki kat lot ile açıldığından, lot teorik olarak sonsuza kadar artabilir (benim durumumda 51.2'ye kadar), sınırlamak istiyorum (örneğin , 0.8) eşiği değiştirme yeteneği ile. Eşiğe ulaşıldığında ve durdurma tetiklendiğinde, danışman kapanmaz, ancak 0.1'den baştan başlar.
Uzmanlar lütfen yardım edin. Bütün gün sebepsiz yere tıngırdadım.
Sipariş askıda (Ana SATIN AL, SELLSTOP güvenlik ağı bekleniyor)
SELLSTOP'u kayıpsız kapatırken tekrar aynı yere ertelenir.
Sonunda her şeyi doğru anladığımdan emin olmak için lütfen son paragrafınızla ilgili düşüncelerimi kontrol edin ... O halde yukarıda bahsedilen uzmanı alalım:
sonra satırda:
Tamsayı türündeki Experts değişkenini depolama için "GV değişkeni" kutusuna koyuyoruz (çift türe dönüştürerek). O zaman eğer (varsayımsal varsayım) Uzman Danışmanda bir satır olurdu
o zaman bu, sonucun int türünde bir değişkene yazılması için komutun verildiği anlamına gelir. Bu durumda derleyici:
* double türündeki Experts değişkeninin değerini kutudan çıkar,
* Experts değişkeninin değerinde gerekli değişiklikleri yapacak,
* bu değeri New_Experts değişkenine atar ve...
*, New_Experts değişkeninin değerini "int" kutusuna koyar.
O. değişken tip - bir değere sahip dış ambalajdan/paketlemeden başka bir şey yok mu? ve bu nedenle GV değişkenleri string türünde olamaz, çünkü Aşağıya yayına yalnızca sayısal değerler için izin verilir ve dizeler sayılara dönüştürülmez.
Böyle?
Yanıtınız için şimdiden teşekkür ederiz
Kesinlikle bu şekilde değil. Gerçek şu ki, Experts değişkeni zaten int türüne sahip, bu nedenle, tür dönüştürmesi ona bir değer atamadan ÖNCE yapılmalıdır, yani. derleyici
* kutudan bir çift değer çıkardı (programınızda adı yoktur, ancak derleyici tarafından RAM'de veya bir işlemci kaydında bilinen bir adrese yazılır)
* yukarıdaki değişkenin değeriyle gerekli tüm değişiklikleri yaptı ve yeni değeri (zaten int türünde!) Experts değişkenine yazdı,
* bu değeri (int! türünde) New_Experts değişkenine atadı. Aynı türe sahiptirler, bu nedenle, bu sadece bir bellek hücresinden diğerine bir değer aktarımıdır.
Not: Yaptıklarını bu kadar detaylı kavrayan insanların varlığından çok memnunum. Aslında şaka değil. Tekrar iletişime geçin.
iyi akşamlar! Lütfen danışman kodunda değişiklik yapmama yardım edin.
1. Test ederken, her şey yolundadır - ancak ticaret yaparken, ilk anlaşmayı manuel olarak açmanız, bir stop koymanız ve ayrıca bir alım yapmanız gerekir. Danışman etkinleştirildiğinde ve yeni bir tick fiyatı geldiğinde danışmanın otomatik olarak işlem yapmaya başlamasını istiyorum.
2. Stoploss tetiklendiğinde, bir sonraki pozisyon bir öncekinden iki kat lot ile açıldığından, lot teorik olarak sonsuza kadar artabilir (benim durumumda 51.2'ye kadar), sınırlamak istiyorum (örneğin , 0.8) eşiği değiştirme yeteneği ile. Eşiğe ulaşıldığında ve durdurma tetiklendiğinde, danışman kapanmaz, ancak 0.1'den baştan başlar.
Denemek: