Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Sizin ve diğer herkesin sağladığı yardımı gerçekten takdir ediyorum. Bunu derlemek için son birkaç gün içinde her şeyi denedim ve sormadığım için özür dilerim. Çoğunuz kendi kodumu kullanmayı ve başkasının kodunu kullanmamı önerdiniz, ancak neyi yanlış yaptığımı anlamazsam öğrenmeyeceğim. Bana göre kodum sağlam görünüyor. Emirleri pozisyona göre saymasını ve yalnızca kriterlerime uyanları seçmesini ve ardından bu belirli ticareti değiştirmesini istiyorum. Şimdiye kadar, 4 sayfadan sonra kimse kodumun hangi satırının bozuk olduğunu belirtmedi. İlk önce neyi yanlış yaptığımı görmedikçe ve anlamadıkça, başka birinin kodunu kullanarak öğrenmeme yardımcı olmaz. Şimdi hedefim, çalışan bir Trailingstop EA'ya sahip olmak değil, çünkü orada çok şey var, ama benim için nasıl kod yazacağımı öğrenmek, böylece devam edebilirim. Aslında benim kodum, Jimdandy'nin Trailingstops hakkındaki Youtube Eğitimi'nde yayınladığı kodla neredeyse aynıydı. Neredeyse onunkiyle aynı olduğu için, kodu neredeyse kelimesi kelimesine kopyaladım (manuel ticaret yapmak istememin dışında), ancak kodu sadece bazen de çalışıyor.
Bazı şeyleri yazdırdım. Bu takas, Trailingstop'un başladığını belirttiğim noktanın neredeyse 300 puan ötesinde (ki bu 150 puandı):
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderModify = false
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Sor = 1.45926
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbypos = 0
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbyticket = 1
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: bilet = 0
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSelect = true
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Sipariş Toplamı = 16
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSymbol = EURUSD
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828
2016.04.22 00:17:58.934 Trailing_v33 EURAUD,M15: OrderModify = false
Bu EA yalnızca EURAUD'a yerleştirilir. Gördüğünüz gibi, diğer 9 tabloda açık olan 16 Emir var. Bu çift için seçilen bilet numarası tamamen yanlış ve OrderSymbol tamamen yanlış. Her ikisi de açık bir EURUSD siparişi içindir. Yukarıdakilere dayanarak, benim for döngüm bu durumda Konum 0'ı seçti , oysa seçmesi gereken EURAUD 14 (15-1) konumundaydı. Niye ya? Bunu görmezden gelmesini söyledim.
Yukarıda bahsedilen videoda Jim aslında bu soruna giriyor ve sorunumu çözmek için aşağıdaki kodu kullandığını söyledi, ancak bu, siparişleri doğru şekilde göndermek için bir sayaç ve siparişleri filtreleme işlevi değil. Filtre olarak kullanmayı denedim ama başarılı olamadım.
Kodum şimdi şöyle görünüyor. Birisi lütfen kodumu eleştirir, böylece bundan bir şeyler öğrenebilir ve neden birden fazla grafikte çalışmadığını söyleyebilir. O kadar da kötü olamayacağını biliyorum çünkü aslında bazen mükemmel çalışıyor. Teşekkür ederim
Şimdiye kadar, 4 sayfadan sonra kimse kodumun hangi satırının bozuk olduğunu belirtmedi.
Doğru değil! Hatalarınızı anlattık ve onlara birçok lezzet ve alternatifte çözümler sunduk. Yine de onları görmezden geliyorsunuz ve bunu KENDİ YOLUNUZ yapmaya devam ediyorsunuz. Sadece bu değil, daha fazla hata ekleyerek durumu daha da kötüleştirdiniz.
Bir ressam resim yapmayı öğrendiğinde, bunu önce ustalaşmış diğerlerinin teknikleriyle başa çıkarak yapar. Ancak bu teknikler konusunda kendini rahat hissettiğinde, KENDİ resim YÖNTEMİNİ yaratmaya başlar.
İşte "eleştirimin" kısa bir listesi:
Listeleyebileceğim daha çok şey var, ama en azından bunları bir kez ve herkes için düzeltin!
Kodlama diğer diller gibidir. Evet, kelimeleri bir araya getirebilirsiniz ama bu sizi şair yapmaz. Kodlamada da okunabilir ve işlevsel hale getirmek için ritim ve yapıya sahip olmanız gerekir.
İşte "eleştirimin" kısa bir listesi:
Tamam bunun için çok teşekkür ederim. Aslında tüm 'if' ifadelerim için başlangıçta burada daha önce yayınladığım koda göre parantezler vardı, ancak bu kod çalışmadığından, önceki yazımda yapıştırdığım kodu kopyalamayı da içeren başka şeyler denedim. Bahsettiğim gibi, bu aslında benim kodum bile değil, ama aynı zamanda tüm çiftlerde çalışmıyor. Bununla birlikte, parantezleri tekrar değiştireceğim ve diğer tavsiyelere uyacağım. Bu arada, OrderSelect'in EA'nın açık olduğu değil, terminaldeki ilk siparişin Sembolünü yazdıracağını öğrendim, bu aslında yanlış değildi.
EDIT: 3 numaralı öneri için teşekkürler !!!!!!! Sorunun bu olduğunu düşünüyorum, çünkü Sipariş önce Sembol tarafından seçilmeli ve SONRA değer saklanmalıdır. Bu yüzden değişkeni aşağıdaki işlevlerin altına taşıdım ve şimdi çalışıyor gibi görünüyor (ancak kesin olarak bilmeden önce daha fazla test gerekiyor
Tamam bunun için çok teşekkür ederim. Aslında tüm 'if' ifadelerim için başlangıçta burada daha önce yayınladığım koda göre parantezler vardı, ancak bu kod çalışmadığından, önceki yazımda yapıştırdığım kodu kopyalamayı da içeren başka şeyler denedim. Bahsettiğim gibi, bu aslında benim kodum bile değil, ama aynı zamanda tüm çiftlerde çalışmıyor. Bununla birlikte, parantezleri tekrar değiştireceğim ve diğer tavsiyelere uyacağım. Bu arada, OrderSelect'in EA'nın açık olduğu değil, terminaldeki ilk siparişin Sembolünü yazdıracağını öğrendim, bu aslında yanlış değildi.
EDIT: 3 numaralı öneri için teşekkürler !!!!!!! Sorunun bu olduğunu düşünüyorum, çünkü Sipariş önce Sembol tarafından seçilmeli ve SONRA değer saklanmalıdır. Bu yüzden değişkeni aşağıdaki işlevlerin altına taşıdım ve şimdi çalışıyor gibi görünüyor (ancak kesin olarak bilmeden önce daha fazla test gerekiyor
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol()!= Symbol ()) continue ;
double Pip= Point * 10 , TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip, SL=StopLoss*Pip;
if (OrderType()==OP_BUY){
if (Bid-OrderOpenPrice()>TSTP){
if (OrderStopLoss()<Bid-Trail){
if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail, OrderTakeProfit(), Orange))
Print ( "Error Buy TrailingStop: " , GetLastError ());
}
}
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()!= Symbol ()) continue ;
// Everything below is executed if NO order is selected or a selected order is symbol
double Pip= Point * 10 , TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip,SL=StopLoss*Pip;
if (OrderType()==OP_BUY)
&& Bid-OrderOpenPrice()>TSTP)
&& OrderStopLoss()<Bid-Trail){
if (!OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Trail, OrderTakeProfit(), Orange))
Print ( "Error Buy TrailingStop: " , GetLastError ());
}
:
Şimdi belki de herkesin zamanını boşa harcadıklarında "sert eleştirimi" anlarsınız. "Basit şeyleri" anlasam da, herkesin zamanını boşa harcamanın kabul edilebilir olduğunu düşünüyorlar, ben anlamıyorum.
Evet! Ne yazık ki, haklısın gibi görünüyor!
Cevaplar için teşekkürler.Yani, kodu aşağıdaki gibi önceki bir sürüme değiştirdim. Bunun gibi, durma seviyesinin 50 puan olduğu tüm çiftlerde mükemmel çalışıyor gibi görünüyor, ancak durdurma seviyesinin daha yüksek olduğu çiftlerde değil, örneğin dış değişkenler durma seviyesinden daha yüksek olsa bile EURAUD. Yani bu tuhaf
Ayrıca benimkine çok benzeyen bir koda sahip başka bir EA buldum ve kodu karşılaştırdım. Temel farklılıkları vurguladım.
1. Azaltma yerine artış
2. Her şeyi Point*10 yerine Point ile çarpın
3. Trailingstop ve Trailingstep'i birlikte ekler ve ardından bir çıkarır ve Trailingstep ile sırayı değiştirir. Bunu doğru anlarsam, 15 piplik (150 puan) bir hamleden sonra Trailingstart etkinleştirilecektir. EA'mda, fiyat 5 pip geride kalacak ve fiyat tekrar düşerse ve bu 5 pip seviyesine ulaşırsa durdurulacak. EA'sında, 15 pipten sonra da etkinleştirilecek, ancak geride bıraktığı pip miktarı 19 (15+5-1), yani fiyatın durdurulması için 19 pip düşmesi gerekiyor. Örnek olarak: OrderOpenPrice 1.50000'dir. Fiyat 150 puan artarak 1.50150'ye yükselir ve bu da Trailingstop'u etkinleştirir. Fiyat daha sonra 1.50100'e düşerse, 5 pip kâr için durdurulacaktır. EA'sında, Trailingstop da 1.50150'de etkinleştirilir, ancak iz 1.49960'dadır, bu da durmanın durma seviyesine yakın olması nedeniyle hata 130'a neden olacağını düşünüyorum. Yoksa bunu yanlış mı anlıyorum?
Sorunum bunlardan bir veya birkaçıyla ilgili olabilir mi?
Ayrıca benimkine çok benzeyen bir koda sahip başka bir EA buldum ve kodu karşılaştırdım.
Bakalım senin bu mantığını anlayabilmiş miyim! Nerede olduğunu bilen ve bu kodu sizin kodunuza dahil etmeye istekli olan başka birinden başka bir EA bulmaya isteklisiniz, ancak size yardımcı olmak ve sorunlarınızı düzeltmek için özel olarak yazılmış kodu almaya İSTEMİYORSUNUZ!!!
VAY! Ne kadar MANTIKLI! Ona ihtiyacın olduğunda SPOCK nerede!
SPOCK, Huzur içinde yatsın! Hepimiz seni özledik!
Bakalım senin bu mantığını anlayabilmiş miyim! Nerede olduğunu bilen ve bu kodu sizin kodunuza dahil etmeye istekli olan başka birinden başka bir EA bulmaya isteklisiniz, ancak size yardımcı olmak ve sorunlarınızı düzeltmek için özel olarak yazılmış kodu almaya İSTEMİYORSUNUZ!!!
VAY! Ne kadar MANTIKLI! Ona ihtiyacın olduğunda SPOCK nerede!
SPOCK, Huzur içinde yatsın! Hepimiz seni özledik!