Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1105

 
shtr :

Vay!!! Teşekkür ederim! Bu yansıma gerektirir.

Belki bir yerlerde yeni kurallarla ilgili bir "eğitici" vardır? 4 haneli sayfa numarası biraz can sıkıcı...

Ve şu anda kimin için kolay ... Arşivde yeni gelenler hakkında 5 tane daha konu var)))

Dürüst olmak gerekirse, tercihen C ++ programlama deneyiminiz varsa, yardım ve kod tabanından örnekler yeterlidir. Hiç deneyiminiz yoksa, önce C ++ eğitimini inceleyebilirsiniz, MQL sözdiziminde çok benzer.

 
evillive :

Ve şu anda kimin için kolay ... Arşivde yeni gelenler hakkında 5 tane daha konu var)))

Dürüst olmak gerekirse, tercihen C ++ programlama deneyiminiz varsa, yardım ve kod tabanından örnekler yeterlidir. Hiç deneyiminiz yoksa, önce C ++ eğitimini inceleyebilirsiniz, MQL sözdiziminde çok benzer.

string Deneyim yok = C++ ders kitabı; )))

Yardımın için teşekkürler!

 

İyi günler, sevgili varlıklar!

Lütfen bir döviz çiftini gösteren bir ok göründüğünde göstergeye bir uyarı eklememe yardım edin.

Kendim denedim ama dedikleri gibi bilmemek ve unutmamak elde değil. Şimdiden teşekkürler.



#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 4

#özellik göstergesi_renk1 Beyaz

#özellik göstergesi_renk2 Beyaz

#özellik göstergesi_renk3 AçıkYeşil

#özellik göstergesi_color4 Kırmızı


harici int CountBars = 300;

extern string FS = " ** Filtre hassasiyeti: Yüksek <-[1..3]-> Düşük ** ";

extern int Duyarlılık = 2;

çift g_ibuf_92[];

çift g_ibuf_96[];

çift g_ibuf_100[];

çift g_ibuf_104[];

int gi_unused_108 = -1;


int() {

Gösterge Tamponları(4);

SetIndexStyle(2, DRAW_OKU);

SetIndexArrow(2, 233);

SetIndexBuffer(2, g_ibuf_92);

SetIndexStyle(3, DRAW_OK);

SetIndexArrow(3, 234);

SetIndexBuffer(3, g_ibuf_96);

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 3, Beyaz);

SetIndexBuffer(0, g_ibuf_100);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 3, Beyaz);

SetIndexBuffer(1, g_ibuf_104);

SetIndexEmptyValue(0, 0);

SetIndexEmptyValue(1, 0);

SetIndexEmptyValue(2, 0);

SetIndexEmptyValue(3, 0);

SetIndexLabel(2, "Satın Al");

SetIndexLabel(3, "Satış Sinyali");

SetIndexLabel(0, "Yüksek");

SetIndexLabel(1, "Düşük");

SetIndexEmptyValue(0, EMPTY_VALUE);

SetIndexEmptyValue(1, EMPTY_VALUE);

SetIndexEmptyValue(2, EMPTY_VALUE);

SetIndexEmptyValue(3, EMPTY_VALUE);

string ls_0 = "Scalper Signal";

GöstergeKısaAdı(ls_0);

if (Hassasiyet < 1) Duyarlılık = 1;

if (Hassasiyet > 3) Hassasiyet = 3;

dönüş(0);

}


int tanım() {

dönüş(0);

}


double sellSignal(int ai_0) {

bool li_4 = DOĞRU;

if (Hassasiyet > 2)

if (iHigh(Symbol(), Period(), ai_0 + 6) >= iHigh(Symbol(), Period(), ai_0 + 5)) li_4 = YANLIŞ;

if (Hassasiyet > 1)

if (iHigh(Symbol(), Period(), ai_0 + 5) >= iHigh(Symbol(), Period(), ai_0 + 4)) li_4 = YANLIŞ;

if (Hassasiyet > 0)

if (iHigh(Symbol(), Period(), ai_0 + 4) >= iHigh(Symbol(), Period(), ai_0 + 3)) li_4 = YANLIŞ;

eğer (li_4) {

if (iClose(Symbol(), Period(), ai_0 + 2) < iHigh(Symbol(), Period(), ai_0 + 3))

if (iClose(Symbol(), Period(), ai_0 + 1) < iLow(Symbol(), Period(), ai_0 + 3)) return (iHigh(Symbol(), Period(), ai_0 + 3) + 10.0 *Nokta);

}

dönüş(0);

}


double buySignal(int ai_0) {

bool li_4 = DOĞRU;

if (Hassasiyet > 2)

if (iLow(Symbol(), Period(), ai_0 + 6) <= iLow(Symbol(), Period(), ai_0 + 5)) li_4 = YANLIŞ;

if (Hassasiyet > 1)

if (iLow(Symbol(), Period(), ai_0 + 5) <= iLow(Symbol(), Period(), ai_0 + 4)) li_4 = YANLIŞ;

if (Hassasiyet > 0)

if (iLow(Symbol(), Period(), ai_0 + 4) <= iLow(Symbol(), Period(), ai_0 + 3)) li_4 = YANLIŞ;

eğer (li_4) {

if (iClose(Symbol(), Period(), ai_0 + 2) > iLow(Symbol(), Period(), ai_0 + 3))

if (iClose(Symbol(), Period(), ai_0 + 1) > iHigh(Symbol(), Period(), ai_0 + 3)) return (iLow(Symbol(), Period(), ai_0 + 3) - 10.0 *Nokta);

}

dönüş(0);

}


int start() {

int li_0 = IndicatorCounted();

if (li_0 < 0) (-1);

if (li_0 > 0) li_0--;

int li_4 = Çubuklar - li_0;

for (int l_count_8 = 0; l_count_8 < li_4; l_count_8++) {

g_ibuf_92[l_count_8 + 3] = buySignal(l_count_8);

g_ibuf_96[l_count_8 + 3] = sellSignal(l_count_8);

if (buySignal(l_count_8) > 0.0 || sellSignal(l_count_8) > 0.0) {

g_ibuf_100[l_count_8 + 3] = iHigh(Symbol(), Period(), l_count_8 + 3);

g_ibuf_104[l_count_8 + 3] = iLow(Symbol(), Period(), l_count_8 + 3);

}

}

dönüş(0);

}

Dosyalar:
 

Merhaba kazıcılar.

Emirlerin tarihçesinden çıkan sonucun tanımıyla bir nevi eğrilik ortaya çıkıyor.

Strateji:

Farklı yönlerde (aslında kilit) 1-2 emir kısa bir duruş ve uzun bir kârla açılır.

2-Fiyat aralıktan güvenle çıkarsa, emirlerden birinin stopunu devirir ve başka bir emirde uzun bir kar elde eder.

3-Emirlerden birinin stopu düşürüldüğü anda açılış seviyesinde bir gecikme belirlenir ve fiyatın geri gelmesi durumunda emir tekrar açılır.

ve bir sonraki harekete kadar kilit durumuna geri dönün ve kısa bir duraklamadan sonra kâr elde edin.

Görev:

3. parkur vuruşları, çünkü 4. turda Martin devreye giriyor. Sorun şu ki bir şeyler ters gidiyor. OrderProfit() geçmişinden bir siparişin karlılığını belirlerim,

ama hala OrdersHistoryTotal()'ın nasıl çalıştığını anlamıyorum. İşlev ister seri numarasına, ister siparişin nicel numarasına baksın, nasıl algıladığını da anlamıyorum.

mevduatın kaldırılması (ya bir kayıp olarak ya da hiç). Tarihte kayba ek olarak bir sürü başka şey varken, böyle bir durumda 3 ardışık kayıp tam olarak nasıl izlenir?

 
Fartarantula :

Merhaba kazıcılar.

Emir tarihinden sonucun tespiti ile bir nevi eğrilik ortaya çıkmaktadır.

Strateji:

Farklı yönlerde (aslında kilit) 1-2 emir kısa bir duruş ve uzun bir kârla açılır.

2-Fiyat aralıktan güvenle çıkarsa, emirlerden birinin stopunu devirir ve başka bir emirde uzun bir kar elde eder.

3-Emirlerden birinin stopu düşürüldüğü anda açılış seviyesinde bir gecikme belirlenir ve fiyatın geri gelmesi durumunda emir tekrar açılır.

ve bir sonraki harekete kadar kilit durumuna geri dönün ve kısa bir duraklamadan sonra kâr elde edin.

Görev:

3. parkur vuruşları, çünkü 4. turda Martin devreye giriyor. Sorun şu ki bir şeyler ters gidiyor. OrderProfit() geçmişinden bir siparişin karlılığını belirlerim,

ama hala OrdersHistoryTotal()'ın nasıl çalıştığını anlamıyorum. İşlev ister seri numarasına, ister siparişin nicel numarasına baksın, nasıl algıladığını da anlamıyorum.

mevduatın kaldırılması (ya bir kayıp olarak ya da hiç). Tarihte kayba ek olarak bir sürü başka şey varken, böyle bir durumda 3 ardışık kayıp tam olarak nasıl izlenir?

Hatırlanması gereken ilk şey, bekleyen bir siparişin kârsız olmadığı, ya işe yaradığı ya da silindiğidir.

Kayıp, piyasa emirlerine (al, sat) bakılmalıdır.

OrdersHistoryTotal(), mevcut ticaret geçmişindeki TÜM siparişlerin sayısını döndürür (görüntüleme modu "tüm geçmiş" ise hesaptan para yatırma ve çekme dahil). 0 sayısı genellikle bir hesap açtıktan sonra bakiyenin yenilenmesi, yani ilk sipariştir; number OrdersHistoryTotal()-1 - tarihteki son sipariş.

Yani, döngüdeki siparişleri sondan ilke, aynı anda gecikmeleri ve kârsız siparişleri saymak gerekir.

Ama fiyatın tekrar piyasa tarafından stop ile kapatılan ve hemen açılan emrin seviyesine ulaşmasını her zaman bekleyebilirseniz neden gecikmeler koyun? Ertelemeler - bu durumda ekstra bir bağlantı, hesapta karışıklığa neden olur.

 
Fartarantula : Strateji:

Farklı yönlerde (aslında kilit) 1-2 emir kısa bir duruş ve uzun bir kârla açılır.

2-Fiyat aralıktan güvenle çıkarsa, emirlerden birinin stopunu devirir ve başka bir emirde uzun bir kar elde eder.

Stratejinize bir programcının gözünden baktım. Fiyat yükseldiğinde ve SL Sat'a ulaştığında, SL'si ve TP'si en üstte bir yerde olacak şekilde bir Buy emri kalır. Aynı zamanda kapalı bir siparişten küçük bir kayıp almayı başardınız. Şimdi iki gecikmeli seçeneğe bakalım. İki sipariş açmak yerine, SL'nizin olduğu yerlere iki tane beklemede koyduk. Fiyat Buy Stopl'a ulaştığında alış emri açılır ve aynı pozisyon elde edilir ancak kayıp olmaz. Ve şimdi en ilginç olanı. Fiyat yükseldikçe...

 

...Ve sizin prensibinize göre fiyat yükseldikçe, TP'niz daha da arttı. Ve şu anda eylemlerimizi düşünürsek, kar elde etme şansınız benden daha az.

Ve benimle paralel ticaret yapmasanız bile, o zaman referans fiyatınız işten çıkarmalar arasında ve benimki de aslında. Ve her zaman olacak - pazara yönlü hareketin bir kısmını veriyorsunuz.

Bilmiyorsanız, o zaman talihsiz bir 2 puanlık yayılmanın bile olumlu bir sistemden kaybetmeye yol açtığını unutmayın. İlk resme bakılırsa, 5'li bir işarette yaklaşık 20 puanlık bir yayılımınız var,

çünkü aynı anda "gözle" verilen siparişler arasındaki fark, şekle göre 40 puandır.

Konu bu değil... 3 vuruşluk bir diziyi doğru bir şekilde tanımlamak için bir kod parçasına ihtiyacınız var. Neden herkes sistemi düzeltmeye çalışıyor? Ve yukarıdaki yoldaşın tekniği

da uymayacaktır. Piyasaya göre, açılmalarına izin verilmeyebilir veya gerekli olmayan yerlerde açılırlar. Lanet olsun çocuklar, hepinizi ve deneyiminizi paylaşma arzunuzu çok iyi anlıyorum. Ama sadece 3 durağı izlemem gerekiyor.

Her şey zaten merhemde, sadece iki katına çıkan yanlış sıranın geçtiğini gördüm. Görünüşe göre, Historitotal gerekli gördüğü her şeyi yayınladı ve geçmişten bir kayıpla kapalı bir sipariş belirleme döngüsü siparişi atladı.

 
Fartarantula Her şey zaten merhem üzerinde, sadece iki katına çıkan yanlış sıranın kaydığını gördüm. Görünen o ki, Historitotal gerekli gördüğü her şeyi yayınladı ve tarihten kayıpla kapalı bir sipariş belirleme döngüsü siparişi kaçırdı.

Coder'ın niteliklerinden uzaklaşmak ve programlamanın temellerini kavramak gerekir. Daha fazla ayrıntı burada... Ve burada

İşte görev. Yazarın belirttiği gibi, bu senaryoda Pazar günü aynı hesapta Historitotal'ı döndüren şey.

 void OnStart ()
{
   Alert ( "Cчет " + DoubleToStr(AccountNumber(), 0 ),
         "  Дата " , TimeToStr( TimeLocal (), TIME_DATE ),
         "  Ордеров " , OrdersHistoryTotal());
}

Neden farklı?

Bir hesap, ancak daha fazla veya daha az sipariş var mı? 0 228 228 216 98 ? Ancak daha az sipariş varsa, işleme daha hızlıdır!!!

Müşteri terliyor - çalışmak imkansız, Terminal buggy, Historitotal istediğini verdi, döngüyü aldı ve kaçırdı!

 

Hepinize iyi günler. Göstergedeki okları yükseltmeye yardımcı olun, alttakiler normaldir ve üsttekiler mumların üzerindedir.

denendi ObjectSet(Arrow_name_jack1, OBJPROP_YDISTANCE,20); İşe yaramadı. Üstteki okun (nesnenin) bağlantı noktası , nasıl yukarı hareket ettirilir?

 //display signal arrow 
      RefreshRates(); 
   
       if (   (High[i+ 1 ]  >upBuffer[i+ 1 ] ) 
         && (Close[i+ 1 ] >Open[i+ 1 ]     ) 
         && (Close[i]   <Open[i]       ) 
        )            
      {   //draw a dot on top of the bar
         string Arrow_name_jack1 = "AboveTopBand_SellBar_jack1_" + TimeToStr(Time[i], TIME_DATE | TIME_SECONDS );   //TimeCurrent()
         ObjectCreate (Arrow_name_jack1, OBJ_ARROW , 0 , Time[i], High[i]+ iATR ( NULL , 0 , 20 ,i)/ 5 ); //5*pips);  //OBJ_ARROW=22,window=0,
//???????????? так не получилось         //  ObjectSet(Arrow_name_jack1, OBJPROP_YDISTANCE,20);
            ObjectSet(Arrow_name_jack1, OBJPROP_ARROWCODE , 242           );   //159
            ObjectSet(Arrow_name_jack1, OBJPROP_COLOR ,     Yellow    );   //Magenta
            ObjectSet(Arrow_name_jack1, OBJPROP_STYLE ,     STYLE_SOLID   );
            ObjectSet(Arrow_name_jack1, OBJPROP_WIDTH ,     2             ); 
            
      }
       else
       if (   (Low[i+ 1 ]   <dnBuffer[i+ 1 ] ) 
          && (Close[i+ 1 ] <Open[i+ 1 ]     ) 
          && (Close[i]   >Open[i]       ) 
         )            
      {   //draw a dot on top of the bar
          Arrow_name_jack1 = "BelowBotBand_BuyBar_jack1_" + TimeToStr(Time[i], TIME_DATE | TIME_SECONDS ); //TimeCurrent()
         ObjectCreate (Arrow_name_jack1, OBJ_ARROW , 0 , Time[i], Low[i]- iATR ( NULL , 0 , 20 ,i)/ 5 ); //5*pips);  //OBJ_ARROW=22,window=0,
            ObjectSet(Arrow_name_jack1, OBJPROP_ARROWCODE , 241           ); //159
            ObjectSet(Arrow_name_jack1, OBJPROP_COLOR ,     Yellow   ); //Magenta
            ObjectSet(Arrow_name_jack1, OBJPROP_STYLE ,     STYLE_SOLID   );
            ObjectSet(Arrow_name_jack1, OBJPROP_WIDTH ,     2             ); 
      }
   } //end for(i = limit; i >= 0; i--)
 
mikanit :

Hepinize iyi günler. Göstergedeki okları yükseltmeye yardımcı olun, alttakiler normaldir ve üsttekiler mumların üzerindedir.

denendi ObjectSet(Arrow_name_jack1, OBJPROP_YDISTANCE,20); İşe yaramadı. Üstteki okun (nesnenin) bağlantı noktası, nasıl yukarı hareket ettirilir?

ObjectSetInteger (0, Arrow_name_jack1 , OBJPROP_ANCHOR , ANCHOR_BOTTOM );

Karışıklığı önlemek için üst ve alt okların adlarını saklamak için ayrı değişkenler kullanmanızı öneririm.

Ve evet, göstergede nesnelerle ok çizmek bir sapkınlıktır. Ayrıca gösterge tamponları da vardır:

SetIndexStyle(0,DRAW_ARROW,0,1,clrRed);

    SetIndexArrow(0,242);



Neden: