Kodlama yardımı - sayfa 701

 
AtApi :

Merhaba arkadaşlar ve kod guruları,

bir CSV dosyasından kendi değerlerini çizen basit bir gösterge arıyorum. Birisi lütfen bana yardım edebilir mi?

Şimdiden teşekkürler!

"Kendi değeri" ne anlama geliyor?
 
mladen :
"Kendi değeri" ne anlama geliyor?

teşekkürler mladen,

biraz daha iyi açıklayayım: CVS dosyasından okuyan ve değerleri bir alt pencerede çizen bir göstergeye ihtiyacım var, CVS virgülle ayrılmış 2 değere sahip olacak, ilk değer tarih ve ikincisi gerçek değer göstergenin çizilmesi gerektiğini.

örneğin

CVS şöyle görünür:

date,value
2016.10.26.05.55,126.845
2016.10.26.05.50,126.848
2016.10.26.05.45,126.844
2016.10.26.05.40,126.82
2016.10.26.05.35,126.816
2016.10.26.05.30,126.81

gösterge değeri tarihe göre çizecektir

umarım şimdi biraz daha açıktır..

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

 

Sevgili arkadaşım,

kodlamaya ihtiyacım var,

mum kapanır, eğer mum YUKARI ise, o zaman YUKARI uyarır ve mum AŞAĞI ise, herhangi bir zaman diliminde AŞAĞI uyarır

varsa lütfen benimle paylaşın,

şimdiden teşekkürler,

- şaka yapmak

 
AtApi:

teşekkürler mladen,

biraz daha iyi açıklayayım: CVS dosyasından okuyan ve değerleri bir alt pencerede çizen bir göstergeye ihtiyacım var, CVS virgülle ayrılmış 2 değere sahip olacak, ilk değer tarih ve ikincisi gerçek değer göstergenin çizilmesi gerektiğini.

örneğin

CVS şöyle görünür:

Zaman değeri

2016.10.26.21.20,127.765

2016.10.26.21.15.127.777

2016.10.26.21.10.127.777

2016.10.26.21.05,127.799

2016.10.26.21.00,127.791

2016.10.26.20.55,127.788

gösterge, değeri tarihe göre çizecektir

umarım şimdi biraz daha açıktır..

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

Şimdiye kadar başardığım şey bu:

 extern    string    FileName    = "AUDCAD.CSV" ;
datetime    dt[ 9999 ];
double      val[ 9999 ];

string      arr[ 2 ];    

int h = FileOpen (FileName, FILE_CSV | FILE_READ , '~' );
   if (h== 0 )   Comment ( "File " +FileName+ " not found." );

  
   for ( int c= 0 ; ! FileIsEnding (h) && c< 9999 ; c++)  {

  
     string tmp = FileReadString (h);
     if ( FileIsEnding (h))   break ;
    StrToStringArray(tmp,arr, "," );
    dt[c]  = StrToTime (arr[ 0 ]);   // <==== This should convert the date value (in the format of "yyyy.mm.dd hh:mi") to datatime type and assign it to the array
    val[c] = StrToNumber(arr[ 1 ]); // <==== This will assign the value to the array
   

  }
   FileClose (h);

//+------------------------------------------------------------------+
void StrToStringArray( string str, string &a[], string delim= "," )  {
//+------------------------------------------------------------------+
   int z1=- 1 , z2= 0 ;
   for ( int i= 0 ; i< ArraySize (a); i++)  {
    z2 = StringFind (str,delim,z1+ 1 );
    a[i] = StringSubstr (str,z1+ 1 ,z2-z1- 1 );
     if (z2 >= StringLen (str)- 1 )   break ;
    z1 = z2;
    
  }
}
//+------------------------------------------------------------------+
double StrToNumber( string str)  {
//+------------------------------------------------------------------+
// Usage: strips all non-numeric characters out of a string
   int     dp   = - 1 ;
   int     sgn  = 1 ;
   double num  = 0.0 ;
   for ( int i= 0 ; i< StringLen (str); i++)  {
     string s = StringSubstr (str,i, 1 );
     if (s == "-" )  sgn = -sgn;   else
     if (s == "." )  dp = 0 ;       else
     if (s >= "0" && s <= "9" )  {
       if (dp >= 0 )  dp++;
       if (dp > 0 )
        num = num + StrToInteger (s) / MathPow ( 10 ,dp);
       else
        num = num * 10 + StrToInteger (s);
    }
  }
   return (num*sgn);
}
Neden dt[c] yazdırırsam hep aynı değeri döndürdüğünden emin değilim.. döngünün her yinelemesinde arr[0] değişse bile zaman asla değişmez gibi..
 bundan sonra o zamanla bara değeri atamalıyız..ama takıldım..

	          
 
AtApi :
AtApi:

teşekkürler mladen,

biraz daha iyi açıklayayım: CVS dosyasından okuyan ve değerleri bir alt pencerede çizen bir göstergeye ihtiyacım var, CVS virgülle ayrılmış 2 değere sahip olacak, ilk değer tarih ve ikincisi gerçek değer göstergenin çizilmesi gerektiğini.

örneğin

CVS şöyle görünür:

Zaman değeri

2016.10.26.21.20,127.765

2016.10.26.21.15.127.777

2016.10.26.21.10.127.777

2016.10.26.21.05,127.799

2016.10.26.21.00,127.791

2016.10.26.20.55,127.788

gösterge değeri tarihe göre çizecektir

umarım şimdi biraz daha açıktır..

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

Şimdiye kadar başardığım şey bu:

Sorunu çözdüğümü boşver... SrtToTime yalnızca şu biçimdeki dizeyi kabul ediyor: "yyyy.mm.dd hh:mi" bu, "yyyy.mm.dd hh.mi" yerine bu biçimde bir CSV yüklediğim anlamına geliyor " ve belli ki bana bir hata veriyordu.. neyse çözdüm!!
 

merhaba

bay mladen:

yeni mt4 yapısı için güncelleyebilir

saygılarımla

Dosyalar:
 

Lütfen birileri bu 3 sorunu çözmeme yardım edebilir mi?

1. takip eden hatayı düzeltin

2. ikinci zaman çerçevesi filtresini kaldırın , sistem 30m sohbette çalışacaktır

3. ekli göstergeyi 1D sohbette bir filtre olarak ekleyin

 

@Sevgili arkadaşlar,

Benim ea aşağıdaki hatayı veriyor.

" EURUSD+,M5: OrderDelete işlevi için bilinmeyen bilet 21847676 "

Bu cümle ne anlama geliyor? Sorun nedir ve ne yapabilirim?

 
oguz :

@Sevgili arkadaşlar,

Benim ea aşağıdaki sorunu veriyor.

" EURUSD+,M5: StringConcatenate(işlev) için bilinmeyen bilet 21847676

Bu cümle ne anlama geliyor? Sorun nedir?

Ne yapabilirim?

Silebileceği 21847676 bilet numaralı siparişi bulamadığı anlamına gelir.

Herhangi biri :

  • bilet numarası yanlış
  • veya sipariş bu arada zaten silindi (iki EA veya döngü doğru şekilde kontrol edilmedi veya benzer bir şey ...)
 

merhaba bay mladen

Bu göstergeyi bu resme benzer MTF ayrı grafiğine koymaya yardımcı olabilir misiniz?

saygınlık

Dosyalar:
xb4d_2.mq4  4 kb