[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 325
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Söyle bana, iki EMA (beş günlük / dak. ve maks.,) arasındaki farkı artırırken maksimum EMA'da uzun satış yaparken ve minimum EMA'da şort satın alırken nasıl reçete yazabilirim?
İki EMA arasındaki fark olarak Global değişkenlerin başlığında " Rastvor " kullanıyorum.
Bu kod ticaret kriterlerinde nasıl yazılır?
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 başvuruyorum.
Teşekkür ederim!
Bir diziyi (arabellek değil) bildirirken, en azından boyutunu açıkça belirtmelisiniz.
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 başvuruyorum.
Teşekkür ederim!
belirtilen dizi altında ( Vol_Arr[]) ne statik ne de dinamik olarak bellek ayırmazsınız.
2. Koddan anladığım kadarıyla AOBuffer3[] dizisinde hacimleri değil MA farkını hesaplıyorsunuz
Hacimler ExtMapBuffer1'de dikkate alınır
Vol_Arr[] öğesini global olarak veya statik bir değiştirici ile başlatabilirsiniz - aralarından seçim yapmak için, ancak bellek her durumda tahsis edilmeli veya önceki iki dizi gibi gösterge arabelleğiyle ilişkilendirilmelidir - birçok seçenek vardır.
1. Her iki dizi de sizin kullandığınız ve gösterge arabellekleriyle ilişkilendirilir - yani, bunlar için bellek ayrılır (dolaylı olarak da olsa)
......
Vladislav, kodu tekrar gözden geçirdi. Vol_Arr[] içeren kodun bir kısmı göstergenin eski sürümünden kaldı, kaldırdım.
Hatanın hala kodun bu bölümünde olduğunu düşünüyorum, ama nerede olduğunu anlamıyorum! Kodun bu bölümünü daha ayrıntılı olarak yorumladı.
Vladislav, kodu tekrar gözden geçirdi. Vol_Arr[] içeren kodun bir kısmı göstergenin eski sürümünden kaldı, kaldırdım.
Hatanın hala kodun bu bölümünde olduğunu düşünüyorum, ama nerede olduğunu anlamıyorum! Kodun bu bölümünü daha ayrıntılı olarak yorumladı.
İşte burada:
#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; } } //-- Поиск High & Time if (AOBuffer3[i]>=0) //Если Awesome больше нуля { prhgh_s = High[i]; // ----- if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];} //--- Ищу самый высокий бар и определяю время этого бара // -- пока значение tmhgh = 0 } //-- Поиск Low & Time if (AOBuffer3[i]<=0) //Если Awesome меньше нуля { prlw_s = Low[i]; // ----- if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];} // --- Ищу самый низкий бар и определяю время этого бара // -- пока значение tmlw = 0 } // -- Пересчет баров от High до Low int colbr = iBarShift(NULL,0,tmhgh)-iBarShift(NULL,0,tmlw); //-- Здесь считаю общее количество баров от наименьшего до наибольшего значения // -- пока значение colbr = 0 int shift=iBarShift(NULL,0,tmlw); // -- Это точка отсчета for (i=0; i<=colbr; i++) {VLUP += MathAbs(iVolume(NULL,0, shift+i));} //-- Значению VLUP суммируем все объемы начиная от самого низкого бара до самого высокого бара // -- Значение VLUP = 47 SetText("Awesome_super_volumes"+Time[i], DoubleToStr(VLUP,0), tmhgh, 0.0010, Black); 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); } 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); }Tekrar teşekkürler!
İşte burada:
hazırlıksız:
Seçilen parça döngünün dışında ve i döngü sayacını kullanıyor - mantıkta veya uygulamada bir sorun var
CSV dosyaları biçimindeki rakamlara neden ihtiyacınız var?
Tanıma algoritmalarını test etmek ve hata ayıklamak için gereklidir.
Onları anlamak için kendin yaz, başkasınınkini alma.
Tam olarak ne yazmalı? Grafikteki rakamları kendiniz işaretleyin ve ilgili tarih parçalarını dışa aktarın mı? Bu çözüm şu ana kadarki ilk çözüm, ancak yine de birinin bunu zaten yaptığını umuyorum. Sonuçta bu sadece rutin bir iş.
Daha fazla, daha iyi anlamına gelmez!
Kabul etmeme izin ver. Test seti ne kadar büyük olursa, programın sonucu istatistiksel olarak o kadar güvenilir olacaktır.
ps Soru hala geçerli. ( Bu gönderideki soruya bakın )
Merhaba!!!
Lütfen bana mevcut MA'nın maksimum değerinde uzun pozisyonu kapatmak için hangi kodun gerekli olduğunu söyleyin.
Aşağıda gerçek ticaret kriterleri ve net olmayan kırmızı ile vurgulanmıştır.
Programa pozisyondan çıkmasını nasıl söyleyeceği de net değil,
MA1 ve MA2 arasındaki farkı artırdıktan sonra?
//------------------------------------------------ --------------- 5 --
// Ticaret kriterleri
MA_1_t=iMA(NULL,0, Period_MA_1 ,0,MODE_EMA,PRICE_HIGH,1); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,1); // MA_2
if ( iHigh (Symbol(),Period(),0) >= MA_1_t) //
{
Opn_S=doğru;
}
if ( iLow (Symbol(),Period(),0) <= MA_2_t) //
{
Opn_B=doğru; // Kriterler açık. satın almak
}
if ( uzunluğu bugünün maksimum iMA'sında kapatmak için hangi kod gereklidir??? )
{
Cls_B=doğru;
}
//------------------------------------------------ --------------- 6 --
hazırlıksız:
Seçilen parça döngünün dışında ve i döngü sayacını kullanıyor - mantıkta veya uygulamada bir sorun var
Teşekkürler Vladislav! Bir şeyler olmaya başladı. Ama neden böyle? :(
Başka bir soru, gösterge penceresinde metin etiketlerinin neden görüntülenmediğidir?