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

 
voron_026 :

İyi günler Aleksey Vyazmikin Programlamaya yeni başladım. Yavaş yavaş konuya giriyorum.

Bu şekilde yapmaya çalıştı:

İlk dikdörtgen çizilir. geri kalanı çizilmez. Nasıl yapacağını düşünürken. İpuçları için teşekkürler ve tipik olmayan tarz ile ne demek istiyorsun?


Aynı koordinatlarda birçok nesnenin çizildiğinden ve bir nesnenin çizildiğinden emin misiniz?

Sabit puanlarınız var

 datetime time0 = iTime ( Symbol (), PERIOD_H4 , 0 );
datetime time1 = iTime ( Symbol (), PERIOD_H4 , 1 );
double open0 = iOpen ( Symbol (), PERIOD_H4 , 0 );
double open1 = iOpen ( Symbol (), PERIOD_H4 , 1 );
double close1 = iClose ( Symbol (), PERIOD_H4 , 1 );
double high1 = iHigh ( Symbol (), PERIOD_H4 , 1 );
double low1 = iLow ( Symbol (), PERIOD_H4 , 1 );

Bir nesne oluştururken bunları bir işlevde veya doğrudan kodda tanımlayın ...

Tipiklik hakkında - hesaplama fonksiyonunuz çarpık ve gözlemlerime göre, birkaç yeni başlayan böyle bir if (!...) ifadesini kullanıyor.

 

Merhaba!


Lütfen bana söyle:

bir göstergenin (I-1) üzerine inşa edilmiş başka bir göstergeye (I-2) göre konumunun nasıl hesaplanacağı (I-1).


Örneğin:

Bollinger'e göre RSI konumu.

Hesaplama fiyatı yerine verileri değiştirebileceğinizi düşündüm.

 RSI = iRSI ( Symbol (), TimeFrame, 14 , PRICE_CLOSE , 1 );
 BB  = iBands ( Symbol (), TimeFrame, 34 , 1 , 0 , RSI, MODE_UPPER , 1 );
, ancak hata veriyor.
 
Ras al Ghul :

Merhaba!


Lütfen bana söyle:

bir göstergenin (I-1) üzerine inşa edilmiş başka bir göstergeye (I-2) göre konumunun nasıl hesaplanacağı (I-1).


Örneğin:

Bollinger'e göre RSI konumu.

Hesaplama fiyatı yerine verileri değiştirebileceğinizi düşündüm.

, ancak hata veriyor.

bb'yi RSI üzerine nasıl kurduğunuz bile belli değil, yani. resim nasıl yapıldığı belli...


 double    iBands ( 
   string        symbol,           // имя символа 
   int           timeframe,         // таймфрейм 
   int           period,           // период 
   double        deviation,         // кол-во стандартных отклонений 
   int           bands_shift,       // сдвиг относительно цены 
   int           applied_price,     // тип цены 
   int           mode,             // индекс линии 
   int           shift             // сдвиг 
   );

sahip olduğunuz fiyat türü doğru değil - bunu yapmanız gerekiyor

 double    iBandsOnArray ( 
   double        array[],           // массив 
   int           total,             // количество элементов 
   int           period,           // период 
   double        deviation,         // кол-во стандартных отклонений 
   int           bands_shift,       // сдвиг относительно цены 
   int           mode,             // индекс линии 
   int           shift             // сдвиг 
   );
 
Aleksey Vyazmikin :

Tipiklik hakkında - hesaplama fonksiyonunuz çarpık ve gözlemlerime göre, birkaç yeni başlayan böyle bir if (!...) ifadesini kullanıyor.


Seni anladım. Belki de kendi tarzımı geliştirdim. if(!...) ifadesini bu biçimde kullanmayı seviyorum. Ve başka bir kişiden hesaplama fonksiyonunu gözetledim, ama bu mantığı sevdim

 
Aleksey Vyazmikin :

bb'yi RSI üzerine nasıl kurduğunuz bile belli değil, yani. resimde nasıl yapıldığı belli...


sahip olduğunuz fiyat türü doğru değil - bunu yapmanız gerekiyor

Cevabın için teşekkürler!

Düşüncelerin hangi yöne yönlendirileceği belli oldu.


Standart MT4 araçlarıyla netlik için resim (Önceki / ilk göstergeye göre).


Sadece Java dizilerine aşinayım ... ve sonra kısaca.

Nasıl oluşturulur ve oraya tam olarak ne eklenmesi gerekir?

MetaEditor ve MQL Tutorial'daki F1 netlik getirmedi...

 
voron_026 :

Seni anladım. Belki de kendi tarzımı geliştirdim. if(!...) ifadesini bu biçimde kullanmayı seviyorum. Ve başka bir kişiden hesaplama fonksiyonunu gözetledim, ama bu mantığı sevdim


Derin düşünen bir insan olduğunuz görülebilir - iyi şanslar!

 
Ras al Ghul :

Cevabın için teşekkürler!

Düşüncelerin hangi yöne yönlendirileceği belli oldu.


Standart MT4 araçlarıyla netlik için resim (Önceki / ilk göstergeye göre).


Sadece Java dizilerine aşinayım ... ve sonra kısaca.

Nasıl oluşturulur ve oraya tam olarak ne eklenmesi gerekir?

MetaEditor ve MQL Tutorial'daki F1 netlik getirmedi...


Bir dizi oluşturun ve bir döngü aracılığıyla (örneğin, için) göstergenin değeriyle doldurun. Ardından iBandsOnArray() işlevini kullanın.

 
Aleksey Vyazmikin :

Bir dizi oluşturun ve bir döngü aracılığıyla (örneğin, için) göstergenin değeriyle doldurun. Ardından iBandsOnArray() işlevini kullanın.


Ya seçeneğin çok karmaşık ya da ne anlamdan bahsettiğini anlamadım ...


 double Array[], BB;  


Array[ 1 ] = iRSI ( Symbol (),TimeFrame, 14 , PRICE_CLOSE , 1 );
BB = iBandsOnArray ( Array[ 1 ] , 0 , 34 , 1 , 0 , MODE_UPPER , 1 );

Benim versiyonumda, seçilen parçaya yemin ediyor:

'Dizi' - dizi gerekli.

Gösterge değerini bir diziye böyle koymuyor muyuz?


 
Aleksey Vyazmikin :

Aynı koordinatlarda birçok nesnenin çizildiğinden ve bir nesnenin çizildiğinden emin misiniz?



Evet haklısın. Dikdörtgenler bir koordinatta çizilir. Sorunu şu şekilde çözdü:

 void OnTick ()
{
Fun_New_Bar();

   if (UseDojiCandles = true && Doji() == 1 && New_Bar == true )
     {
       datetime time0 = iTime ( Symbol (),TimeFrame, 0 );
       datetime time1 = iTime ( Symbol (),TimeFrame, 1 );
       double open0 = iOpen ( Symbol (), TimeFrame, 0 );
       double open1 = iOpen ( Symbol (), TimeFrame, 1 );

       if (! ObjectCreate ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJ_RECTANGLE , 0 ,time1,open1,time0,open0))
         {
         Print ( "Не удалось создать метку вверх" );
         }
         ObjectSetInteger ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJPROP_COLOR , clrRed ); //--- установим цвет прямоугольника 
         ObjectSetInteger ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника 
         ObjectSetInteger ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника 
         ObjectSetInteger ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане 
         
         DojiCandle ++;
     }
   

   
   if (UseDojiCandles = true && Doji() == - 1 && New_Bar == true )
     {
       datetime time0 = iTime ( Symbol (),TimeFrame, 0 );
       datetime time1 = iTime ( Symbol (),TimeFrame, 1 );
       double open0 = iOpen ( Symbol (), TimeFrame, 0 );
       double open1 = iOpen ( Symbol (), TimeFrame, 1 );
      
       if (! ObjectCreate ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJ_RECTANGLE , 0 ,time1,open1,time0,open0))
         {
         Print ( "Не удалось создать метку вниз" );
         }
         ObjectSetInteger ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJPROP_COLOR , clrRed ); //--- установим цвет прямоугольника 
         ObjectSetInteger ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника 
         ObjectSetInteger ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника 
         ObjectSetInteger ( ChartID (), "Doji_" + IntegerToString (DojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане 

         DojiCandle ++;
     }
     

   
}
Hesaplanan zaman çerçevesini hızla değiştirmek için bir TimeFrame değişkeni eklendi
 
Ras al Ghul :

Ya seçeneğin çok karmaşık ya da ne anlamdan bahsettiğini anlamadım ...


Benim versiyonumda, seçilen parçaya yemin ediyor:

'Dizi' - dizi gerekli.

Gösterge değerini bir diziye böyle koymuyor muyuz?


Array[ 1 ] = iRSI ( Symbol (),TimeFrame, 14 , PRICE_CLOSE , 1 );
BB = iBandsOnArray (Array, 0 , 34 , 1 , 0 , MODE_UPPER , 1 );