Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 195

 
Artyom Trishkin :

Fiyatın Masha'yı geçtiği noktayı bulun. Bu, arama aralığının başlangıcı olacaktır.

Fiyatın Masha'yı geçtiği noktayı bulun. Bu aralığın durağı olacak.

iHighest()'i yalnızca bu aralıkta alın.

Ve MA noktaları aramasının nasıl uygulanacağı, böylece sonsuza kadar değil, yalnızca 2 uç nokta aranır. Sözlü olarak, bunu da anlıyorum, ancak kodda nasıl uygulanacağı zor değilse.
 
GlaVredFX :
Ve MA noktaları aramasının nasıl uygulanacağı, böylece sonsuza kadar değil, yalnızca 2 uç nokta aranır. Sözlü olarak, bunu da anlıyorum, ancak kodda nasıl uygulanacağı zor değilse.

Yollardan biri: danışmanın global program düzeyinde bir değişken oluşturmak (danışmanın "başlığında" bir değişken bildirin) - bu değişkende son kesişimin gerçekleştiği çubuğun açılış saatini kaydedin. Bu, CopyBuffer çağırmanın üçüncü formunun kullanılmasına yardımcı olacaktır:

Gerekli zaman aralığının başlangıç ve bitiş tarihlerine göre arama

 int    CopyBuffer (
   int        indicator_handle,     // handle индикатора
   int        buffer_num,           // номер буфера индикатора
   datetime   start_time,           // с какой даты
   datetime   stop_time,             // по какую дату
   double     buffer[]               // массив, куда будут скопированы данные
   );

burada start_time, değişkenimizin tam zamanı ve stop_time, bilinen son sunucu teklifinin zamanıdır.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Отсчет элементов копируемых данных (индикаторный буфер с индексом buffer_num) от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар (значение индикатора для текущего бара). При копировании заранее неизвестного количества данных в качестве массива-приемника buffer[] желательно...
 
GlaVredFX :
Ve MA noktaları aramasının nasıl uygulanacağı, böylece sonsuza kadar değil, yalnızca 2 uç nokta aranır. Sözlü olarak, bunu da anlıyorum, ancak kodda nasıl uygulanacağı zor değilse.

MA için bir bakım bulunana kadar bir döngü içinde arama yapmak gerekir.

Bir an, bu sarı dikdörtgen tarafından vurgulanan alandır, fiyat ve MA'nın ikinci kesişimine ulaşmadan döngüyü kesecektir. Sonuç olarak, maksimum sağdaki ilk kavşakta bulunacaktır.


PS Seçilen 2 site arasındaki fark nedir?

 
Vitaly Muzichenko :

PS Seçilen 2 site arasındaki fark nedir?

Farklı olabilirler - yani, ilk nokta ikinciden daha yüksek veya daha düşük olabilir.

Bu örnek yeni oldu. Ama bu her zaman aynı olacakları anlamına gelmez.



Kimler benzer koşullara sahip kod örnekleri gönderebilir.:

Mevcut MA değeri > 0 bar
Çubuğun numarasını arıyoruz Fiyat < MA, çubuğun 1 sayısını bulduk, tampon 2'ye değeri yazıyoruz
Bir sonraki sayıyı arıyoruz Fiyat > MA 2 sayısını buldu, tampondaki 1 değerine yazın.
Aramayı durduruyoruz.
Ardından, 1 ve 2 arabellek değerleri arasında en düşük Düşük fiyatı ararız.
Mevcut MA değeri < 0 bar ise
Çubuğun numarası aranıyor , Fiyat > MA, çubuğun 1 sayısını buldu, değeri arabellek 2'ye yazın
Bir sonraki sayıyı arıyoruz Fiyat < MA 2 sayısını buldu, tampon 1'deki değere yazın.
Aramayı durduruyoruz.
Ardından, 1 ve 2 arabellek değerleri arasında en yüksek Yüksek fiyatı ararız.

 
GlaVredFX :

Farklı olabilirler - yani, ilk nokta ikinciden daha yüksek veya daha düşük olabilir.

Bu örnek yeni oldu. Ama bu her zaman aynı olacakları anlamına gelmez.



Kimler benzer koşullara sahip kod örnekleri gönderebilir.:

Mevcut MA değeri > 0 bar
Çubuğun numarasını arıyoruz Fiyat < MA, çubuğun 1 sayısını bulduk, tampon 2'ye değeri yazıyoruz
Bir sonraki sayıyı arıyoruz Fiyat > MA 2 sayısını buldu, tampondaki 1 değerine yazın.
Aramayı durduruyoruz.
Ardından, 1 ve 2 arabellek değerleri arasında en düşük Düşük fiyatı ararız.
Mevcut MA değeri < 0 bar ise
Çubuğun numarası aranıyor , Fiyat > MA, çubuğun 1 sayısını buldu, değeri arabellek 2'ye yazın
Bir sonraki sayıyı arıyoruz Fiyat < MA 2 sayısını buldu, tampon 1'deki değere yazın.
Aramayı durduruyoruz.
Ardından, 1 ve 2 arabellek değerleri arasında en yüksek Yüksek fiyatı ararız.

Görüntüyü takip ederseniz, bir döngü çalıştırmanız ve MA<Fiyat koşulu bulunana kadar arama yapmanız gerekir.

Burayı bulur bulmaz diziyi Yüksek fiyatlar ile dolduruyoruz . MA>Fiyat koşulu bulunana kadar bir döngüye giriyoruz, burayı bulur bulmaz döngüyü kırıyoruz (break)

Peki, dizide en yüksek fiyatları arıyoruz

 
Vitaly Muzichenko :

Görüntüyü takip ederseniz, bir döngü çalıştırmanız ve MA<Fiyat koşulu bulunana kadar arama yapmanız gerekir.

Burayı bulur bulmaz diziyi Yüksek fiyatlar ile dolduruyoruz . MA>Fiyat koşulu bulunana kadar bir döngüye giriyoruz, burayı bulur bulmaz döngüyü kırıyoruz (break)

Peki, dizide en yüksek fiyatları arıyoruz

Bu doğru ve ben de yazdım, ancak Kod'da nasıl uygulanacağını, en azından bu kodun bir örneğine sahip olabilirsiniz:


döngüyü çalıştırın ve MA<Fiyat koşulu bulunana kadar arayın.

Burayı bulur bulmaz diziyi Yüksek fiyatlar ile dolduruyoruz.

Документация по MQL5: Операции с массивами / ArrayFill
Документация по MQL5: Операции с массивами / ArrayFill
  • www.mql5.com
При вызове функции ArrayFill() всегда подразумевается обычное направление индексации – слева направо, то есть изменение порядка доступа к элементам массива с помощью функции ArraySetAsSeries() не принимается во внимание. Многомерный массив при обработке функцией ArrayFill() представляется одномерным, например...
 
GlaVredFX :

Bu doğru ve ben de yazdım, ancak Kod'da nasıl uygulanacağını, en azından bu kodun bir örneğine sahip olabilirsiniz:


döngüyü çalıştırın ve MA<Fiyat koşulu bulunana kadar arayın.

Burayı bulur bulmaz diziyi Yüksek fiyatlar ile dolduruyoruz.

Şimdi kodu yazamam, belki başkası yazar - çok basit

 

İhtiyacınız olan şey bu, birisi bu koda yardımcı olabilir.

 int start()                           

  {

   int     i;

   double No_1;

   double No_2;

   double k= iClose ( NULL , 0 ,i);
   double h= iHigh ( NULL , 0 ,i);

   if (ma>k) ma= iMA ( NULL , 0 , 24 , 0 , 1 , 0 ,i);

   for (i= 0 ; i< Bars ; i++) {

   //---- Код поиска номер крайнего бара где  iHigh>ma

   //---- Если нашли то возвращаем номер бара No_1

            

          }

Ardından, iLow>ma'nın bulunduğu sonraki değeri bulmanız ve No_2 çubuk numarasını döndürmeniz gerekir.
Aramayı durdurun ve bu çubuklar arasındaki en üst noktayı bulmak için iHighest işlevini kullanın
int val_index=iEn Yüksek(NULL,0,MODE_HIGH,No_2,No_1);

 
GlaVredFX :

 if (ma>k) ma= iMA ( NULL , 0 , 24 , 0 , 1 , 0 ,i);

Bu MQL5 kodu değil.

 
Vladimir Karputov :

Bu MQL5 kodu değil.

Bu bir düzen, 4 ile 5 arasında fark yok

:)