[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 445

 

Gülünç bir sorunum var. Sipariş kapatma işlevinde hata.

OrserClose ( int tip ) {
if ( tip == 1 ) {
for ( i = 0 ; i < OrdersTotal ( ) ; i + + ) {
           if ( true = = OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ) {
           if ( OrderType ( ) = = OP_BUY & & OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = Magic ) {
           OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Violet ) ;
               }
           }
         }   
}

hata veriyor (ve farklı terminallerde)

EURCHF,M5: OrderClose hatası 4107

EURCHF,M5: OrderClose işlevi için geçersiz fiyat 1.48566000


eğer yapılırsa

 OrderClose ( OrderTicket ( ) , OrderLots ( ) , OrderClosePrice ( ) , 3 , Violet ) ;
 OrderClose ( OrderTicket ( ) , OrderLots ( ) , MarketInfo ( Symbol ( ) , MODE_BID ) , 3 , Violet ) ;

aynı hata. ama ayrıca OrderClose (..) 'yi ayrı bir fonksiyonda değil de int start()'ta yazdığımda böyle bir hata oluşmuyor.

sorun nedir ve nasıl tedavi edilir?



 
döngüyü baştan sona çalıştırmayı deneyin
 for ( i = OrdersTotal ( ) - 1 ; i > 0; i -- )
 
TG >> :

Gülünç bir sorunum var. Sipariş kapatma işlevinde hata.

hata veriyor (ve farklı terminallerde)

EURCHF,M5: OrderClose hatası 4107

EURCHF,M5: OrderClose işlevi için geçersiz fiyat 1.48566000


eğer yapılırsa

aynı hata. ama ayrıca OrderClose (..) 'yi ayrı bir fonksiyonda değil de int start()'ta yazdığımda böyle bir hata oluşmuyor.

sorun nedir ve nasıl tedavi edilir?









fiyatı normalleştirmek

 

 int tick = 0 , MaxTicks = 5 ;
bool SaveTickOn = 1 ;
string bid_s ;

int start ( ) {
   if ( SaveTickOn ) {
       int rw_mode = FILE_CSV | FILE_READ | FILE_WRITE ;
       if ( tick = = 0 ) rw_mode = FILE_CSV | FILE_WRITE ;
       int handle1 = FileOpen ( "bids1.dat" , rw_mode , " " ) ;
      bid_s = DoubleToStr ( Bid , Digits ) ; 
       FileWrite ( handle1 , bid_s ) ;
       if ( GetLastError ( ) ! = 0 ) Alert ( "Error= " , GetLastError ( ) ) ;
       Alert ( tick , ": " , bid_s ) ;
      tick + + ;
       if ( tick = = MaxTicks ) SaveTickOn = 0 ; 
       FileClose ( handle1 ) ;
   }
   return ( 0 ) ;
}

Ekli bir dosyaya yazmak için basit bir kod vardır, ancak nedense bir dosyaya ekleme seçeneği

FILE_READ | FILE_WRITE 

çalışmıyor.

Ne olabilirdi?

 

Bunu başlangıca yapıştırın, her şeyi garanti ile kapatır, şartları girin yeter..

 if ( Close_ ) {
for ( int trade = OrdersTotal ( ) - 1 ; trade > = 0 ; trade - - ) {
OrderSelect ( trade , SELECT_BY_POS , MODE_TRADES ) ;
if ( OrderSymbol ( ) = = Symbol ( ) ) {
if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MagicNumber ) {

if ( (OrderType ( ) = = OP_BUY ) & & ( условие закрытия для бай )) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , slip , Blue ) ;
if ( (OrderType ( ) = = OP_SELL ) & & ( условие закрытия для селл )) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , slip , Red ) ;
}
Sleep ( 1000 ) ;
}
}
}
 
Andrei01 >> :

Ekli bir dosyaya yazmak için basit bir kod vardır, ancak nedense bir dosyaya ekleme seçeneği

çalışmıyor.

Ne olabilirdi?

Ayrıca FileIsEnding(handle1) dosyasının sonuna işaretçi işlevinin sıfır döndürdüğünü kontrol ettim, ancak 1 olmalı, yani MT4'te bir dosyaya ekleme modunda bir hata var.

 
Andrei01 писал(а) >>

Ayrıca FileIsEnding(handle1) dosyasının sonuna işaretçi işlevinin sıfır döndürdüğünü kontrol ettim, ancak 1 olmalı, yani MT4'te bir dosyaya ekleme modunda bir hata var.

Dosyanın sonuna gitmeyi denediniz mi? Dosya Arama()

 
//+------------------------------------------- --------------------+
//| Dosyaya satır yazma |
//+------------------------------------------- --------------------+
void WritingLineInFile(dize DosyaAdı, dize metni)
{
int file_handle=DosyaOpen(DosyaAdı, FILE_READ|FILE_WRITE , " ");

if (file_handle>0)
{
FileSeek(file_handle, 0, SEEK_END);
FileWrite(file_handle, metin);
FileClose(file_handle);
}

}
Hata yok, sadece doğru yazmanız gerekiyor. Bu işlev, DosyaAdı'na metin ekler.
 

Merhaba!

Kendimi programlamaya çalışıyorum!

Hangi yöne gideceğimi bulmama yardım et! acil ve hızlı bir şekilde ihtiyacınız varsa (yeni başlayanlar için)

++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++

İki MA'dan oluşan belirli bir gösterge var

İki MA'nın kesiştiği yerde " MessageBox " fonksiyonunu kullanarak ekranda bir mesaj ile bir ses sinyali oluşturmak gereklidir.

Ne yapalım?

1. Bir komut dosyası oluştur? "Mesaj Kutusu" işleviyle

2. Veya bu işlevle gösterge koduna bir koşul ekleyin?

3. Veya hazır bir komut dosyasını bir göstergeyle ilişkilendirin mi? Mümkünse nasıl bağlanır?

4. Yoksa bir Uzman Danışman oluşturmak daha mı kolay?

Eğer varsa. iki hareketli ortalamaya sahip basit bir klasik Expert Advisor'ın kaynak koduna bakalım.

(uzman koşulları...hızlı MA yavaş MA'yı aşağıdan yukarıya geçerse (veya dokunursa) satın alın

................................. hızlı MA yukarıdan aşağıya yavaş MA'yı geçtiyse (veya dokunduysa) oturdu

.................................StopLoss fonksiyonu ile

...................................TakeProfit işleviyle

................................. Lot fonksiyonu ile

Teşekkür ederim!

 
DRevodel писал(а) >>

Merhaba!

Kendimi programlamaya çalışıyorum!

Hangi yöne gideceğimi bulmama yardım et! acil ve hızlı bir şekilde ihtiyacınız varsa (yeni başlayanlar için)

İki MA'dan oluşan belirli bir gösterge var

"Mesaj Kutusu" işlevini kullanarak ekranda bir mesajla iki MA'nın kesiştiği yerde bir ses sinyali oluşturmak gerekir.

Ne yapalım?

2. Veya bu işlevle gösterge koduna bir koşul ekleyin?

Teşekkür ederim!