OrderModify() sorusu - sayfa 3

 

Simon,

Bunu nasıl yapacağımı düşünmeye çalışıyorum ama hiçbir şey gelmiyor. Olası yollar için MetaEditor'daki sözlüğü araştırıyorum. OrderSymbol() ve OrderSelect() işlevlerinin uyum içinde kullanılmasını düşünüyorum. Bana bir ipucu için bir seçenek sunuyorsan, tabii ki kabul edeceğim. ipucu nedir? ;) Bunu bir meydan okumadan çok bir tartışma olarak görüyorum. Bunu bir meydan okuma olarak görürseniz, hiçbir ipucunu kabul etmeyeceğim. Yeteneğime güvenim tam.

Teşekkür ederim.

 

MarketInfo()'yu neden kullanasınız? sana ne söylemek için?


Bunu kodlayabilmeniz için önce nasıl yapılacağını bulmanız ve ardından bunu kodla değil basit bir dil kullanarak ifade edebilmeniz gerekir.


Bu gereksinimi karşılamak için gereken kod, Kod Tabanına koyduğunuz kodla yapmanız gerekenlerin birçok yönünü içerir.


Artık benim için yatma vakti. . . işte başlamanız için bir ipucu, birden fazla siparişiniz var, bu yüzden doğru olanı bulmak için hepsini gözden geçirmeniz gerekiyor. . . ya da belki birden fazla, görebildiğiniz kadar çok seçeneği kapsar.

Eğer bir yol bulamazsan bana haber ver, ben de bir çözüm olduğunu düşündüğüm şeyi bulup yayınlayayım. . . o zaman onu okuyabilir, anlayabilir ve parçalara ayırabilir ve yanlış olduğunu veya gerekli olmadığını düşündüğünüz herhangi bir bölümünü haklı çıkarmamı isteyebilirsiniz.

Her iki durumda da, süreçte öğreneceğinize ikna oldum.

 

Simon,

Richard Bhauer bana daha önce yayınladığım şeyin gözden geçirilmiş bir versiyonunu gönderdi. Kesinlikle benim kodlama stili tercihim DEĞİL , ancak etkileyici olduğunu düşünüyorum. Bu kodun, sipariş seçimi ve sipariş kapanışı için tanıttığınız bir yöntemle herhangi bir bağlantısı olup olmadığını görmek için sizinle paylaşacağımı düşündüm. Richard'a tekrar teşekkürler. Ayrıca, OrderSymbol()'u deneyeceğimi düşünmemin bir nedeni de EA'ları OrderSend("GBPUSD"...); veya herhangi bir döviz çifti. Siparişleri kapatmak için benzer bir süreci deneyebileceğimi varsaydım. Görünüşe göre, sırayı seçme işi (kapatmak için) OrderSelect() işlevi içinde yapılır. Bir önceki gönderide, doğru bilet numarasını bulmak için bir döngü çalıştırmayı denemek için bir ipucu olarak bahsettiniz (sanırım önce döngünün çalıştırıldığını ve bilet bulunduğunda, önce OrderSelect'i içeren bir sonraki kod bloğuna gidin. () işlevi.OrderSelect() işlevinin içinde, doğru bilet numarasını bulmak için döngünün önceki kod bloğunda kullanılan değişken olacaktır.OrderSelect() işlevi, bileti seçmek için değişkeni kullanır.Bilet seçildikten sonra, geri kalan her şey oldukça basit.Yanıtınızı sabah okuyacağım.

Teşekkür ederim.

Dosyalar:
 
WhooDoo22 :

Görünüşe göre, sırayı seçme işi (kapatmak için) OrderSelect() işlevi içinde yapılıyor.

OrderTicket(), OrderLots(), OrderClosePrice(), OrderProfit(), OrderType(), OrderTakeProfit(), OrderSymbol(), OrderStopLoss(), OrderOpenTime(), OrderOpenPrice() için Belgeleri baştan sona okuyun. aşağıdakileri belirtin: Not: Sıra, OrderSelect() işlevi tarafından önceden seçilmelidir .

Geçtiğiniz için OrderClose() bu ifadeye sahip değil   ilk parametre olarak OrderClose() için bilet numarası . . . Yukarıda listelenen tüm işlevlerde yok, bu yüzden bunları kullanmak için öncelikle ilgilendiğiniz siparişi seçmelisiniz, bu OrderSelect() işidir. . . daha sonra OrderLots() ile pozisyon boyutunu veya OrderOpenPrice() ile açık fiyatını bulabilirsiniz, ancak önce seçilmesi gerekir.


Bu kavramı kavramalı ve anlamalısınız. . . .

VayDoo22 :

Bir önceki gönderide, doğru bilet numarasını bulmak için bir döngü çalıştırmayı denemek için bir ipucu olarak bahsettiniz (sanırım önce döngünün çalıştırıldığını ve bilet bulunduğunda, önce OrderSelect'i içeren bir sonraki kod bloğuna gidin. () işlevi OrderSelect() işlevinin içinde, doğru bilet numarasını bulmak için döngünün önceki kod bloğunda kullanılan değişken olacaktır.

Bir döngünün içinden doğru bilet numarasını nasıl bulacaksınız? Hangi bilet numarasının doğru olduğunu bilmiyorsunuz. . kullanabileceğin hangi bilgilere sahipsin?
 

Simon,

OrderTicket(), OrderLots(), OrderClosePrice(), OrderProfit(), OrderType(), OrderTakeProfit(), OrderSymbol(), OrderStopLoss(), OrderOpenTime(), OrderOpenPrice(), OrderSelect tarafından önceden seçilmiş olmalıdır () işlevi .

OrderClose() işlevinin OrderClose() işlevi bilet numarasını ilk parametre olarak ilettiğinden, OrderSelect() işlevi tarafından önceden seçilmesi gerekmez.

OrderSelect()'in amacı bir sipariş seçmektir.

Kavramlar anlaşıldı, belgeleri gözden geçireceğim.

nasıl bulacaksın..

RE: Hala bunun üzerinde çalışıyorum.

Teşekkür ederim

 

Simon,

Görünüşe göre "bilet numarasını" işaret edip duruyorsun. Bunu anladım. Yine de sorun şu ki, OrderSelect() işlevini kullanarak biletleri ayırmanın yalnızca iki yolunun farkındayım. Belirli bir bilet numarası değişkeninin olmadığı "Sipariş havuzu" yolunu kullanabilirim VEYA "bilet", "bababab22", "lambchops" gibi belirli bir bilet değişkeni adını kullanabileceğim diğer yolu kullanabilirim. bileti izole et. "Sipariş havuzu" yolunu kullanmanın en pratik olduğuna inanıyorum, bu yüzden bu işlevi bu şekilde kullanmayı düşünüyorum. Beğendim.


Ayrıca, Robert'ın revizyonuna göz gezdirdim ve emirleri kapattığında fark ettim, o sadece OrderSelect() fonksiyonunu kullandı (bir emir havuzundan seçtiğiniz fonksiyon) ve bariz sinyalin yanında kullanılan tek "eğer" koşulu çoktu. boyut ve sipariş alım/satım ise. Bu kadardı. Beğendim, ama şu anda görev bu değil. Bu görevde, evet, aynı şeyi yazabilirdim ama hiçbir şey öğrenilmeyecekti. Şu anda zor olan şey, bana öğretmeye çalıştığınız şeyi bilmiyorsam, öğretmek istediğiniz şeyi nasıl öğrenebilirim. Düşüncelerinizle daha doğrudan olabilseydiniz, paylaşmak istediğiniz şeyi daha hızlı kavrayabileceğime inanıyorum. Daha anlayışlı olmaya çalışacağım.

Teşekkür ederim.

 
WhooDoo22 :

Simon,

Görünüşe göre "bilet numarasını" işaret edip duruyorsun. Bunu anladım. Yine de sorun şu ki, OrderSelect() işlevini kullanarak biletleri izole etmenin yalnızca iki yolunun farkındayım. Belirli bir bilet numarası değişkeninin olmadığı "Sipariş havuzu" yolunu kullanabilirim VEYA "bilet", "bababab22", "lambchops" gibi belirli bir bilet değişkeni adını kullanabileceğim diğer yolu kullanabilirim. bileti izole et. "Sipariş havuzu" yolunu kullanmanın en pratik olduğuna inanıyorum, bu yüzden bu işlevi bu şekilde kullanmayı düşünüyorum. Beğendim.

Bu durumda, siparişler manuel olarak verildiği için bilet numarasını bir değişkende saklayamazsınız, bu nedenle kod, onları keşfedene kadar herhangi bir bilet numarasını bilmez, bu nedenle yalnızca bir döngü ve OrderSelect() kullanarak ilk seçeneği kullanabilirsiniz.

Bilet numaralarını kaydetmek büyük bir rahatsızlıktır ve yapmanız gerekmedikçe kaçınılmalıdır, yani bundan kaçınmanın olası bir yolu yoktur. . . niye ya ? çünkü kodunuz bir MT4 yeniden başlatmasından kurtulabilmelidir, bu nedenle biletler hakkındaki bilgileri dosyalara kaydetmek ve ideal olarak ek yedekleme kapsamı için dosyaları 2. bir bilgisayara kopyalamak anlamına gelir. Daha sonra kod yeniden başladığında dosyayı okumalı ve bilet numaralarını almalı ve kaldığı yerden devam etmeye çalışmalıdır. . . Bu tür bir karmaşıklığa çoğu insan ihtiyaç duymaz, ancak çoğu zaman bilet numaralarını kaydetmenin daha basit bir seçenek olduğunu düşünürler. . . ve bilgileri dosyalara vb. kaydetmeleri gerekmez. . . sonra her şey ters gittiğinde keşke öyle olsaydı.

Tamam, kodumun sürümünü gereksinimimi karşılamak için kodladım, birden fazla USDJPY siparişini algılamak ve tüm USD JPY siparişlerini değiştirmek ve kapatmak için bazı kontroller ekledim. . . İşte son versiyonun nasıl gittiğini gösteren bazı ekran görüntüleri.


Manuel olarak verdiğim siparişler. . .

Tüm siparişler

USDJPYi, kodumun değiştirilmesini (TP & SL'yi not edin) ve kapatılmasını ve ayrıca Bilet numarasını sipariş ediyor. Ayrıca Al ve Sat emirlerinin karışımına da dikkat edin.

Kapalı USDJPYi Siparişleri

Kalan siparişler. . .

Kalan Siparişler

 

Simon,

Bu durumda bilet numarasını bir değişkende saklayamazsınız...

RE: Yani bu örnek için "sipariş havuzu" rotasını kullanıyorsunuz, doğru mu?

 // order pool example

if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)){

Bilet numaralarını kaydetmek büyük bir rahatsızlıktır...

RE: Anlaştık.

biletler hakkındaki bilgileri dosyalara kaydetmek ve ideal olarak ek yedekleme kapsamı için dosyaları 2. bir bilgisayara kopyalamak...

RE: Evet, ancak biletlerle ilgili bilgileri dosyalara kaydetmek, şu anda durumum için ayrı kod blokları grubudur. Temel bilgiler yazılana kadar bunu kodlamaya başlamazdım.

Gereksinimimi karşılamak için kodun sürümünü kodladım ...

RE: Evet, görebiliyorum. İyi görünüyor. :)


Bu görevi tamamladıktan sonra cilt II ile devam edeceğim. Kendi yazmayacak. ;)

Teşekkür ederim.

 
WhooDoo22 :

Simon,

Bu durumda bilet numarasını bir değişkende saklayamazsınız...

RE: Yani bu örnek için "sipariş havuzu" rotasını kullanıyorsunuz, doğru mu?


Başka bir seçenek var mı?
 

Simon,

Hayır, bildiğimden değil. Sadece iki seçenek var gibi görünüyor ve bu seçenek cilt II için en iyisi gibi görünüyor. Ayrıca, daha az karmaşık görünüyor ve bu biraz umurumda değil. ;)

Bu göreve geri dönersek, usdjpy çiftindeki siparişi seçmek için sipariş havuzu yöntemini kullandığınızı anlıyorum, ancak siparişi usdjpy'de yalıtmak için hangi koşulu kullandınız?

Teşekkür ederim.