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

 
Zhunko :

Neyin açıklaması? Açıklama ile ne kastedilmektedir? Her şey orada.

Başlık dosyasındaki işlevlerin açıklaması. Test komut dosyasında kullanım örnekleri.


Sor, gördüm. görmüştü
 

Merhaba. Lütfen EA kodunu düzeltmeme yardım edin. Koddaki problem şu şekildedir: Eğer kodda fiyat > veya = belirtilen seviyelerde yazılırsa, o zaman bir anlaşma açılır. Çünkü fiyat istediği kadar olabilir > sırasıyla bu seviyeler, danışman bir sürü anlaşma açar.

Koddan ">" sembolünü kaldırıp sadece "=" bırakmak istiyorum. ">" sembolünü kendim kaldırıyorum fakat derleme sırasında çok fazla hata oluyor. YARDIM.

 
// < 0 - Dn
// > 0 - Up
int Signal()
{
double RSI = iRSI ( NULL , 15 ,RSIperiod,RSI_price,SignalBar);
double Stoch = iStochastic ( NULL , 15 ,Stoch_K,Stoch_D,Stoch_slowing,Stoch_method,Stoch_price,Stoch_mode,SignalBar);
double CCI = iCCI ( NULL , 15 ,CCI_period,CCI_price,SignalBar);

double MA2 = iMA ( NULL , 15 ,ma2_period,ma2_shift,ma2_method,ma2_price,SignalBar);
double IchiA = iIchimoku ( NULL , 15 , tenkan, kijun, senkou_span_b, 3 , SignalBar);
double IchiB = iIchimoku ( NULL , 15 , tenkan, kijun, senkou_span_b, 4 , SignalBar); 

     if (GO && SignalType_1 && RSI >= 65 && Stoch >= 80 && CCI >= 100 ) {GO=false; return (+ 1 );} //запретить повторный вход (+1);
     if (GO && SignalType_2 && Bid >= MA2 && RSI >= 65 && Stoch >= 80 && CCI>= 100 ) {GO=false; return (+ 1 );} //запретить повторный вход return(+1);
     if (GO && SignalType_3 && Bid >= IchiA && RSI >= 65 && Stoch >= 80 && CCI>= 100 ) {GO=false; return (+ 1 );} //запретить повторный вход (+1);
    
   
    
     if (GO && SignalType_1 && RSI <= 35 && Stoch <= 20 && CCI <= - 100 ) {GO=false; return (- 1 );} //запретить повторный вход (-1);
     if (GO && SignalType_2 && Ask <= MA2 && RSI <= 35 && Stoch <= 20 && CCI <= - 100 ) {GO=false; return (- 1 );} //запретить повторный вход (-1);
     if (GO && SignalType_3 && Ask <= IchiB && RSI <= 35 && Stoch <= 20 && CCI <= - 100 ) {GO=false; return (- 1 );} //запретить повторный вход (-1);
    
     if ( OrdersTotal ()== 0 )GO=true;
    
     return ( 0 );
}


Bu kodun bir parçası, kodun tamamına ihtiyacınız varsa, gönderirim.

Şimdiden teşekkürler.
 

Durumu kontrol etmeden önce çizgiyi koyun

if( OrdersTotal() >0)return(0);

Bir kez daha yakından baktım, anladım - kod senin değil ve nasıl düzelteceğin hakkında hiçbir fikrin yok. Kodda zaten her şeye sahipsiniz, siparişleri verdiği yeri ve neden GO değişkenini görmezden geldiğini arayın.

 
Roger :

Durumu kontrol etmeden önce çizgiyi koyun

if(OrdersTotal()>0)return(0);

Bir kez daha yakından baktım, anladım - kod senin değil ve nasıl düzelteceğin hakkında hiçbir fikrin yok. Kodda zaten her şeye sahipsiniz, siparişleri verdiği yeri ve neden GO değişkenini görmezden geldiğini arayın.

Kod bana ait değil ama benim iş tanımıma göre yazılmış ve nasıl düzeltileceği hakkında hiçbir fikrim yok, o yüzden başvurdum. Cevap için teşekkürler
 

Tünaydın.

Söyle bana, lütfen (kişisel olarak yapabilirsin), DC'nin hafta sonları tekliflerin gittiği yer.

 

Merhaba! Yardıma ihtiyacım var. Hata nerede anlamadım.

Konu şu. Zaman içinde bir referans noktası belirledik, diyelim ki 29.10.2012 00:00. Bir dizi oluşturuyoruz ve içine referans noktasından mevcut ana kadar olan değerleri koyuyoruz. Ardından, belirlediğim fiyat sapması koşullarını kontrol ediyoruz. Sapmalara ulaşırsak ==10. Bir mesaj görüntüler ve noktayı önceden ayarlanan noktadan 2 gün ileriye kaydırırız. Ve işlemi tekrarlıyoruz. Sorun şu ki, aşağıdaki dizi sürekli yenilenmeli, diyelim ki 10/29/2012 00:00 noktasından itibaren yeterli değere sahip değiliz ve her yeni oluşan dakika çubuğunun içine yerleştirilip kontrol edilmesi ve referans noktasının yapılması gerekiyor. koşullar == 10 kez eşleşene kadar kaydırma yapmayın. AMA nedense her tikte değerleri yeniden başlangıç noktasından hesaplamaya başlıyor!!!

Sorunu çözmeye yardım edin! YARDIMLARINIZ İÇİN HEPİNİZE TEŞEKKÜR EDERİZ!!!

 //-----------------------------------------------------------------------------------------------------------------------------------
datetime Tochka_History = D'2012.10.10 17:30' ;           
double d[];                                            
double a;                                                 
int i;                                                   
int r= 0 ;                                                 
int j= 0 ;                                                  
int c= 0 ;                                                    
datetime time;                                              
int bars;                                                   
string l;
//-----------------------------------------------------------------------------------------------------------------------------------
int start(){
if (j== 0 ){
l= TimeToStr (Tochka_History,TIME_DATE|TIME_MINUTES);
Alert ( "Точка отсчета - " ,l, "; Счетчик c - " ,c);                                                                          
if ( TimeCurrent ()>=Tochka_History){                                                                                   
bars= iBarShift ( NULL , PERIOD_M1 ,Tochka_History,false);                                                                 
time= iTime ( NULL , PERIOD_M1 ,i);                                                                                                                                            
ArrayResize (d,bars);                                                                                                 
for (i=bars;i> 0 ;i--) d[i]=( iHigh ( NULL , PERIOD_M1 ,i)+ iLow ( NULL , PERIOD_M1 ,i))/ 2 ;                                        
for (i=bars;i> 0 ;i--) Uslovie();}}}                                                                                     
//-----------------------------------------------------------------------------------------------------------------------------------
void Uslovie(){
if (r== 0 ){a=d[i];r= 1 ;}
if (a+ 10 * Point <=d[i] && r== 1 ){r= 0 ; c=c+ 1 ; Alert ( "Счетчик c - " ,c);}
if (c== 10 ){ Alert ( "Значение С достигло 10" ); j= 1 ; Smeshenie();}}
//-----------------------------------------------------------------------------------------------------------------------------------
void Smeshenie(){
Tochka_History=Tochka_History+ 2 * 24 * 60 * 60 ;
l= TimeToStr (Tochka_History,TIME_DATE|TIME_MINUTES);
Alert ( "Новая точка отсчета времени - " ,l);
if ( TimeDayOfWeek (Tochka_History)== 6 || TimeDayOfWeek (Tochka_History)== 0 ){
Tochka_History=Tochka_History+ 1 * 24 * 60 * 60 ;
l= TimeToStr (Tochka_History,TIME_DATE|TIME_MINUTES);
Alert ( "Новая точка отсчета времени, если выпали выходные - " ,l);} j= 0 ;}
//-----------------------------------------------------------------------------------------------------------------------------------
 
merkulov.artem :

Merhaba! Yardıma ihtiyacım var. Hata nerede anlamadım.

Konu şu. Zaman içinde bir referans noktası belirledik, diyelim ki 29.10.2012 00:00. Bir dizi oluşturuyoruz ve içine referans noktasından mevcut ana kadar olan değerleri koyuyoruz. Ardından, belirlediğim fiyat sapması koşullarını kontrol ediyoruz. Sapmalara ulaşırsak ==10. Bir mesaj görüntüler ve noktayı önceden ayarlanan noktadan 2 gün ileriye kaydırırız. Ve işlemi tekrarlıyoruz. Sorun şu ki, aşağıdaki dizi sürekli yenilenmeli, diyelim ki 10/29/2012 00:00 noktasından itibaren yeterli değere sahip değiliz ve her yeni oluşan dakika çubuğu içine yerleştirilip kontrol edilmeli ve referans noktası yapılmalı. koşullar == 10 kez eşleşene kadar kaydırma yapmayın. AMA nedense her tikte değerleri yeniden başlangıç noktasından hesaplamaya başlıyor!!!

Sorunu çözmeye yardım edin! YARDIMLARINIZ İÇİN HEPİNİZE TEŞEKKÜRLER!!!

Üçüncü kez isteğinizi görüyorum ve kimse cevap vermiyor, sence neden? Muhtemelen insanlar ondan ne istediklerini anlamıyorlar.

Sapmalara ulaşırsak ==10. Bir mesaj gösteriyoruz ve noktayı önceden ayarlanmış olandan 2 gün ileriye kaydırıyoruz .... ANCAK nedense her tikte değerleri yeniden başlangıç noktasından hesaplamaya başlıyor!!!

Evet, çünkü kodunuz nereden başlayacağınızı kontrol etmez. Bu yüzden her seferinde başlangıç noktasından başlar. 10'luk bir sapma olup olmadığını ve noktanın gerçekten 2 gün değişip değişmediğini baskıyla kontrol edin. 10'luk bir sapma varsa ve aynı zamanda nokta 2 gün kaydırılırsa, bir sonraki kene üzerindeki başlangıç noktasını hesaplamadan önce, gerçekten hesaplanması gerekip gerekmediğini veya zaten hesaplanıp hesaplanmadığını kontrol etmeniz gerekir. hesaplandı.

Gerçeği elde etmek için karmaşık bir yolunuz var. İnsanlara sorunun kendisini formüle ederseniz, size daha basit bir çözüm yolu anlatacaklarından eminim.

not

Bir sorunun tüm çözümleri arasında en basitini bulmak her zaman en zorudur, çünkü onu bulmak için yeniden çalışmanız ve bir sürü çöpü ayıklamanız gerekir. Bu yüzden formüle etmekten çekinmeyin - basit bir çözüm, hızlı bir çözüm anlamına gelmez. Belki buradaki insanlar seni 1 günden fazla kurtarır.

 

Güzel gün!!! Soru, delirmek için süper kandırmaca. Kodda doğru yere ulaştığında test cihazı nasıl durdurulur? Kılavuzda böyle bir şey göremiyorum. Hiç var olmamış olamaz ve işlevi değerli olurdu!

2. iCustom işlevinin davranışı. Gerçek hayatta, işlev sürekli olarak çıktı -1 aracılığıyla verir (bu durumlar dışında, karşılık gelen arabellek zikzak açılarıdır). Ve test cihazında her şeyi 0 görüyorum. Neden böyle bir fark var?

 double strela1 = iCustom ( NULL , taymfreym, "индикатор" , 2 , 1 );
             double strela2 = iCustom ( NULL , taymfreym, "индикатор" , 3 , 1 );
            
             int BUY= 0 ,SELL= 0 ; int ticket; 
             Print (   " strela1 " , strela1 , "   strela2  " , strela2 );


 
Dimka-novitsek :
Güzel gün!!! Soru, delirmek için süper kandırıcı. Kodda doğru yere ulaştığında test cihazı nasıl durdurulur? Kılavuzda böyle bir şey göremiyorum. Hiç var olmamış olamaz ve işlevi değerli olurdu!

ona bir "Duraklat / Ara" düğmesine basın

nasıl gönderilir - makaleyi arayın.

 
Teşekkür ederim! Hemen bakacağım!