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

 
MakarFX # :

Kendiniz için bir hatırlatma yazabilmeniz için - bu ne tür bir işlevdir?

:)) gerektiğinde kendim yapamıyormuşum gibi: iki eğik çizgi koyun ve birkaç kelime yazın. Bu çerçevede bir şeyler yazmayı denediniz mi? Sağdaki eğik çizgi, girilen karakter sayısı kadar sağa hareket edecek, peki ya birden fazla satır yazmanız gerekiyorsa? İş yapmak yerine çerçeve çizmek için zaman harcamam gerekiyor. Just ide, nasıl olması gerektiğine dair bir tür hastalıklı vizyon dayatır.

 
Nerd Trader # :

:)) gerektiğinde kendim yapamıyormuşum gibi: iki eğik çizgi koyun ve birkaç kelime yazın. Bu çerçevede bir şeyler yazmayı denediniz mi? Sağdaki eğik çizgi, girilen karakter sayısı kadar sağa hareket edecek, peki ya birden fazla satır yazmanız gerekiyorsa? İş yapmak yerine çerçeve çizmek için zaman harcamam gerekiyor. Just ide, nasıl olması gerektiğine dair bir tür hastalıklı vizyon dayatır.

Fonksiyonun önüne iki eğik çizgi koyun ve mutlu olacaksınız

 //
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime & time[],
                 const double & open[],
                 const double & high[],
 
MakarFX # :

Fonksiyonun önüne iki eğik çizgi koyun ve mutlu olacaksınız

Yukarıda zaten yorum ve fonksiyon arasında boş bir satır varsa, bir çerçeve ekleneceğini yazdım.
 

Butona tıkladığınızda yatay bir çizgi oluşur. Fiyata göre imlecin konumuna bağlı olarak farklı bir renkle yeniden oluşturulurlar. Sorun şudur: imleç fiyattan uygun yerdeyken sarı ve gri çizgiler sürekli olarak titriyor (yeşil ile her şey yolunda). Çizginin yalnızca color özelliğini değiştiren ve onu yeniden oluşturmayan benzer bir kod doğru çalışıyor.

Mantıksal DEĞİL onun yerinde, yani == 0 yazmak yerine.

 void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam)
{
  ...
  ...
  ...
   if ( ObjectGetInteger ( 0 , "Button Stop Order" , OBJPROP_STATE )){
     int x = ( int )lparam;
     int y = ( int )dparam;
     //Переведём координаты X, Y в дату и время
     if ( ChartXYToTimePrice ( 0 ,x,y,window,dt,price)){
       //Линия меняет цвет с зелёного на желтый
       if (price < Bid){
         if (! ObjectFind ( "Buy Stop" ) || ! ObjectFind ( "not allowed" )){
           ObjectDelete (line_name);
          line_name = "Sell Stop" ;
          CreateLine(line_name, clrYellow );
        }      
      }
       //Линия меняет цвет с желтого на зелёный
       if (price > Ask){
         if (! ObjectFind ( "Sell Stop" ) || ! ObjectFind ( "not allowed" )){
           ObjectDelete (line_name);
          line_name = "Buy Stop" ;
          CreateLine(line_name, clrGreen );
        }
      }
       //Линия меняет цвет на серый если в зоне спреда
       if (price > Bid && price < Ask){
         if (! ObjectFind ( "Buy Stop" ) || ! ObjectFind ( "Sell Stop" )){
           ObjectDelete (line_name);
          line_name = "not allowed" ;
          CreateLine(line_name, clrGray );
        }
      }
       //Прикрепляем линию к курсору
       if (id == CHARTEVENT_MOUSE_MOVE )
         if ( ObjectMove ( 0 ,line_name, 0 , 0 ,price))
           ChartRedraw ( 0 );
    }
  } else if ( ObjectFind (line_name) == window) Print ( ObjectDelete (line_name));
 
Nerd Trader yatay bir çizgi oluşur. Fiyata göre imlecin konumuna bağlı olarak farklı bir renkle yeniden oluşturulurlar. Sorun şudur: imleç fiyattan uygun yerdeyken sarı ve gri çizgiler sürekli olarak titriyor (yeşil ile her şey yolunda). Çizginin yalnızca color özelliğini değiştiren ve onu yeniden oluşturmayan benzer bir kod doğru çalışıyor.

Mantıksal DEĞİL onun yerinde, yani == 0 yazmak yerine.

ObjectFind bir bool değil, bir int'dir
 
Nerd Trader # :

Çünkü mql4 için yerel ortamıma taşınmaya karar verdiğimde ve bundan sonra bu beni gerçekten sinirlendiriyor! çerçeve ister misin Ve hala devam ediyoruz.

İstediğiniz gibi yapmak için Makar yöntemini kullanın.

MakarFX # :

Ben de üslupları bilmiyordum, okumam için uygun olacak şekilde formatladım .

 
MakarFX # :
ObjectFind bir bool değil, bir int'dir
bu durumda hiçbir fark yoktur "!" veya "==0"
 
Nerd Trader # :
bu durumda hiçbir fark yoktur "!" veya "==0"

Bir fark var!!!

       if (! ObjectFind ( "Buy Stop" )) Print ( "All right Христофор Бонифатич!" );
       else Print ( "Something is wrong!" );
       if ( ObjectFind ( "Buy Stop" )!= 0 ) Print ( "All right Христофор Бонифатич" );
 
Nerd Trader # :
bu durumda hiçbir fark yoktur "!" veya "==0"
 if (! ObjectFind ( "Buy Stop" ))

Bu istek şöyle görünür:

Vasily Ivanovich Chapaev ve Petka bir uçakta uçuyor ve aniden pilotun başında oturan Vasily Ivanovich bağırıyor:

"Petka, cihazlar!"

Petka cevap verir: "Otuz sekiz."

Vasiliy İvanoviç: “Otuz sekiz nedir?”

Petka: "Peki ya cihazlar?"

 
MakarFX # :

Bu istek şöyle görünür:

Hayır Makar, şuna benziyor:

ObjectFind() işlevi, ana pencerenin numarasını döndürür. Ve bu sayı 0'a eşittir. Öte yandan, 0 == false, eğer fonksiyon 0 döndürürse, false döndürmekle aynı olur. Tabii ki bunu uygulamazdım, eğer fonksiyon birdenbire -1 döndürürse yani bir hata varsa, o zaman nesnenin konumunu ana pencerede değil de düşünebiliriz. Evet, artı her şeye, hangi düzeltmelerin yapılacağını asla bilemezsiniz...

Genel olarak, tartışmayın ve bunu yapmayı öğrenmeyin ...