[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 358

 
Chiripaha :

Bu parametre, silme okunun renginden sorumludur https://docs.mql4.com/en/trading/OrderDelete - Onu (parametreyi) oradan tamamen kaldırabilirsiniz, o zaman ok basitçe görüntülenmez. Ve oka gerçekten çok ihtiyaç duyuluyorsa, o zaman Değişken Türleri kitabının bölümünü tekrar okumak daha iyidir.

Bu arada, kodlama konusunda da özel bir deneyimim yok (bazı insanlar buna bu kavramları ayırt etmeden programlama diyorlar - ama bu kodlamadır). Ayrıca referans kitaplarına tırmandı ve ne tür şeyler olduğuna baktı. Daha sık referans kitaplarını ve ders kitaplarını "kemirir". Kural olarak, sorunların çoğu orada açıklanmıştır. - Herkes yapar, deneyimli olanlar bile, çünkü. her şey hatırlanamaz. Bunların hepsi referans materyalleridir.

clDelete - tahmin edebileceğiniz gibi, cl - renk (renk), Sil - silme. Rengi kaldırın.


Cevabınız için çok teşekkür ederim clDelete değişkenini zaten sildim

 void DeleteOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal (), ot;
  
   if (sy== "" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
       if (ot==OP_SELLSTOP) {
         if (OrderSymbol()==sy && (op< 0 || ot==op)) {
           if (mn< 0 || OrderMagicNumber()==mn) 
          {
           OrderDelete(OrderTicket());
          }

Ancak bu durumda derleyici farklı bir hata verir.

'DeleteOrders' - işlev sonuç döndürmez C:\Program Files\Alpari NZ MT4\experts\DELAY.mq4 (68, 5)

Nasıl düzeltilir?


 
solnce600 :

Herkese iyi günler!

Kim'in işlevlerinden test cihazı için bekleyen TÜM siparişleri kaldırmak için test cihazının işlevini kullanmaya çalışıyorum

Derlerken clDelete değişkeninin tanımlı olmaması ile ilgili bir hata oluşuyor.

'clDelete' - değişken tanımlanmadı C:\Program Files\Alpari NZ MT4\experts\DELAYER.mq4 (94, 38)

Lütfen bana nasıl ve nerede bulacağımı söyler misiniz?

Teşekkür ederim.

İlk olarak, döngüyü tersine çevirin:

     for (i = k - 1 ; i <= 0 ; i--)

ve OrderDelete() işlevine istediğini verin.

 
TarasBY :

Dizi yinelemesi:

- "İstek listenizi" doğru anladıysam.

Igor, çok teşekkür ederim!

Anladığım kadarıyla özel bir işlev yok - bu kaba bir güç olduğu anlamına geliyor.

 
Chiripaha :

Igor, çok teşekkür ederim!

Anladığım kadarıyla özel bir işlev yok - bu kaba bir güç olduğu anlamına geliyor.

Düzenli bir işlevi yoktur.
 
solnce600 : 'DeleteOrders' - işlev sonuç döndürmez C:\Program Files\Alpari NZ MT4\experts\DELAYER.mq4 (68, 5)

(Kendi kendine yazılmış) DeleteOrders() işleviniz HİÇBİR ŞEY döndürmez! Nasıl adlandırdığınız için kodunuza bakın.
 

Hızlı cevap için çok teşekkürler

Döngü açıldı.

şimdi başka bir hata veriyor

'DeleteOrders' - işlev sonuç döndürmez

Ve OrderDelete(OrderTicket()) işlevinin geçirilen bir parametre olarak OrderTicket() ve okun rengi (ki benim ihtiyacım yok) dışında başka neye ihtiyacı var?

 void DeleteOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal (), ot;
  
   if (sy== "" ) sy= Symbol ();
   for (i = k - 1 ; i <= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
       if (ot==OP_SELLSTOP) {
         if (OrderSymbol()==sy && (op< 0 || ot==op)) {
           if (mn< 0 || OrderMagicNumber()==mn) 
          {
          OrderDelete(OrderTicket());
 
TarasBY :
(Kendi kendine yazılmış) DeleteOrders() işleviniz HİÇBİR ŞEY döndürmez! Nasıl adlandırdığınız için kodunuza bakın.
Onlar. özel işlev kodunun sonunda TRUE veya FALSE döndüren satırlar olmalı mı?
 
TarasBY :
(Kendi kendine yazılmış) DeleteOrders() işleviniz HİÇBİR ŞEY döndürmez! Nasıl adlandırdığınız için kodunuza bakın.

İşlev kodunun sonuna true döndüren satırlar eklendi

İşlev çağrısını değiştirdi

R =Siparişleri Sil(doğru);
if(R == doğru )

Ticket=SiparişGönder(Symbol(),OP_SELLSTOP,0.1,iHigh( Symbol(), 0.1)-1500*Point,1,iHigh( Symbol(), 0.1),iHigh( Symbol(), 0.1) -1610*Point," jfh",123 );//EHA
//Ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,iHigh( Symbol (), 0.1)-1000*Point,1,iHigh( Symbol (), 0.1)+330*Point,iHigh( Symbol ( ), 0, 1)-1100*Nokta,"jfh",123 );//EHA
eğer (Bilet>0)
X=iYüksek( Sembol(), 0.1);
if (Sipariş Seçimi(ot-1,SELECT_BY_POS))
if (OrderType()==OP_SELLSTOP)
DT = OrderOpenTime();

}
}

dönüş(0);

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
int i, k=SiparişToplam(), ot;

if (sy=="") sy=Symbol();
for (i = k - 1; ben <= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=SiparişTürü();
if (ot==OP_SELLSTOP) {
if (OrderSymbol()==sy && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==dk)
{
int W = OrderDelete(OrderTicket());
if (W==doğru)
dönüş(doğru);

Aynı hatayı döndürür.

'DeleteOrders' - işlev sonuç döndürmez

Lütfen bana hatamın ne olduğunu söyle.

Teşekkür ederim.

 
solnce600 :

İşlev kodunun sonuna true döndüren satırlar eklendi

İşlev çağrısını değiştirdi

R =Siparişleri Sil(doğru);
if(R == doğru )

İşlev türünü unuttular:

 void bool DeleteOrders ( string sy= "" , int op=- 1 , int mn=- 1 )
 
TarasBY :

İşlev türünü unuttular:

Her şey yolunda!!! Çok teşekkür ederim!!!