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
Adını yapmak için kodunuzu OrderTicket'i aldığınız yere gönderin.
(Birinin bir koda ihtiyacı olduğunda - Bunu hızlı bir şekilde göndermekte gecikiyorum - OBJECT_**** işlevlerini kullandığım için, nesne belgelerindekinden biraz farklı)
Aşağıdaki kod OnTick() içindedir.
{
if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
if ( Symbol ()!= OrderSymbol ()) continue ;
ObjectCreate ( 0 , "#" + IntegerToString ( OrderTicket ())+ " -" + "Object Button" , OBJ_BUTTON , 0 , 0 , 0 );
}
Şimdi, bu nesneyi aşağıdaki gibi OnChartEvent() ile çağırmaya çalışıyorum.
{
// when click this button - do something...
}
Şimdiden teşekkürler.
orderloop'un içinde olmadığı için OrderTicket()'i bilemez.
Peki şans yok mu?
Çoğu şey mümkün. Ama ne elde etmeye çalıştığınız konusunda net değilim. Bu düğme nedir? Tıklandığında ne yapmak istiyorsunuz?
Muhtemelen istediğiniz sonucu elde edebilirsiniz, ancak yaklaşımınızın değişmesi gerekebilir.
Çoğu şey mümkün. Ama ne elde etmeye çalıştığınız konusunda net değilim. Bu düğme nedir? Tıklandığında ne yapmak istiyorsunuz?
Muhtemelen istediğiniz sonucu elde edebilirsiniz, ancak yaklaşımınızın değişmesi gerekebilir.
Amacım, bu düğme nesnesinin bilet numaralarını ve onlara tıkladığımda kârlarını gösterebilmesi, sipariş bulutunun kapanması.
Bu yorumu mobil cihazdan yazdım. O yüzden 10 saat sonra bu konuyu araştırmaya başlayacağım. Yorumlarınız için teşekkürler.
Amacım, bu düğme nesnesinin bilet numaralarını ve onlara tıkladığımda kârlarını gösterebilmesi, sipariş bulutunun kapanması.
Bu yorumu mobil cihazdan yazdım. O yüzden 10 saat sonra bu konuyu araştırmaya başlayacağım. Yorumlarınız için teşekkürler.
Bu düğmeleri tanımlayan nesne adlarında benzersiz bir etiket bulundurun. "#" kullanıyor gibisin
Ardından, nesne adının geri kalanından veya düğme metninden sipariş numarasını çıkarın.
Bu aşamada OrderTicket() kullanmaya gerek yoktur.
Nesneleri sipariş bileti ile tanımlanır.
Böylece, nesnenin hangi sıraya ait olduğunu bulabilmek için her nesnenin dize adında bilet numarası bulunur.
Bu, her nesnenin dize adında "#" tutacağı anlamına gelir.
Bu nedenle, esasen bir düğme tıklamasında, önce nesne dizesi adından sipariş bileti numarasını çıkarmalı ve ardından orderselectloop'u çalıştırmalı ve seçilen sipariş bileti, düğme dizesi adından çıkarılan sipariş bileti numarasıyla eşleştiğinde, siparişi bulmuş olacaktır.
Ya da basitçe yapabilir
Grafik olayının içindeki sırayı seçmek için.
Şimdi nesneye sadece bilet numarasını/adını ve başka bir şey vermese çok daha kolay olurdu.
Çünkü o zaman doğrudan bileti seçebilir veya sayıları karşılaştırabilir.
Geçen gün OrderSelect() Loop'u denedim. Şimdi ilk önce bir kez daha deneyeceğim.
Sonra son yorumlarınızı derinlemesine araştıracağım.
Değerli zamanlarınız için teşekkürler.
Test.mq4 dosyamda aşağıdaki kodu denedim, bu nedenle aşağıdaki kod mükemmel çalışıyor ve şu ana kadar herhangi bir sorunla karşılaşmadım, ancak hala test ediyorum.
S: Kötüyse, aşağıdaki kodu iyileştirebilir misiniz, lütfen?
{
for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
if ( OrderSymbol ()!= Symbol ()) continue ;
if (sparam== "#" + IntegerToString ( OrderTicket ())+ " -" + "Object Button" )
{
if (! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 3 ,CLR_NONE))
{
Print ( "# Error " , GetLastError ());
}
}
}
}
Şimdiden teşekkürler.
( Üzerinde çalışıyorum )
Üstün bir inceleme, çalışması gerektiğini gösteriyor. Ancak verimliliği artırabilirsiniz.
Grafiğinize kaç farklı nesne çizdiğinizi düşünün. Bu nesnelerden *herhangi birine* tıklarsanız, her bir siparişte dolaşacak ve bir eşleşme bulmaya çalışacaksınız. Birçok nesnenin muhtemelen siparişlerle hiçbir ilgisi yoktur. Bu verimsiz.
Bu yüzden "#" için ilk sparam karakterini kontrol etmeyi önerdim. Bu, nesneyi otomatik olarak bir siparişle ilgili olarak tanımlar.
Ayrıca, siparişler arasında dolaşmaya gerek yoktur. Nesne adı ve/veya nesne metni bilet numarasını zaten içeriyor. Bu yüzden oradan bilet numarasını çıkarın ve siparişi kapatın
Misal:
Bir sipariş açarsın. 12345 numaralı bilet verilir.
" #12345 " adında bir OBJ_BUTTON oluşturun
OnChartEvent() içindeki kod şuna benzer (derlenmemiş, denenmemiş, gece geç saatlerde...):
{
int ticket=( int ) StringSubstr (sparam, 1 ); // extract the ticket number
if ( OrderSelect (ticket, SELECT_BY_TICKET )) // select the order
{
if (! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 3 ,CLR_NONE)) // close the order
{
Print ( "# Error " , GetLastError ());
}
}
}