MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1143

 
Alexey Viktorov :

Onlardan biri benim. Ve C# veya C++ hiç çalışmadı ve OOP'nin ne olduğunu asla bilemedi.

mql5'in mql5'ten yalnızca OrderSend() işlevinde ve belki de hatırlamadığım birkaç işlevde farklı olduğu basit gerçeğini anlayın. Bir diğer önemli fark, indeksleme göstergesi tamponlarının yönüdür. Ancak bu, yeniliğe alışmak daha iyi olsa da, bir çimdik içinde çözüldü. Ve gösterge değerlerini almak aynı kalır. Kovalev'in öğreticisini okumadım, içinde ne olduğunu bilmiyorum, ancak güncellenmiş MetaEditor mql4'ü kullanarak bu öğreticiden herhangi bir çözüm yazmanın imkansız olacağından çok şüpheliyim.

Harika.)))) Yükte prosedürel FORTRAN ve BASIC olmasına rağmen benim için işe yaramadı. İyi bir ders kitabı, iyi yapılandırılmış, yeterince açık ve yaratıcıların elbette öğrencilere ihtiyacı varsa gerçekten temel alınabilir. Ne yazık ki, başkaları yok. OOP yetmez, makaleler okumalısınız. Ders kitaplarının çoğu güncellenmiş MT4 terminalindeydi. İndirgenmemiş veri türleri hakkında birçok yorum var. Derleyici, sıkı kontrolde bile herhangi bir hata görmedi.

 
Valeriy Yastremskiy :

Harika.)))) Yükte prosedürel FORTRAN ve BASIC olmasına rağmen benim için işe yaramadı. İyi bir ders kitabı, iyi yapılandırılmış, yeterince açık ve yaratıcıların elbette öğrencilere ihtiyacı varsa gerçekten temel alınabilir. Ne yazık ki, başkaları yok. OOP yetmez, makaleleri okumalısınız. Ders kitaplarının çoğu güncellenmiş MT4 terminalindeydi. İndirgenmemiş veri türleri hakkında birçok yorum var. Derleyici, sıkı kontrolde bile herhangi bir hata görmedi.

İşte OOP hakkındaki düşüncelerim. Ve konunun tamamını baştan okumaktan zarar gelmez.

ООП для школьников.
ООП для школьников.
  • 2019.10.04
  • www.mql5.com
======================================================================================================================== В этой теме будет нескольк...
 

Selamlar. Lütfen bana söyle. Bir sipariş seçtikten sonra, biletin neden değiştiği belli değil. kod:

       for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
         if ( OrderSelect (i ,SELECT_BY_POS, MODE_TRADES)){
             if (OrderSymbol()== Symbol () && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP){
               Print ( "111  OrderTicket() " , OrderTicket(), "  OrderType() " , StringType(OrderType()));
               temp=OrderTicket();
               if ( OrderOpenPrice()>start_bid
               +(( MathCeil ( (Bid-start_bid)/(bs_distance* Point ) )+bs_orders+Orders( "bs" )+ 1 )*bs_distance* Point ) ){
                   Print ( "222 OrderDelete bs Bid " , Bid, "  OrderOpenPrice() " , OrderOpenPrice()); 
                   if (!OrderDelete(OrderTicket(), clrBlack )){
                     Print ( "333 OrderDelete bs Bid " , Bid, "  OrderTicket() " , OrderTicket(), "  OrderType() " , StringType(OrderType()));
                  }
               }
            }
         } 
      }

Piyasada SATIN AL bileti 10 ve SATIN AL bileti 9 olmak üzere iki emir vardır.

dergi:


 
Alexey Viktorov :

İşte OOP hakkındaki düşüncelerim. Ve konunun tamamını baştan okumaktan zarar gelmez.

Teşekkür ederim katılıyorum))))

 
Andrey Sokolov :

Selamlar. Lütfen bana söyle.Bir sipariş seçtikten sonra, biletin neden değiştiği belli değil. kod:

Piyasada SATIN AL bileti 10 ve SATIN AL bileti 9 olmak üzere iki emir vardır.

dergi:


Kendi kendine yazılan işlevlerden birinde siparişler (örneğin, Orders( "bs" ) ) ve buna bağlı olarak tekrarlanan OrderSelect() arasında bir arama olduğunu varsayıyorum. sunulan döngüye dönüldüğünde, orada seçilen son sipariş için tüm veriler verilir.

 
Igor Zakharov :

Kendi kendine yazılan işlevlerden birinde siparişler (örneğin, Orders( "bs" ) ) ve buna bağlı olarak tekrarlanan OrderSelect() arasında bir arama olduğunu varsayıyorum. sunulan döngüye dönüldüğünde, orada seçilen son sipariş için tüm veriler verilir.

Teşekkürler

 
Andrey Sokolov :

Selamlar. Lütfen bana söyle.Bir sipariş seçtikten sonra, biletin neden değiştiği belli değil. kod:

Piyasada SATIN AL bileti 10 ve SATIN AL bileti 9 olmak üzere iki emir vardır.

dergi:


Çalışan kodunuz, yayınlanan kodla eşleşmiyor.

 Print ( "222 OrderDelete bs Bid " , Bid, "  OrderOpenPrice() " , OrderOpenPrice());

Bu kodun neresinde "OrderTicket()" yazdırılır

Sipariş seçimi içerebilecek diğer kullanıcı tanımlı işlevlerin çağrılarına dikkat edin.

 
Alexey Viktorov :

Doğru adrese geldiniz. Burada, yeni mql4 belgelerinin rehberliğinde mql4'te nasıl doğru şekilde yapılacağını önerirler.

Bir şey yazmakta zorlanıyorsanız, yazdıklarınız ve alamadığınız şeyler hakkında belirli bir soru sorun. Sadece birkaç kişinin anlaşılmaz bir satırla bir kilometre kodunu okuyacağını unutmayın. kesinlikle yapmayacağım.

Sen tam olarak sorumun amaçladığı kişisin. Çünkü, kişisel gereksiniminize dayanarak, sadece sorunumu açıkça göstermek için test cihazı için Mql4 kodumu kısa yaptım. Ama ne yazık ki bu Artem ile anlayış bulamadı.

Kodumda sorunumu çözecek gerekli değişiklikleri yaparsanız size çok minnettar olacağım. Özünü tekrar edeyim.

Her bir emri durdurarak kapattıktan sonra kapalı emrin bazı parametrelerini Print() içinde görüntülemem gerekiyor (ve aynı anda birçoğu açık). Bunu yapmayı çok başarılı bir şekilde öğrendim. Ama ..... Çözümü için aklımın yetmediği bir sorun var. Bazı emirler stop ile tek tıkla ve tek fiyattan kapatılır. Ardından program ilk kapatılan siparişi yok sayar ve yalnızca son kapatılan siparişin Print() öğesini yazdırır. Ve ilk baskıdan sonra.

SORU

Programı yukarıda anlattığım durumlarda Print () yazdırıp ilk sıra stop ile kapattıktan sonra yapmak için hangi dil yapısı kullanılabilir?

 int H;
int L;
int TP;  
int start()
{
int Ht = OrdersHistoryTotal();
if ( OrderSelect (Ht- 1 ,SELECT_BY_POS, MODE_HISTORY))                                             
if (TP!=OrderTicket( ))
{
Print ( "---------------------------------------------------------------=" , TimeToString (OrderOpenTime()) );
TP=OrderTicket( );
}

if ( TimeCurrent ()== 1262598040 )
if (H== 0 )
{
OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 , 1.6217 , 1.60919 , "300" , 10 );
H= 1 ;
}
if ( TimeCurrent ()== 1262601140 )
if (L== 0 )
{
OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 , 1.62199 , 1.61758 , "300" , 10 );
L= 1 ;
}
return ( 0 );


 
ANDREY :

Sen tam olarak sorumun amaçladığı kişisin. Çünkü, kişisel gereksiniminize dayanarak, sadece sorunumu açıkça göstermek için test cihazı için Mql4 kodumu kısa yaptım. Ama ne yazık ki bu Artem ile anlayış bulamadı.

Kodumda sorunumu çözecek gerekli değişiklikleri yaparsanız size çok minnettar olacağım. Özünü tekrar edeyim.

Her bir emri durdurarak kapattıktan sonra kapalı emrin bazı parametrelerini Print() içinde görüntülemem gerekiyor (ve aynı anda birçoğu açık). Bunu yapmayı çok başarılı bir şekilde öğrendim. Ama ..... Çözümü için aklımın yetmediği bir sorun var. Bazı emirler stop ile tek tıkla ve tek fiyattan kapatılır. Ardından program ilk kapatılan siparişi yok sayar ve yalnızca son kapatılan siparişin Print() öğesini yazdırır. Ve ilk baskıdan sonra.

SORU

Programı yukarıda anlattığım durumlarda Print () yazdırıp ilk sıra stop ile kapattıktan sonra yapmak için hangi dil yapısı kullanılabilir?


Ve kodunuz, her biri kesin olarak belirlenmiş bir zamanda iki satış pozisyonu açmak ve izin verildiğinde son pozisyonun açılış saatini yazdırmak dışında gerçekte ne yapar? Her şey. Aynı zamanda, kodun davranışında "mucizelere" yol açabilecek başlatılmamış değişkenler ve uzun yıllar örümcek ağlarıyla tozlu bir raftan çekilen ve çok, çok eski bir başlangıç () işleyicisi kullanarak, piyasa (bir gün bir şey satmak istersiniz) eski işleyicilerle doğrulayıcıyı asla kaçırmaz - program türünün yanlış olduğunu tekrarlar.

 
ANDREY :

Sen tam olarak sorumun amaçladığı kişisin. Çünkü, kişisel gereksiniminize dayanarak, sadece sorunumu açıkça göstermek için test cihazı için Mql4 kodumu kısa yaptım. Ama ne yazık ki bu Artem ile anlayış bulamadı.

Kodumda sorunumu çözecek gerekli değişiklikleri yaparsanız size çok minnettar olacağım. Özünü tekrar edeyim.

Her bir emri durdurarak kapattıktan sonra kapalı emrin bazı parametrelerini Print() içinde görüntülemem gerekiyor (ve aynı anda birçoğu açık). Bunu yapmayı çok başarılı bir şekilde öğrendim. Ama ..... Çözümü için aklımın yetmediği bir sorun var. Bazı emirler stop ile tek tıkla ve tek fiyattan kapatılır. Ardından program ilk kapatılan siparişi yok sayar ve yalnızca son kapatılan siparişin Print() öğesini yazdırır. Ve ilk baskıdan sonra.

SORU

Programı yukarıda anlattığım durumlarda Print () yazdırıp ilk sıra stop ile kapattıktan sonra yapmak için hangi dil yapısı kullanılabilir?

Artyom'un cevabını hatırlamıyorum ve aramayacağım, cevap verebileceğini tahmin edeceğim. Makalelerinde bunun için gerekli tüm işlevsellik var ve makalelerindeki tüm kodlar ya çok terminalli ya da mql5 ve mql4 için iki versiyonu. Bu seçenekleri mql4'te kontrol ettim, her şey “patlama” ile çalışıyor, dur veya al ile kapanmayı yakalıyor ve hata yapmıyor.

Evet bu yazıları anlamak zor ama benden büyük değilseniz buna değer. Ve bana göre, bir programcı için uygunsuz bir şekilde çok fazla.

Başka bir seçenek daha basittir, ancak çok daha yavaş çalışacaktır. Bir diziye sipariş biletleri yazın ve bu diziyi kullanarak bir sipariş seçin, sipariş kapanış saatini kontrol edin. Sıfırdan büyükse kapalıdır. Bu kapatılan emrin yorumlarında “sl” harfleri varsa emir stop ile kapatılır. Ayrıca, sipariş kapalıysa diziden sileriz. Veya tüm dizi boyunca geçişi tamamladıktan sonra, kalan açık siparişlerle yeniden doldururuz. Sonuçta, bir fantezi uçuşu ...

Hangi seçeneği seçeceğiniz size kalmış. Ve Kovalev'in ders kitabıyla ilgili birkaç yazımı okuyun. Eğitimde int start() yazmanız önerilir, danışmanlar için güncellenmiş mql4'te ise void OnTick() yazmanız gerekir.

Göstergeler ve komut dosyaları için belgelere bakın. Ve bu arada, güncellenmiş mql4'te gösterge yazmak, Sergey'in bu öğreticiyi yazdığı zamandan çok daha kolay.