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

 

Merhaba!

MQL4 ders kitabını bir ay okuduktan sonra Uzman Danışman yazmaya karar verdim, tecrübe eksikliğinden dolayı yeni bir tane oluşturmamak için ders kitabından tradeexpert.mq4 şablonunu almaya karar verdim.

Stratejinin özü şu şekildedir: Larry Williams iniş ve çıkışlarından oluşan üç çubuklu bir sistem, yüksek ve alçakta iki adet üç günlük EMA oluşturuyoruz, satıyoruz

maksimumda, minimumda gidelim.

Global değişkenler bölümündeki şablondan harici çift Rastvor =28.0; satırı kaldırıldı. (aslında buna gerek yok), onu da ticaret kriterlerinden çıkardı.

Global değişkenlerdeki MA değerleri 3 olarak değiştirildi:

harici int Dönem_MA_1= 3; // MA dönemi 1
harici int Period_MA_2= 3; // MA dönemi 2

Ticaret kriterleri bölümünde şunlar vardı:

 //--------------------------------------------------------------- 5 --
   // Торговые критерии
   MA_1_t = iMA ( NULL , 0 , Period_MA_1 , 0 , MODE_LWMA , PRICE_TYPICAL , 0 ) ; // МА_1
   MA_2_t = iMA ( NULL , 0 , Period_MA_2 , 0 , MODE_LWMA , PRICE_TYPICAL , 0 ) ; // МА_2
 
   if ( MA_1_t > MA_2_t + Rastvor * Point )         // Если разница между
     {                                          // ..МА 1 и 2 большая
      Opn_B = true ;                               // Критерий откр. Buy
      Cls_S = true ;                               // Критерий закр. Sell
     }
   if ( MA_1_t < MA_2_t - Rastvor * Point )         // Если разница между
     {                                          // ..МА 1 и 2 большая
      Opn_S = true ;                               // Критерий откр. Sell
      Cls_B = true ;                               // Критерий закр. Buy
     }
//--------------------------------------------------------------- 
oldu:

//------------------------------------------------ --------------- 5 --
// Ticaret kriterleri
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,0); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,0); // MA_2

if (PRICE_HIGH * Puan >= MA_1_t * Puan)
{
Opn_S=doğru;
Cls_B=doğru;
}

if (PRICE_LOW * Puan <= MA_2_t * Puan)
{
Opn_B=doğru; // Kriterler açık. satın almak
CLs_S=doğru; // Kriterler kapanıyor. Satmak
}
//------------------------------------------------ ---------------

Şimdi sorunun özü: sistem sadece satış emirleri açar, ancak satın almak istemez. Ne yanlış olabilir?

Başka bir yerde hatalar olabilir, lütfen kesin olarak yargılamayın, ancak tavsiyede bulunun)

 
Forexman77 :


//------------------------------------------------ --------------- 5 --
// Ticaret kriterleri
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,0); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,0); // MA_2

if (PRICE_HIGH * Puan >= MA_1_t * Puan)
{
Opn_S=doğru;
Cls_B=doğru;
}

if (PRICE_LOW * Puan <= MA_2_t * Puan)
{
Opn_B=doğru; // Kriterler açık. satın almak
CLs_S=doğru; // Kriterler kapanıyor. Satmak
}
//------------------------------------------------ ---------------

Şimdi sorunun özü: sistem sadece satış emirleri açar, ancak satın almak istemez. Ne yanlış olabilir?

Başka bir yerde hatalar olabilir, lütfen kesin olarak yargılamayın, ancak tavsiyede bulunun)



Bu ne? PRICE_LOW ve PRICE_HIGH. Bunlar, 6'ya kadar 0 veya 1 değerine sahip hepsi bir arada sabitlerdir.

i çubuğundaki maksimum BID değerini almak için iHigh (Symbol(),Period(),i) öğesini ve i çubuğunda minimum BID değerini almak için iLow(Symbol(),Period(),i) öğesini kullanmalısınız.

Mevcut çubukta yuvarlanırsanız: if ( iHigh(Symbol(),Period(),0) >= MA_1_t) Ve MA'yı Nokta ile çarpmanız gerekmez.

 

Hepinize iyi günler!

Lütfen bana neyin yanlış olduğunu söyle.

Ses seviyesi göstergesini (Ses Seviyesi) standart Müthiş göstergesine vidaladım.

Dalganın Toplam hacminin hesaplanmasını düzenlemek istiyorum (Düşükten Yüksek fiyatlara kadar hesaplanır ve Müthiş'in Min ve Maks değerlerine karşılık gelir). Bkz. şekil1.

pirinç1

Yanlış olan değerler dikkate alınmaz.

Aşağıda kodun kendisi var.

 #property  indicator_separate_window
#property  indicator_buffers 2
#property  indicator_color1  Red
#property  indicator_color2  SteelBlue
#property  indicator_width1   2

//---- basic fan indicator parameters

extern bool Show_AOLine_2= true ;
extern int SlowEMA3= 34 ;
extern int EMA= 2 ;
extern bool Show_Volume= true ;
extern double coaf= 1.5 ;
extern bool Show_Vol_line= true ;
//---- indicator buffers
double AOBuffer3[];
double ExtMapBuffer1[];


double VLUP;
   double prhgh_e= 0 , prhgh_s, prlw_e= 0 , prlw_s;
     datetime tmhgh, tmlw;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- drawing settings
   
   string name_ind = "Awesome_super_volumes" ;
   IndicatorShortName( "Awesome_super_volumes" );
   
   
//---- AO_fan line 2 (basic)
   if (Show_AOLine_2 == true ){Show_AOLine_2= DRAW_LINE ; }
   else 
    {Show_AOLine_2= DRAW_NONE ; }
   SetIndexBuffer ( 0 ,AOBuffer3);
   SetIndexStyle( 0 ,Show_AOLine_2);
   SetIndexLabel( 0 , "basic line" );   

   SetIndexBuffer ( 1 ,ExtMapBuffer1);
   SetIndexStyle( 1 , DRAW_HISTOGRAM );
   SetIndexLabel( 1 , "Volume" );
   
   //---- initialization done
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Awesome Oscillator                                               |
//+------------------------------------------------------------------+
int start()
  {
  
   int     limit;
   int     counted_bars=IndicatorCounted();
   double prev,current;
//---- last counted bar will be recounted
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;

//---- AO_fan line 2 (basic) buffer
   for ( int i= 0 ; i<limit; i++)
   {
     
 //---- AO_fan basic line + Volumes
     
      AOBuffer3[i]= iMA ( NULL , 0 ,EMA, 0 , MODE_SMA , PRICE_MEDIAN ,i)- iMA ( NULL , 0 ,SlowEMA3, 0 , MODE_SMA , PRICE_MEDIAN ,i);
if (Show_Volume== true )
{
double nSum = Volume[i]* Point *coaf;
   if (AOBuffer3[i]<= 0 )ExtMapBuffer1[i] = nSum;
   if (AOBuffer3[i]> 0 )ExtMapBuffer1[i] = -nSum;
}
if (Show_Vol_line== true )
{
double Vol_Arr[];


   if (AOBuffer3[i]<= 0 )Vol_Arr[i]=Volume[i]* Point *coaf;
   if (AOBuffer3[i]> 0 )Vol_Arr[i] = -Volume[i]* Point *coaf;}
//---- dispatch values between 2 buffers
   }
   
   //-- Поиск High & Time  
   if (AOBuffer3[i]>= 0 )
  {
  prhgh_s = High[i];
   if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];}
  }   
   
   //-- Поиск Low & Time  
   if (AOBuffer3[i]<= 0 )
  {
  prlw_s = Low[i];
   if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];}
  } 
  
   // -- Пересчет баров от High до Low
   int colbr = iBarShift( NULL , 0 ,tmhgh)-iBarShift( NULL , 0 ,tmlw);     
  
   int shift=iBarShift( NULL , 0 ,tmlw);
  
 for (i= 0 ; i<=colbr; i++)
{VLUP += MathAbs (iVolume( NULL , 0 , shift+i));}
       
  SetText( "Awesome_super_volumes" +Time[i], DoubleToStr(VLUP, 0 ), tmhgh, 0.0010 , Black);     
 
//-- Эти значения должны отображаться в окне Awesome
  SetText2( "Волна1" ,DoubleToStr(VLUP, 0 ), 980 , 10 ,Gray, 10 ); 
  SetText2( "Волна2" ,TimeToStr(tmlw, 0 ), 980 , 25 ,Gray, 10 ); 
  SetText2( "Волна3" ,TimeToStr(tmhgh, 0 ), 980 , 40 ,Gray, 10 );
  SetText2( "Волна4" ,DoubleToStr(colbr, 0 ), 980 , 55 ,Gray, 10 );  
  
  
      
//---- done
   return ( 0 );
  }
//+------------------------------------------------------------------+
void SetText( string name, string Vl, datetime t1, double p1, color c)
 {
 // if (ObjectFind(name)!=-1) ObjectDelete(name);
   ObjectCreate (name, OBJ_TEXT ,WindowFind( "Awesome_super_volumes" ), 0 , 0 , 0 , 0 );
  ObjectSetText(name, Vl, 10 , "Times New Roman" , c);
  ObjectSet(name, OBJPROP_TIME1 , t1);
  ObjectSet(name, OBJPROP_PRICE1, p1);
  ObjectSet(name, OBJPROP_COLOR , c); 
  }
  
//--Ввeл дополнительную процедуру для отображения значений на чарте. Ее не должно быть.
   void SetText2( string name, string text, int xdist, int ydist, color c, int size) 
 {                                                                                    
   ObjectCreate (name, OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );     
  ObjectSet(name, OBJPROP_XDISTANCE , xdist);
  ObjectSet(name, OBJPROP_YDISTANCE , ydist);    
  ObjectSetText(name,text, 7 , "Arial Black" ,c);
 }
 
Sepulca :


Bu ne? PRICE_LOW ve PRICE_HIGH. Bunlar, 6'ya kadar 0 veya 1 değerine sahip hepsi bir arada sabitlerdir.

i çubuğundaki maksimum BID değerini almak için iHigh(Symbol(),Period(),i) öğesini ve i çubuğunda minimum BID değerini almak için iLow(Symbol(),Period(),i) öğesini kullanmalısınız.

Mevcut çubukta yuvarlanırsanız: if ( iHigh(Symbol(),Period(),0) >= MA_1_t) Ve MA'yı Nokta ile çarpmanız gerekmez.

Çok teşekkürler!!! İşler!!
 

Çocuklar bana plz kodunda neyin yanlış olduğunu söyleyin!

 
Fox_RM :

Çocuklar bana plz kodunda neyin yanlış olduğunu söyleyin!


 if (Show_Vol_line== true )
{
double Vol_Arr[]; // ошибки: 1. Размещение  2. Область видимости


   if (AOBuffer3[i]<= 0 )Vol_Arr[i]=Volume[i]* Point *coaf;
   if (AOBuffer3[i]> 0 )Vol_Arr[i] = -Volume[i]* Point *coaf;}
//---- dispatch values between 2 buffers
   }
   
 
VladislavVG :


Tam olarak anlama. Ancak hacimlerin görüntülenmesinde herhangi bir sorun yoktur. Hacimlerin hesaplanmasında sorunlar var. Burada bir yerlerde.

 //-- Поиск High & Time  
   if (AOBuffer3[i]>= 0 )
  {
  prhgh_s = High[i];
   if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];} // -- tmhgh - выводил это значение оно = 0;

  }   
   
   //-- Поиск Low & Time  
   if (AOBuffer3[i]<= 0 )
  {
  prlw_s = Low[i];
   if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];}
  } 
  
   // -- Пересчет баров от High до Low
   int colbr = iBarShift( NULL , 0 ,tmhgh)-iBarShift( NULL , 0 ,tmlw);    tmlw - тоже = 0; Почему?
  
   int shift=iBarShift( NULL , 0 ,tmlw);
  
 for (i= 0 ; i<=colbr; i++)
{VLUP += MathAbs (iVolume( NULL , 0 , shift+i));}
       
  SetText( "Awesome_super_volumes" +Time[i], DoubleToStr(VLUP, 0 ), tmhgh, 0.0010 , Black);     
 
asdfgh001 :

Tünaydın!

Sorum biraz konu dışı olacak.

Lütfen bana söyler misiniz, bir yerde CSV dosyaları biçiminde TA rakamlarını bulmak mümkün mü? txt, xls veya programlı olarak işlenebilen diğer formatlarla kabul edilebilir seçenek.

Çeşitli makalelerde, TA ile ilgili ders kitaplarında TA figürlerinin örnekleri var, ancak elbette sıradan resimler şeklinde. Ancak, H1-H4 periyotlarında bazı döviz çiftlerinin tarihinin bir parçası olarak kaydedilen, az ya da çok büyük TA rakamlarına rastlayan var mı?

Googled, bulamadı. Elbette, geçmişi manuel olarak yineleyebilir, şekilleri işaretleyebilir, bu tarih parçasını .csv olarak dışa aktarabilirsiniz; gerekli sayıda tekrarlayın, sonuç olarak rakamların tabanını toplayın. Ama biri bunu zaten yaptıysa, zaman kazanmak isterim.

Şimdiden teşekkürler :)


CSV dosyaları biçimindeki rakamlara neden ihtiyacınız var? Rakamlardan oluşan bir kitaplık yazın... Onları anlamak için kendiniz yazın, başkasınınkini almayın. Daha fazla, daha iyi anlamına gelmez!
 
Fox_RM :


Tam olarak anlama. Ancak hacimleri görüntülemede sorun yok. Hacimleri saymada sorunlar var . Burada bir yerlerde.


1. Dizi ayrılmalıdır - yani bellek ayrılmalıdır. Aksi takdirde, değerleri saklayacak hiçbir yer yoktur;).

2. Yeni bir onay işareti alındığında, tahsis edilen diziniz bile yeniden tahsis edilir/yeniden başlatılır. Kapsamla ilgisi var. Bunun olmasını önlemek için dizi "statik" türünde olmalıdır.

Programlamanın temellerini okuyun.

ZY Sayımla ilgili problemler Size belirttiğim yerde dizi kullanımındaki hatalar.

 
VladislavVG :


1. Dizi ayrılmalıdır - yani bellek ayrılmalıdır. Aksi takdirde, değerleri saklayacak hiçbir yer yoktur;).

2. Yeni bir onay işareti alındığında, tahsis edilen diziniz bile yeniden tahsis edilir/yeniden başlatılır. Kapsamla ilgisi var. Bunun olmasını önlemek için dizi "statik" türünde olmalıdır.

Programlamanın temellerini okuyun.

ZY Sayımla ilgili problemler Size belirttiğim yerde dizi kullanımındaki hatalar.

Onlar. Vol_Arr[] anladığım kadarıyla global bir dizi olarak başlatılmalı.


Soru elbette noob, AMA.

1. O zaman göstergedeki hacimler neden doğru görüntüleniyor?

2. Sayarken, Vol_Arr[] 'a değil, AOBuffer3[]'e atıfta bulunuyorum.

Teşekkür ederim!