Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 481

 
Merhaba!

Belki birisinin bazı simgeler çizen bir kod örneği vardır, örneğin, gösterge tablosundaki oklar, çizgiler kesiştiğinde, bunlardan ikisi varsa veya "0" çizgisi aşıldığında veya başka herhangi bir kriter için? Tercihen, kendi kendine ölçeklenen gösterge penceresinin üst ve alt sınırlarında .
 
Sergei Vladimirov :
İndir'i tıklayın. Yalnızca son 2048 çubuk otomatik olarak yüklenir, geri kalanının atılması gerekir.
"Yük"ten sonra böyle çıktı...
 
Mike :
"Yük"ten sonra böyle çıktı...
Geçmiş arşivi ile klasörü zorla silin ve terminali başlatın - ardından tüm alıntıları indirin.
 
Leo59 :
Merhaba!

Belki birisinin bazı simgeler çizen bir kod örneği vardır, örneğin, gösterge tablosundaki oklar, çizgiler kesiştiğinde, bunlardan ikisi varsa veya "0" çizgisi aşıldığında veya başka herhangi bir kriter için? Tercihen, kendi kendine ölçeklenen gösterge penceresinin üst ve alt sınırlarında .

İşte benim hindimden, belki yardımı olur. MT4 kodunu olduğu gibi gönderiyorum. Hala günlüklerle ilgili çalışmalar var.

 void PlotArrowUP( int i)
{
     string sup = "\xE9" ; //233
     datetime dt = iTime( NULL , 0 , i); 
     double dprice = (WindowPriceMax()-WindowPriceMin())/( 100.0 /ArrowOffsetInPercentOfScreen); //настроить масштаб под свои нужды
     ObjectCreate ( "arr1" +ArrowIdx, OBJ_TEXT , 0 , dt, FastBuffer[i]-dprice);   
    ObjectSetText( "arr1" +ArrowIdx, sup, ArrowFontSize, "Wingdings" , ColorArrowUp);
    ArrowIdx++;
     if (EnableLogFile)
    {
         string dts = TimeToStr( TimeCurrent (), TIME_DATE | TIME_MINUTES | TIME_SECONDS );
         FileWrite (LogFile1, dts, "  call PlotArrowUp(i) i=" , i, "  FastBuffer[i]=" , FastBuffer[i]);
    }
}

void PlotArrowDown( int i)
{
     string sup = "\xEA" ; //234
     datetime dt = iTime( NULL , 0 , i); 
     double dprice = (WindowPriceMax()-WindowPriceMin())/( 100.0 /ArrowOffsetInPercentOfScreen);
    dprice*= 2.0 ;
     ObjectCreate ( "arr0" +ArrowIdx, OBJ_TEXT , 0 , dt, FastBuffer[i]+dprice);   
    ObjectSetText( "arr0" +ArrowIdx, sup, ArrowFontSize, "Wingdings" , ColorArrowDown);
    ArrowIdx++;
     if (EnableLogFile)
    {
         string dts = TimeToStr( TimeCurrent (), TIME_DATE | TIME_MINUTES | TIME_SECONDS );
         FileWrite (LogFile1, dts, "  call PlotArrowDown(i) i=" , i, "  FastBuffer[i]=" , FastBuffer[i]);
    }
}
 
Alexey Volchanskiy :

Вот из моего индюка, может, поможет. Код для МТ4, выкладываю, как есть. Там еще работа с логами.

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

Örneğinizde, bu nesneler aracılığıyladır. İlginç bir şekilde, bunu diziler aracılığıyla yapmak, böylece ölçek değiştiğinde, her zaman pencerenin üst ve alt sınırlarında olmaları mümkün müdür?
 
Leo59 :
Alexey Volchanskiy :
Cevabınız için teşekkürler Alex!

Örneğinizde, bu nesneler aracılığıyladır. İlginçtir ki, bunu diziler aracılığıyla yapmak, böylece ölçek değiştiğinde her zaman pencerenin üst ve alt kenarlarında olmaları mümkün müdür?

Dizilerden anlamam. yorumlara bak ekledim

 ObjectCreate ( "arr0" +ArrowIdx, OBJ_TEXT , 0 , dt, FastBuffer[i]+dprice);
// "arr0"+ArrowIdx - формируем уникальное имя стрелки
// FastBuffer[i]+dprice - тут формируется цена, на которой будет рисоваться стрелка
   
ObjectSetText( "arr0" +ArrowIdx, sup, ArrowFontSize, "Wingdings" , ColorArrowDown);
ArrowIdx++; // для каждой стрелки нужно уникальное имя

Ayrıca, üst sınırda çizim yapmanız gerekiyorsa, bunu yapın

 ObjectCreate ( "arr0" +ArrowIdx, OBJ_TEXT , 0 , dt,  ChartGetDouble (0, CHART_PRICE_MAX ,0); 

Ve editördeki yardımı okuyun, örneklerle ayrıntılı olarak açıklanmıştır.

MQL4 Referansı / Standart Sabitler, Numaralandırmalar ve Yapılar / Grafik Sabitleri / Bir grafikle çalışma örnekleri

 
Alexey Volchanskiy :

Dizilerden anlamam. yorumlara bak ekledim

Ayrıca, üst sınırda çizim yapmanız gerekiyorsa, bunu yapın

Ve editördeki yardımı okuyun, örneklerle ayrıntılı olarak açıklanmıştır.

MQL4 Referansı / Standart Sabitler, Numaralandırmalar ve Yapılar / Grafik Sabitleri / Bir grafikle çalışma örnekleri

değişim ile

WindowPriceMax() и WindowPriceMin()

nesnelerin pencere kenarlarından belirli bir mesafede yeniden çizilmeye zorlanması gerekecek

 
Leo59 :

değişim ile

nesnelerin pencere kenarlarından belirli bir mesafede yeniden çizilmeye zorlanması gerekecek

Eski nesneler yerlerinde kalacak - eski fiyatlarla. Onları kenarlıklara taşımanız gerekiyorsa, onları kalemlerle yeniden çizmeniz gerekir. Sadece senin problemini bilmiyorum.

Pencere değişikliklerini OnChartEvent aracılığıyla takip edebilirsiniz.

 
Alexey Volchanskiy :

Eski nesneler yerlerinde kalacak - eski fiyatlarla. Onları kenarlıklara taşımanız gerekiyorsa, onları kalemlerle yeniden çizmeniz gerekir. Sadece senin problemini bilmiyorum.

OnChartEvent aracılığıyla pencere değişikliklerini takip edebilirsiniz.

İlk bakışta, görev üç kuruş kadar basit. ANCAK!....
Gösterge penceresinde, farklı genliklerle "0"a göre sallanan herhangi bir osilatör çizgisi vardır.
Aslında görev şudur:
- "0"ı aşağıdan yukarıya geçerken, gösterge penceresinin alt kenarına bir ok çizin,
- "0"ı yukarıdan aşağıya geçerken, gösterge penceresinin üst sınırına bir ok çizin,
- gösterge penceresindeki osilatör tablosunu kendi kendine ölçeklerken, oklar otomatik olarak gösterge penceresinin sınırlarında kalmalıdır.
Onlar. geçmiş grafiğinde ileri geri kaydırırken veya yatay ölçeğini değiştirirken, oklar her zaman gösterge penceresinin sınırlarındadır.
 
Leo59 :
İlk bakışta, görev üç kuruş kadar basit. ANCAK!....
Gösterge penceresinde, farklı genliklerle "0"a göre sallanan herhangi bir osilatör çizgisi vardır.
Aslında görev şu:
- "0"ı aşağıdan yukarıya geçerken, gösterge penceresinin alt kenarına bir ok çizin,
- "0"ı yukarıdan aşağıya geçerken, gösterge penceresinin üst sınırına bir ok çizin,
- gösterge penceresindeki osilatör tablosunu kendi kendine ölçeklerken, oklar otomatik olarak gösterge penceresinin sınırlarında kalmalıdır.
Onlar. geçmiş grafiğinde ileri geri kaydırırken veya yatay ölçeğini değiştirirken, oklar her zaman gösterge penceresinin sınırlarındadır.

Görev oldukça basit.

Pencereyi değiştirirken veya kaydırırken OnChartEvent çağrılır, içinde parametre olmayan bir olay geçirilir:

Grafik değişikliği olayı CHARTEVENT_CHART_CHANGE

Eğer böyle bir olay geldiyse sol ve sağ görünen barları belirleyip gösterge penceresindeki tüm okları bu limitler dahilinde buluyoruz. Bulunursa, istediğiniz sınıra taşıyın. Okları oluştururken, analizle uğraşmamaları için UpArrow***** ve DownArrow***** gibi isimler verin. Ardından ChartRedraw'ı arayın.