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

 
artmedia70 :

Dış değişkenler hakkında konuşmadım. İşte bahsettiğim şey.

Bir durum hayal edelim. Son açık pozisyon verilerine göre karar verilmesi gerekmektedir.


Test cihazı için:

Son açık pozisyonun gerekli verilerini depolayacağımız değişkenler oluşturuyoruz.

Yeni bir pozisyon açılır açılmaz ihtiyaç duyduğumuz verileri hemen bu değişkenlerin içine koyuyoruz.

Bir sonraki pozisyonu açmak için bir sinyal geldiğinde (örneğin, 20 test dakikasından sonra), açılacak pozisyonun verileri hakkında karar verirken bazı kriterleri kontrol etmemiz gerekir. Bu kriterler, koşula göre önceki açık pozisyona bağlıdır. Bunları değişkenlerden okuyoruz (son açılışta kaydettik) ve yeni bir pozisyon için ek veri olarak kullanıyoruz.

Bir pozisyon açtığımızda, yeni açılan pozisyonla ilgili yeni verileri değişkenlere kaydediyoruz.


gerçek:

Aynı durumu düşünelim ama... son pozisyonu açıp verilerini değişkenlere kaydettikten sonra 10 dakikanın geçtiğini de düşünelim (bir sonrakini açmadan önce 10 dakika daha geçmeli (peki, testte öyle varsaydık) durum)). Ve bu süre zarfında danışman bir nedenden dolayı yeniden başlatıldı.

EA'yı yeniden başlattıktan sonra değişkenlerde depolanan son açık pozisyon verilerine ne olacak? Yapmayacaklar.

Peki nereye götürülmeliler? Bu doğru - arayın. Bunun için gerekli verileri arama işlevlerine ihtiyaç vardır. Bu nedenle, gerçek hayatta, ihtiyacımız olduğunda her şeyi hemen bulmak ve değişkenlerde saklamamak daha iyidir, bu gerçekten çok daha kolay ve hızlıdır.


Geç açıklama için özür dilerim - daha yeni çıktı ... :))

Her zamanki gibi haklısın! Ayrıca yeni verilere ihtiyaç duyulduğunda işlevleri kullanırım. Ve bahsettiğin "değişkenleri" kullanmıyorum, çünkü mantıklı değil, infa hızla eski hale gelir. Ve Victor'a kodu ağırlaştırmamak için kaçınılabilecek işlevlere takılmamasını tavsiye ettim! İlginiz için teşekkür ederim!
 
Tünaydın. MetaTrader 4'te kar limitleri belirlemek mümkün müdür? Zaten kısıtlamanın para biriminde ve puan cinsinden değil. Evet ise, nasıl
 
   for (i= 0 ;i<limit;i++) /*вопрос: еще использовал и такую последовательность for(i=Bars-1; i>=0; i--), есть ли разница с какой 
   "стороны" заполнять массив и рассматривать значения?*/
   
   RSI= iRSI ( 0 , 0 , 8 , PRICE_CLOSE ,i); 
   
   // задаем пустое значение буфера 
   RSIBuffer3[i]= 0.0
   /* вроде так, мысль такая, что буфер должен быть пустым в цикле for(int i=0;i<limit;i++), до момента достижения 
   RSI заданных значений. Вопрос: так ли? и где он должен находится? */ 
   
   //ставим условие при котором пока RSI >= 70                     
   {
     while RSI>= 70     
     {
       i++; //вопрос: где то видел эту часть кода в конце цикла, есть ли разница?
             
       // заполняем буфер значениями RSI
        
       RSIBuffer3[i]= iRSI ( 0 , 0 , 8 , PRICE_CLOSE ,i);
             
     }
        
     // определяем позицию максимального значения в массиве      
        
     int RSI_max = ArrayMaximum (RSIBuffer3[i], int count= WHOLE_ARRAY , int start= 0 ); /* тут выдает ошибку на значениях count и start отсюда вопрос: нужно ли определять размер массива через ArraySize? и какое начальное значение должно быть, не i ли?*/
             
     //ищем бар со значением RSI равным максимальному значению RSI в массиве 
        
     if RSI=RSIBuffer3[RSI_max];
                
     // рисуем стрелку на этом значении
        
     ExtMapBuffer2[i]=High[i]+ 5 * Point ;
            
     else 
                
     ExtMapBuffer2[i]= 0.0 ;
           
   }
       //ставим условие при котором пока RSI <= 30                     
   { 
     while RSI<= 30
        {    
        i++;
         // заполняем буфер значениями RSI
        
        RSIBuffer3[i]= iRSI ( 0 , 0 , 8 , PRICE_CLOSE ,i);
        
        {        
                
         // определяем позицию минимального значения в массиве  
            
         int RSI_min = ArrayMinimum (RSIBuffer3[i], int count= WHOLE_ARRAY , int start= 0 );
        
                
         //ищем бар со значением RSI равным максимальному значению RSI в массиве 
        
         if RSI=RSIBuffer3[RSI_min];
                
         // рисуем стрелку на этом значении
             
        ExtMapBuffer1[i]=Low[i]- 5 * Point ;
             
         else 
             
        ExtMapBuffer1[i]= 0.0 ;            
          
        }
                   
   return ( 0 );
   }

mantığı çözmeme yardım et, bir şekilde basit mantığı bir programa çeviremiyorum (biraz literatür önerebilir misin)

Görev: 70'in üzerindeki (30'un altındaki) değerler için maksimum (minimum) RSI'yi hesaplayın ve çubuğun üzerine aşağı (yukarı) bir ok çizin

bu değerlerde.

Uygulama (birinci kısım, ikinci benzer):

1. Her çubuk için RSI değerini hesaplayın

2. RSI 70'den büyükken, RSI arabelleğini değerleriyle doldurun

3. dizideki maksimum değerin konumunu belirleyin

4. dizideki maksimum RSI değerine eşit bir RSI değerine sahip bir çubuk aramak

5. Bu çubuğun üzerine bir ok çizin.

Eh, böyle bir şey, sadece kod yazarken çok fazla soru, hata ve tam bir karmaşa var (((

İşte koddaki uygulama.

 
bazı yerlerde metin ve kodu karıştırdım, kusura bakmayın
 

Baylar, lütfen bu tür bir algoritmayı kodlamak için bir döngü aracılığıyla isteyin.

if (iLow (Symbol (),0, 1 ) > iLow (Sembol (),0, 10 )) // ilk mumun DÜŞÜK ise > onuncu mumun DÜŞÜK

OrderSend (Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123 ); // sipariş aç.

VE İHTİYACIM VAR

Düşük 1 ve aynı anda Düşük 2 ve aynı anda Düşük 3...... ...ve aynı anda Düşük 9 mum > Düşük 10 mum (yani 1'den 9'a kadar Düşük mumlar)

                                                                                                                                             // sipariş aç.

Teşekkür ederim.

 
solnce600 :

Baylar, lütfen bu tür bir algoritmayı kodlamak için bir döngü aracılığıyla isteyin.

if (iLow (Symbol (),0, 1 ) > iLow (Sembol (),0, 10 )) // ilk mumun DÜŞÜK ise > onuncu mumun DÜŞÜK

OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123 ); // sipariş aç.

VE İHTİYACIM VAR

Düşük 1 ve aynı anda Düşük 2 ve aynı anda Düşük 3...... ...ve aynı anda Düşük 9 mum > Düşük 10 mum (yani 1'den 9'a kadar Düşük mumlar)

                                                                                                                                             // sipariş aç.

Teşekkür ederim.


Koşulun başarısı için bir bayrak oluşturuyoruz, onu doğru olarak ayarlıyoruz, döngüde gerekli sayıda mumdan geçiyoruz, herhangi birinde koşul karşılanmıyorsa bayrağı yanlış olarak ayarlayıp döngüden çıkıyoruz.
 
FAQ :

Koşulun başarısı için bir bayrak oluşturuyoruz, onu doğru olarak ayarlıyoruz, döngüde gerekli sayıda mumdan geçiyoruz, herhangi birinde koşul karşılanmıyorsa bayrağı yanlış olarak ayarlayıp döngüden çıkıyoruz.

Çok teşekkür ederim Allah aşkına özür dilerim .... Yazdıklarını anlamakta hala biraz yavaşım.

Kodu yazarsanız size çok minnettar olacağım ..... ve sonra her şeyi anlayacağım.

 

bool have = true;

for(int i=0;i<10;i++){

   if(Low[i]<=Low[i+1]){have=false; break;} 

if(have){

// действия если условие соблюдено 

}else{

 // действия если условие не соблюдено

}

 
FAQ :

bool have = true;

for(int i=0;i<10;i++){

   if(Low[i]<=Low[i+1]){have=false; break;} 

if(have){

// действия если условие соблюдено 

}else{

 // действия если условие не соблюдено

}

Çok teşekkür ederim Sizin sayenizde .... ve sizin gibi insanlar ... Programlamanın inceliklerinde ustalaşmakta biraz ilerleme kaydettim ....
 

insanlar bana n'den sonra bekleyen bir siparişi nasıl kapatabileceğinizi söylüyor, işe yaramazsa puan sayısı?