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
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.
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.
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 parametersexternbool Show_AOLine_2= true ;
externint SlowEMA3= 34 ;
externint EMA= 2 ;
externbool Show_Volume= true ;
externdouble coaf= 1.5 ;
externbool Show_Vol_line= true ;
//---- indicator buffersdouble 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 settingsstring 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 donereturn ( 0 );
}
//+------------------------------------------------------------------+//| Awesome Oscillator |//+------------------------------------------------------------------+int start()
{
int limit;
int counted_bars=IndicatorCounted();
double prev,current;
//---- last counted bar will be recountedif (counted_bars> 0 ) counted_bars--;
limit= Bars -counted_bars;
//---- AO_fan line 2 (basic) bufferfor ( 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 до Lowint 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 );
//---- donereturn ( 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);
}
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.
Ç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
}
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!
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.
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.
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 --
// 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)
//------------------------------------------------ --------------- 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.
Yanlış olan değerler dikkate alınmaz.
Aşağıda kodun kendisi var.
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.
Çocuklar bana plz kodunda neyin yanlış olduğunu söyleyin!
Çocuklar bana plz kodunda neyin yanlış olduğunu söyleyin!
Tam olarak anlama. Ancak hacimlerin görüntülenmesinde herhangi bir sorun yoktur. Hacimlerin hesaplanmasında sorunlar var. Burada bir yerlerde.
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!
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.
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!