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

 
AlexeyVik :

Ve evet, hala kafa karışıklığı var. N, datetime türündeyse, D' 19:00 ' bir metin biçimidir. Onları karşılaştırmak mümkün mü? Numara. Zaman karşılaştırması durumunda yazarım

D'19:00', değişmez bir tarih saat sabitidir.
 

Sevgili programcılar, lütfen bana Rusça olarak geçmiş gösterge okumalarını bir kodla nasıl arayacağınızı açıklayın. Örneğin, satarken, sıfır çubuğundan 3 yüksek ZigZaga'da veya sekizinci üst fraktalın üzerinde bir stop loss ayarlamam gerekiyor.

 
Petiyashaket :

Sevgili programcılar, lütfen bana Rusça olarak geçmiş gösterge okumalarını bir kodla nasıl arayacağınızı açıklayın. Örneğin, satarken, sıfır çubuğundan 3 yüksek ZigZaga'da veya sekizinci üst fraktalın üzerinde bir stop loss ayarlamam gerekiyor.

Sıfır çubuğundan grafiğin başına geçiş yapın, int x=0. Döngüdeki gerekli göstergeyi, örneğin bir fraktal olarak adlandırın. Değer boş değilse, x'e bir ekleyin, x istenen değere ulaştığında - döngü yinelemesini hatırlayın ve döngüden çıkın, yineleme değeri teorik olarak istenen fraktalın bulunduğu çubuğun sayısıdır. Teorik olarak, çünkü M1 üzerinde çalışan döngü sırasında bir yeni çubuk daha görünebilir, o zaman ayy, işaretçi yanlış çubukta olacaktır)))
 
evillive :
Sıfır çubuğundan grafiğin başına geçiş yapın, int x=0. Döngüdeki gerekli göstergeyi, örneğin bir fraktal olarak adlandırın. Değer boş değilse, x'e bir ekleyin, x istenen değere ulaştığında - döngü yinelemesini hatırlayın ve döngüden çıkın, yineleme değeri teorik olarak istenen fraktalın bulunduğu çubuğun sayısıdır. Teorik olarak, çünkü M1 üzerinde çalışan döngü sırasında bir yeni çubuk daha görünebilir, o zaman ayy, işaretçi yanlış çubukta olacaktır)))
Zamandan tasarruf etmemiz gerekiyor. Ve son fraktalların oluşum zamanını saklayan bir dizi kullanmak daha iyidir. Gereksiz döngülerin başarısız olması nedeniyle işin hızı düşecektir.
 
Petiyashaket :

Sevgili programcılar, lütfen bana Rusça olarak geçmiş gösterge okumalarını bir kodla nasıl arayacağınızı açıklayın. Örneğin, satarken, sıfır çubuğundan 3 yüksek ZigZaga'da veya sekizinci üst fraktalın üzerinde bir stop loss ayarlamam gerekiyor.

"Rus dili" ve "programlama dili" (kodlu bir açıklama istiyorsanız) aynı şey değildir.

Algoritmik olarak ise:

1) Bir "fraktal noktası" yoksa, ilgilenilen ZigZag'ın hangi değeri döndürdüğünü belirleyin - BOŞ_DEĞER veya 0.0 olabilir.

2) Döngüdeki iCustom() aracılığıyla, döngüde kontrol edilen çubuktaki karşılık gelen arabellek göstergesinin değerini alın ve "boş değerden" farkı kontrol edin, bu farklılıkların bir sayacını tutun. Sizin durumunuzda sayaç 3'e eşit olduğunda - bu çubuğun sayısı (N) istenen çubuk olacaktır;

3) Yüksek[N]\Düşük[N] - istenen seviye olacaktır.

Standart bir ZigZag High için şunun gibi bir şey arıyoruz:

 #define ZZ_NULL   0.0

     uint li_N = 0 , li_Bar = 1 ;
     double ld_ZZ = 0 .;
//----
     while (li_Bar < Bars - 1 )
    {
        ld_ZZ = iCustom ( _Symbol , _Period , "ZigZag" , /* внешние параметры индикатора */ , 1 , li_Bar);
         if (ld_ZZ != ZZ_NULL)
        {
            li_N++;
             if (li_N >= 3 ) break ;
        }
        li_Bar++;
    }
     double ld_Price = High[li_Bar];

ancak bundan önce, ZigZag kodunda görüntülenen arabellek sayısını 1'den 3'e değiştirmeniz gerekir:

 #property indicator_buffers 3
 

cevaplar için teşekkürler, onlara geri döneceğim :) şimdi sorun şu ki

http://clip2net.com/s/j7xvk9

Siparişi neden değiştirmediğini anlayamıyorum, ama aptalca yeni mevduatlar açıyor

 
Petiyashaket :

cevaplar için teşekkürler, onlara geri döneceğim :) şimdi sorun şu ki

http://clip2net.com/s/j7xvk9

Siparişi neden değiştirmediğini anlayamıyorum, ama aptalca yeni mevduatlar açıyor

 
evillive : gösterdiğin için teşekkürler :)
   double Up= iFractals ( Symbol (), 0 ,MODE_UPPER, 3 );           //верхний фрактал
   double Down= iFractals ( Symbol (), 0 ,MODE_LOWER, 3 );         //нижний фрактал
//----
   if (Up> 0 &&Down== 0 &&Volume[ 0 ]< 2 ) //если верхний есть а нижнего нет то:
    {
     if ((High[ 3 ]+ 5 * Point -Ask)/ Point >MarketInfo( Symbol (),MODE_STOPLEVEL)) //если цена позволяет выставить отложенный ордер то:
     OrderSend ( Symbol (),OP_BUYSTOP,Lot,High[ 3 ]+ 5 * Point , 20 ,High[ 3 ]-sl,High[ 3 ]+tp, NULL ,Magic, 0 ,Green); // то выставляем байстоп на 5 пунктов выше верхнего фрактала
        {
         for ( int pos= 0 ;pos< OrdersTotal ();pos++) //     скопировал эту строчку хз откуда ибо не понимаю грёбаный счетчик :) тут видимо и косяк
         OrderSelect (pos,SELECT_BY_POS,MODE_TRADES); // ищем текущие ордера
         if (OrderMagicNumber()==Magic&&OrderSymbol()== Symbol ()&&OrderType()==OP_BUYSTOP) // и если все условия совпадают то:
          {
          OrderModify(OrderTicket(),Up+ 5 * Point ,Up-sl,Up+tp, 0 ,CLR_NONE); //переносим байстоп на новый верхний фрактал
          }


 
Petiyashaket :
gösterdiğin için teşekkürler :)
Değiştirirken günlükteki bir şeyden şikayet ediyor musunuz? "Aptalca yeni gecikmeler açar" çünkü kısıtlama yoktur, ancak OrderSend vardır.
 
Petiyashaket :

1) Herhangi bir strateji, aynı anda açık olan siparişlerin sayısına göre belirlenmelidir. Buna göre, bir sonraki siparişi açmadan önce, kaç tanesinin zaten açık olduğunu kontrol etmeniz gerekiyor.

2) Bir çubuk sırasıyla aynı anda UPPER ve LOWER fraktallara sahip olamaz, kontrol edin

     if (Up > 0 && Down == 0 )

programcı aptallığı kategorisine aittir.

3) Tampon göstergelerinin değerlerinin döndürülmesi için koşullar yazmadan önce, bunun için hangi değerin "boş" olduğunu tam olarak bilmeniz gerekiyor mu? 0'ı kontrol ettin mi?

4) İnşaat

     if (Volume[ 0 ] > 2 )

işe yarayacak olsa da (çoğu durumda), çağrılması daha kolaydır - geliştiricinin "ücretsiz icadı" olduğu ve tüccarın çalışması için bilgilendirici olmadığı için doğal değildir. Alternatif, yeni bir çubuğu izlemektir.

5) Temel bilgilerle başlamalıyız, çünkü:

     OrderSend ( Symbol (),OP_BUYSTOP,Lot,High[ 3 ]+ 5 * Point , 20 ,High[ 3 ]-sl,High[ 3 ]+tp, NULL ,Magic, 0 ,Green); // то выставляем байстоп на 5 пунктов выше верхнего фрактала
        {

ne yazdığını hiç anlamadığını söylüyor.

Anlamanın en iyi yolu, başkalarının kodlarını incelemek ve bunları kendi amaçlarınız için değiştirmektir. İyi şanlar.