MMA_Breakout_strategy_volume I (MM veya MF olmadan) - WhooDoo22 tarafından kodlanmıştır - sayfa 4

 

Simon,

1. . . . hangi bilet numarasını seçiyor?

RE 1.: OrderSelect() işlevinin OrdersHistoryTotal() işleviyle birlikte kullanımında bir yanlış anladım. Hiçbir işlevin diğeriyle ilgisi yoktur. Bunu anlayarak, OrderSelect() işlevini ilk sipariş gönderme kodu bloğunun başlangıcından kaldırabilirim. Gereksizdir (unutmayın, bu kod kesinlikle deneme amaçlı yazılmıştır, demoda veya canlı yayında çalıştırmak için değil. Belli ki sonunda düzeltilmeli ki demo ve canlı hesaplarda kullanılabilir.).

Ayrıca, " GetLastError() işleviyle dönüş değerlerini kontrol edin" şeklindeki tekrarlayan noktanızı aldığıma inanıyorum. ANLADIM. ha ha :)

2. OrderHistoryTotal()'ı anladıysanız, siz...

RE 2.: OrdersHistoryTotal() işlevlerinin amacını anlıyorum. OrderSelect() işlevinin OrdersHistoryTotal() işleviyle birlikte kullanımına ilişkin bir yanlış kanım vardı.

3. { } kaşlı ayraçların nasıl çalıştığını anladıysanız...

RE 3.: Diş tellerinin doğru kullanımını anladığıma inanıyorum. Ayrıca bu durumda diş tellerinin gereksiz olabileceğini de anlıyorum.

 if (OrderType()==OP_BUY)  
   OrderModify(ticket, 0 ,OrderOpenPrice()- 5000 * Point , 0 , 0 ,Blue);

Her kod bloğunun ifadesinin/ifadelerinin, kullanılan her belirli kod bloğuna işlev çağrılarını yalıtmasını sağlamak için gereksiz parantezler kullanmaya karar verdim. Çok düzenli şeyler, EA'nın kod bloklarının, parantez eksikliğinden dolayı işlev çağrılarını yanlışlıkla atlamasını istemiyorum.

4. i değişkenini bilet numarası olarak kullanmak:

RE 4.: i değişkenini bir bilet numarası değil, sahte bir bilet numarası olarak kullanma yorumumu anlamadığınıza biraz şaşırdım. i değişkeni, OrderClose() işlevi her çalıştırıldığında eklenen bir rakamdır. Değişken i, gerçek bir bilet numarası olarak tanımlanmamıştır. Kısmi sipariş kapatma ile uğraşıyorum. Bu görevi başarmak için bildiğim tek yol bu. Farklı bir çözüme açık fikirli olurdum. Daha iyi bir çözümün var mı? :) Başka bir yol olabileceğine inanıyorum, ancak şimdilik kullanılan işlemi değiştirmek için bir neden göremiyorum. Yine üretken fikirlere açığım.

5. . . . OrderSend() başarısız olursa bilet = -1 olur:

RE 5.: Lütfen hangi OrderSend() işlevinden bahsettiğinizi belirtin ( "bilye silindiri", ilk sipariş gönderme VEYA sipariş kapatma işlevi çağrıları içinde sipariş gönderme) Bu açıklama düşüncelerimizi aynı yöne yönlendirir ve bu tartışmanın her iki üyesi arasındaki iletişimi güçlendirecektir.

1. 1. veya 2. (bu plz'yi düzeltin) sipariş gönderimi neden başarısız olur? (Belki OrderSelect() ve OrdersHistory...() işlevlerinin yanlış kullanımı nedeniyle? Bu düzeltilecektir.)

2. Sipariş gönderimi başarısız olursa, bilet değişkeni neden -1'i temsil etsin? Sipariş gönderimi başarısız olursa, bilet değişkeninin hala -1 değil 0'ı temsil edeceğine inanıyorum. Lütfen açıkla.

Teşekkür ederim.

 
WhooDoo22 :

Simon,

RE 5.: Lütfen hangi OrderSend() işlevinden bahsettiğinizi belirtin ( "bilye silindiri", ilk sipariş gönderme VEYA sipariş kapatma işlevi çağrıları içinde sipariş gönderme) Bu açıklama düşüncelerimizi aynı yöne yönlendirir ve bu tartışmanın her iki üyesi arasındaki iletişimi güçlendirecektir.

1. 1. veya 2. (bu plz'yi düzeltin) sipariş gönderimi neden başarısız olur? (Belki OrderSelect() ve OrdersHistory...() işlevlerinin yanlış kullanımı nedeniyle? Bu düzeltilecektir.)

2. Sipariş gönderimi başarısız olursa, bilet değişkeni neden -1'i temsil etsin? Sipariş gönderimi başarısız olursa, bilet değişkeninin hala -1 değil 0'ı temsil edeceğine inanıyorum. Lütfen açıkla.

Teşekkür ederim.

OrderSend() herhangi bir nedenle başarısız olursa. . . " İşlem sunucusu tarafından siparişe atanan biletin numarasını veya başarısız olması durumunda -1'i döndürür. " belgelerden alınmıştır. Döndürülen değeri korumak için değişken bilet kullanırsınız. . . yani OrderSend() başarısız olursa (herhangi bir nedenle) bilet numaranız şimdi -1 olur. . . . kontrol etmezsin, sadece en iyisini umarsın ve eline ne geçerse onu kullanırsın. . .


Bilet numarası olarak i değişkenini kullanıyorsunuz. . . bu kodda. . .

OrderClose(i, 0.01 , Ask, 30 , CLR_NONE );

. . . OrderClose() dokümantasyonundan fonksiyon çağrısındaki ilk değişken int . . . bilet - Sipariş biletinin benzersiz numarası. Diyelim ki 34282694 numaralı bileti kapattınız, size i++ yaptığınızı düşündüren şey nedir? sonraki herhangi bir şekilde veya biçimde size yardımcı olacak mı? Belki bu özel noktaya cevap verebilir ve nasıl çalıştığını açıklayabilirsiniz?



" EA'nın kod bloklarının, parantez eksikliğinden dolayı işlev çağrılarını yanlışlıkla atlamasını istemiyorum. " . . . yanlışlıkla atlamak? sizce bu nasıl olabilir? CPU öksürük krizi geçiriyor mu yoksa üşütüyor mu?


Tamam, yani Strateji Test Cihazında ve ayrıca Canlı/Demo ortamında çalışabilecek kod yazmak yerine, tüm sorunları tam olarak anladığınızı söylüyorsunuz, özellikle kodunuzu yalnızca çalışacak şekilde yazarak sakatlamayı seçtiniz. Strateji Test Cihazı ? söylediğin bu mu?

 

Simon,

1. OrderSend() herhangi bir nedenle başarısız olursa . . .

RE 1.: Varsayımsal olarak, bir siparişin başarısız olduğunu söyleyelim... Söyledikleriniz doğruysa, bilet sayısı 1 (bilet toplamından -1) çıkarılır. Böylece, EA 25 başarılı sipariş gönderdi ve kapattı. Sipariş göndermek için sinyal geliyor ve OrderSend() işlevi başarısız oluyor. Mevcut bilet sayısı 24 mü? Eğer öyleyse, i değişkeni de 1 çıkarmayacağından, i değişkeni yanlış bilet sayısı belirtecektir (-1). i değişkeni artmaz ve şimdi yanlış bir bilet sayısı vardır. Doğru bilet sayısı 24 ve i değişken bilet sayısı 25. OrderSelect() işlevi şimdi yanlış bilet numarasını seçiyor. Karşılıklı anlaştık mı? :) Öyleyse , OrderSend() işlevi başarısız olursa, bariz çözüm i değişkeninden 1 çıkarmak olacak gibi görünüyor. Vay... Bunun üzerine alnımdaki teri siliyorum :).

2. CPU öksürük krizine mi giriyor yoksa üşütüyor mu?..

RE 2.: Tipik olarak, eğer bir grip virüsü kaparsam, konuşurken birkaç mantıklı düşünceyi atlama eğilimindeyim. Aynısının CPU'lar için de geçerli olduğunu varsaydım :) Mizah bir kenara bırakıldığında, "{ }" eksikliğinden dolayı herhangi bir işlev çağrısının atlanması olasılığının düzeltilmesi basit bir sorun olacağına inanıyorum. Neden ekstra dikkatli olmuyorsun? Gerçekten bir işlev çağrısının atlanmasıyla ilgili bir endişe yoksa, o zaman parantezlerin çıkarılmaması için hiçbir neden göremiyorum.

3. Tamam, yani diyorsun ki...

RE 3.: Şimdiye kadar bana sunduğunuz sorunları anladığımı düşünüyorum.

4. Kodunuzu yalnızca Strateji Test Cihazında çalışacak şekilde yazarak özellikle sakatlamayı seçtiniz mi?..

RE 4.: En az öncelikli olduğuna inandığım şeyi feda etmeyi seçtim ve en öncelikli olduğuna inandığım şeyi tuttum. Bu, zaman sınırlamalarına ve öncelik seviyelerine göre yapılmış bir seçimdi.

Teşekkür ederim.

 
WhooDoo22 :

Simon,

1. OrderSend() herhangi bir nedenle başarısız olursa . . .

RE 1.: Varsayımsal olarak, bir siparişin başarısız olduğunu söyleyelim... Söyledikleriniz doğruysa, bilet sayısı 1 (bilet toplamından -1) çıkarılır. Böylece, EA 25 başarılı sipariş gönderdi ve kapattı. Sipariş göndermek için sinyal geliyor ve OrderSend() işlevi başarısız oluyor. Mevcut bilet sayısı 24 mü? Eğer öyleyse, i değişkeni de 1 çıkarmayacağından, i değişkeni yanlış bilet sayısı belirtecektir (-1). i değişkeni artmaz ve şimdi yanlış bir bilet sayısı vardır. Doğru bilet sayısı 24 ve i değişken bilet sayısı 25. OrderSelect() işlevi şimdi yanlış bilet numarasını seçiyor. Karşılıklı anlaştık mı? :) Öyleyse , OrderSend() işlevi başarısız olursa, bariz çözüm i değişkeninden 1 çıkarmak olacak gibi görünüyor. Vay... Bunun üzerine alnımdaki teri siliyorum :).

Eğer söylediklerim doğruysa? belgeleri kendiniz okuyun, size bir link verdim, tıklayın ve okuyun. . .

Bunun nasıl çalıştığını tamamen yanlış anlıyorsunuz. . . üzgünüm ama öylesin Bilet numaraları yalnızca Strateji Test Cihazında sırayla çalışır. . . bilet sayısı çıkarılmaz. . . bilet numarasını tutmak için kullandığınız değişken = -1, bilet değişkenini asla kodunuzdaki hiçbir şeyden çıkarmazsınız. . .

" Emir göndermek için sinyal geliyor ve OrderSend() işlevi başarısız oluyor. Geçerli bilet sayısı 24 mü? " Hayır, bilet değişkeni -1 sayısını tutar, 25 veya 24 değil, -1 tutar, dolayısıyla herhangi bir OrderSelect(ticket, . . .) Bunu takip eden aramalar başarısız olacaktır çünkü -1 numaralı bilet ile sipariş yoktur, geçersiz bir bilet numarasıdır. . . o zaman OrderSelect() başarısız olduğu için herhangi bir OrderType() çağrısı da başarısız olur. . . . . ve ardından OrderModify(ticket, . . . .) de başarısız olur. . .

Söylediğiniz gibi, tüm bu sorunları anlıyorsunuz ama onları görmezden gelmeyi ve bu kodu kod tabanına göndermeyi seçtiniz. . . Sanırım bunları zaten iyi bir şekilde ele aldığınız için bunları açıklamaya çalışmak için daha fazla zaman kaybetmeme gerek yok. Rahatsızlık için özür dilerim, yardım etmeye çalışırken daha fazla zamanınızı almayacağım.

 

Simon,

Belgeleri istediğiniz gibi okuyacağım.

1. bilet numarasını tutmak için kullandığınız değişken = -1

RE 1.: Hangi değişkeni işaret ediyorsunuz? Değişken i VEYA değişken bilet?

2. bilet numarasını tutmak için kullandığınız değişken = -1

RE 2: "Sipariş gönderilemediğinde bilet numarası eksi bir (-1)" de denilebilir mi?

bu durumda, EA 24 başarılı emir gönderip kapattıysa ve 25. siparişi gönderemediyse, mevcut bilet numarası eksi bir (-1) olur. Doğru? :)

Açıkça, OrderSelect() işlevini içeren herhangi bir kod bloğu, "geçersiz bilet numarası" hatası nedeniyle başarısız olacaktır. Sanırım daha önce yazdığınız gibi 4108 hata numarası ve belgeler de bunu okuyor.

"Bütün bu konuları anlıyorum" diye yazmadım. "Şu ana kadar bana sunduğun konuları anladığımı sanıyorum " yazdım.

3. "Söylediğiniz gibi, tüm bu sorunları anlıyorsunuz ama onları görmezden gelmeyi ve bu kodu kod tabanına göndermeyi seçtiniz... iyi idare et. Rahatsızlık için özür dilerim, yardım etmeye çalışmakla daha fazla zamanını almayacağım."

RE 3: Şu anda bu sorunları görmezden gelmiyorum. Seninle yaptığım tartışma bunu gösteriyor. Yaptığınız ve yapmaya devam ettiğiniz tüm noktalarla ilgileniyorum. Ayrıca, MQL4 belgeleri hakkındaki bilginize saygı duyuyorum ve yardım etme arzunuzu takdir ediyorum. Gözden kaçmadı ve bunun için teşekkür ederim.

Teşekkür ederim.

 

Hepinize merhaba,

Bu kodda, lot fiyatının hiçbirini değiştiremeyeceğimin farkındayım....neden bu...

Bunu yapmaya çalıştığım her zaman bir hata aldım ....

teşekkürler... ve cevabını bekliyorum....

Çok iyi iş WhooDoo22!!!! ;)