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

 

Hata nerede, bilmiyorum.

Op.

Dosyalar:
5system2.mq4  8 kb
 
CJIeCaPb :

Hata nerede, bilmiyorum.

Op.

while(O==3) döngüsünde bir sorun var

 
CJIeCaPb :

while(O==3) döngüsünde yanlış bir şey var

Phew ... Her şey anlaşıldı. Kapattıktan sonra bilet silinir ve siparişin yeniden sıralanması gerekir.
 
Merhaba! Sorun şu ki dosyayı açamıyorum . Farklı dosya uzantıları denedim, işe yaramaz, sadece 5004 hatası veriyor. Dosya, dosya sanal alanında. Her şey sapla ilgili, ama neden olduğu hakkında hiçbir fikrim yok. İşte kod:
   int filehandle= FileOpen ( "test.txt" , FILE_TXT | FILE_WRITE , ";" );
   if (filehandle< 0 )
   Alert("ошибка ",GetLastError());                          //Для проверки handle

 
 int filehandle=FileOpen("test.txt",FILE_WRITE|FILE_TXT,";");
 
evillive :
Ayırıcı olmadan denendi - işe yaramaz.
 
Kapizdo4ka :
Merhaba! Sorun şu ki dosyayı açamıyorum. Farklı dosya uzantıları denedim, işe yaramaz, sadece 5004 hatası veriyor. Dosya, dosya sanal alanında. Her şey tutamakla ilgili, ama neden olduğu hakkında hiçbir fikrim yok. İşte kod:

Dosyanın paylaşılan bir klasörde olduğunu belirtmeye çalışmadı

Dosya açma bayrakları

Dosya ile çalışma modunu belirleyen bayrakların değerleri. Bayraklar şu şekilde tanımlanır:

tanımlayıcı

Anlam

Tanım

FILE_READ

1

Dosya okumak için açılır. Bayrak, dosyaları açarken kullanılır ( FileOpen() ). Bir dosyayı açarken, FILE_WRITE bayrağı ve/veya FILE_READ bayrağı belirtilmelidir.

FILE_WRITE

2

Dosya yazmak için açılır. Bayrak, dosyaları açarken kullanılır ( FileOpen() ). Bir dosyayı açarken, FILE_WRITE bayrağı ve/veya FILE_READ bayrağı belirtilmelidir.

FILE_BIN

4

İkili okuma-yazma modu (dizeden dizeye dönüşüm yok). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_CSV

sekiz

csv dosyası (kaydedilen tüm öğeler, uygun türde, unicode veya ansi'de dizelere dönüştürülür ve bir sınırlayıcı ile ayrılır). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_TXT

on altı

Basit bir metin dosyası (aynı csv, ancak sınırlayıcı dikkate alınmaz). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_ANSI

32

ANSI türü dizeler (tek baytlık karakterler). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_UNICODE

64

UNICODE türündeki dizeler (çift baytlık karakterler). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_SHARE_READ

128

Birkaç programdan okumak için paylaşılan erişim. Bayrak, dosyaları açarken kullanılır ( FileOpen() ), ancak bir dosyayı açarken FILE_WRITE ve/veya FILE_READ bayrağını belirtme ihtiyacının yerini almaz

FILE_SHARE_WRITE

256

Birden çok program tarafından paylaşılan yazma erişimi. Bayrak, dosyaları açarken kullanılır ( FileOpen() ), ancak bir dosyayı açarken FILE_WRITE ve/veya FILE_READ bayrağını belirtme ihtiyacının yerini almaz

FILE_REWRITE

512

FileCopy() ve FileMove() işlevleriyle bir dosyanın üzerine yazma yeteneği. Dosya var olmalı veya yazılmak üzere açılmalıdır. Aksi takdirde dosya açılmayacaktır.

FILE_COMMON

4096

Tüm istemci terminallerinin ortak klasöründeki dosya konumu \Terminal\Common\Files . Bayrak, dosyaları açarken ( FileOpen() ), dosyaları kopyalarken ( FileCopy() , FileMove() ) ve dosyaların varlığını kontrol ederken ( FileIsExist() ) kullanılır.

Bir dosya açılırken bir veya daha fazla bayrak belirtilebilir, bu kombinasyona bayrak kombinasyonu denir. Bayrakların kombinasyonu, numaralandırılmış bayraklar arasına yerleştirilen mantıksal VEYA operatörü (|) kullanılarak yazılır. Örneğin, aynı anda hem okumak hem de yazmak için bir CSV dosyasını açmak için FILE_READ|FILE_WRITE|FILE_CSV kombinasyonunu belirleyebilirsiniz.

 
Vinin :

Dosyanın paylaşılan bir klasörde olduğunu belirtmeye çalışmadı

Dosya açma bayrakları

Dosya ile çalışma modunu belirleyen bayrakların değerleri. Bayraklar şu şekilde tanımlanır:

tanımlayıcı

Anlam

Tanım

FILE_READ

1

Dosya okumak için açılır. Bayrak, dosyaları açarken kullanılır ( FileOpen() ). Bir dosyayı açarken, FILE_WRITE bayrağı ve/veya FILE_READ bayrağı belirtilmelidir.

FILE_WRITE

2

Dosya yazmak için açılır. Bayrak, dosyaları açarken kullanılır ( FileOpen() ). Bir dosyayı açarken, FILE_WRITE bayrağı ve/veya FILE_READ bayrağı belirtilmelidir.

FILE_BIN

4

İkili okuma-yazma modu (dizeden dizeye dönüşüm yok). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_CSV

sekiz

csv dosyası (tüm yazılı öğeler, uygun türde, unicode veya ansi dizelerine dönüştürülür ve bir sınırlayıcı ile ayrılır). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_TXT

on altı

Basit bir metin dosyası (csv ile aynıdır, ancak sınırlayıcı dikkate alınmaz). Bayrak, dosyaları açarken kullanılır ( FileOpen() )

FILE_ANSI

32

ANSI türü dizeler (tek baytlık karakterler). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_UNICODE

64

UNICODE türündeki dizeler (iki baytlık karakterler). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_SHARE_READ

128

Birkaç programdan okumak için paylaşılan erişim. Bayrak, dosyaları açarken kullanılır ( FileOpen() ), ancak bir dosyayı açarken FILE_WRITE ve/veya FILE_READ bayrağını belirtme ihtiyacının yerini almaz

FILE_SHARE_WRITE

256

Birden çok program tarafından paylaşılan yazma erişimi. Bayrak, dosyaları açarken kullanılır ( FileOpen() ), ancak bir dosyayı açarken FILE_WRITE ve/veya FILE_READ bayrağını belirtme ihtiyacının yerini almaz

FILE_REWRITE

512

FileCopy() ve FileMove() işlevleriyle bir dosyanın üzerine yazma yeteneği. Dosya var olmalı veya yazılmak üzere açılmalıdır. Aksi takdirde dosya açılmayacaktır.

FILE_COMMON

4096

Tüm istemci terminallerinin ortak klasöründeki dosya konumu \Terminal\Common\Files . Bayrak, dosyaları açarken ( FileOpen() ), dosyaları kopyalarken ( FileCopy() , FileMove() ) ve dosyaların varlığını kontrol ederken ( FileIsExist() ) kullanılır.

Bir dosyayı açarken bir veya daha fazla bayrak belirtebilirsiniz, bu kombinasyona bayrak kombinasyonu denir. Bayrakların kombinasyonu, numaralandırılmış bayraklar arasına yerleştirilen mantıksal VEYA operatörü (|) kullanılarak yazılır. Örneğin, okuma ve yazma amacıyla aynı anda CSV formatında bir dosyayı açmak için FILE_READ|FILE_WRITE|FILE_CSV kombinasyonunu belirleyebilirsiniz.

Teşekkür ederim! Ancak, cevabın çok daha basit olduğu ortaya çıktı. Hepsi yeni yapıdaki değişiklikler yüzünden. Şimdi, FileOpen işlevi için, önceki sürümde olduğu gibi int değil, uint türünü belirtmeniz gerektiği ortaya çıktı. Bunun gibi:
 uint filehandle= FileOpen (filename, FILE_TXT || FILE_WRITE , "\r\n" );

Ve şimdi bir hata durumunda işlev -1 değil, 0 döndürür.

 

Basit bir Trelling Durağı çizdi. bez_Level - Puan cinsinden zorlu başlangıç seviyesi. TrallStep - trolleme adımı. Büyü - büyü sayısı.

Sorun şu ki, EA birkaç sipariş açtığında, yalnızca ilki tetikleniyor. Ve birinci sıra kapandığında ikincisi titremeye başlar. Hatalar yazmıyor... Neyi yanlış yaptığımı anlayamıyorum. Teşekkürler...

int lim=SiparişToplam()-1;

for(int i=lim; i>=0; i--)
{
if(bez_Level>0)
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_SEL)
{
if((OrderOpenPrice()-Ask)>(Point*bez_Level))
{
if((OrderStopLoss()>(Ask+Point*bez_Level)+(Point*TrallStep)) || (OrderStopLoss()==0))
{
//--- sırayı değiştir ve çık
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*bez_Level,OrderTakeProfit(),0))
Print("Trolling Error", GetLastError() );
}
}
}
if(OrderType()==OP_BUY)
{
if((Bid-OrderOpenPrice()>Point*bez_Level))
{
if(OrderStopLoss()<Bid-(Point*bez_Level)-(Point*TrallStep))
{
//--- sırayı değiştir
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*bez_Level,OrderTakeProfit(),0))
Print("Trolling Error",GetLastError());
}
}

}

}
}
}
 

Çocuklar, amaç ne? Neden Init'ten çıkmıyor?

BAŞLANGIÇA NEDEN GİRİŞ YOK??????????

 int init()
 {
   if (init_data()== false )error= true ;
   if (error== false )load_data();
   if (error== false )count_data();
   //if(error==true)Print("---------->>>>>>> ERORR!!! <<<<<<<<<--------------");
   setparam();
   Print ( "Инит завершён успешно" );
   return ( 0 );
 }

int start()
{
   // if(iTime(Symbol(),0,0) == prevtime) return(0);    //ждем нового бара
 //  prevtime = iTime(Symbol(),0,0);                   //если появился новый бар , включаемся    
   Print ( " Старт после нового бара" ); 
...
      
Neden: