Sipariş açıkken dosyaya yazılamıyor - sayfa 2

 

WHRoeder :

Handle= FileOpen (File_Name, FILE_CSV | FILE_WRITE , ";" ); //File opening
Handle= FileOpen (File_Name, FILE_CSV | FILE_READ | FILE_WRITE , ";" ); //File opening

Geçersiz son argüman - int değil

Lütfen ne demek istediğinizi detaylandırabilir misiniz?

Belgeler (bkz. FileOpen() ) sınırlayıcının tek tırnak içine alındığını gösterirken, kitap (bkz.

Ek olarak, aşağıdaki kod:

 int handle= FileOpen ( "testing.csv" , FILE_CSV | FILE_WRITE | FILE_READ , ";" );
if (handle > 0 ) {
   FileSeek (handle, 0 , SEEK_END );
   FileWrite (handle, "test1" , "test2" , "test3" , "test4" );
   FileClose (handle);
}
else
   Print ( "FileOpen failed. Error # " , GetLastError ());

derlenmiş, herhangi bir çalışma zamanı hatası yoktu ve dosyada aşağıdaki çıktıyı üretti:

Dosya Testi #1

 
RaptorUK : ";" var ';' değil . . . aldığınız hata mesajı parametre 1'den bahsediyordu, bu dosya tanıtıcı değil mi?
Birincisi bir dizge, ikincisi bir int (gerektiği gibi). Bahsedilen hata p 1. Birden çok sorun mu var?
 
RaptorUK :
Üzgünüm, "parçalar" . . . **** END TICK USDCHF **** mesajını alıyor musunuz? yoksa ondan önce mi bitiyor?


Evet, dosya tamamlandı.
 
RaptorUK :

";" var ';' değil . . . aldığınız hata mesajı parametre 1'den bahsediyordu, bu dosya tanıtıcı değil mi?

Evet, başka biri geçersiz son parametre hakkında konuşuyordu, nedenini bilmiyorum. Yine de ";" değiştirdim için ';' ama aynı sorunu aldı.
 
Thirteen :

Lütfen ne demek istediğinizi detaylandırabilir misiniz?

Belgeler (bkz. FileOpen() ) sınırlayıcının tek tırnak içine alındığını gösterirken, kitap (bkz.

Ek olarak, aşağıdaki kod:

derlenmiş, herhangi bir çalışma zamanı hatası yoktu ve dosyada aşağıdaki çıktıyı üretti:



Denedim ";" ve ';' aynı sorunu aldım.

Kodum çalışıyor ve harika çalışıyor, dosya oluşturulur ve dosya her açıldığında, tüm bilgiler içine yazılır ve ardından dosya kapatılır. EA bir sipariş açana kadar her şey harika çalışıyor, ardından dosyaya hiçbir şey yazılmıyor.

 
WHRoeder :
Birincisi bir dizge, ikincisi bir int (gerektiği gibi). Bahsedilen hata p 1. Birden çok sorun mu var?


Hata dosya tanıtıcısıdır, tanıtıcı her zaman 1'dir ve her zaman çalışır, ancak EA bir sipariş açtığında, bir sonraki onay işareti, yine 1 olmasına ve son yüzlerce onay için çalışmış olmasına rağmen Tutamaç geçersiz diyor. En son denediğimde sipariş açıldığında kolu yukarı çıkmaya başladı, 2, 3, 4 vb. oldu.

Aynı kod, neden 1 olarak kalmıyor bilmiyorum ve hala 1 olmasına rağmen hala hata veriyor.

 
Herhangi bir fikriniz var mı çocuklar?
 
favosys :
Herhangi bir fikriniz var mı çocuklar?

Gönderdiğiniz kodda bir sorun göremiyorum.

Bu yüzden 2 seçenek görüyorum:

  • tüm kodunuzu gönderin, böylece kendimiz deneyebilir ve düzeltmeye çalışabiliriz
  • sorunu kopyalayan kısa bir komut dosyası/EA oluşturun ve bunu yayınlayın

 
RaptorUK :

Gönderdiğiniz kodda bir sorun göremiyorum.

Bu yüzden 2 seçenek görüyorum:

  • tüm kodunuzu gönderin, böylece kendimiz deneyebilir ve düzeltmeye çalışabiliriz
  • sorunu kopyalayan kısa bir komut dosyası/EA oluşturun ve bunu yayınlayın


Teşekkürler RaptorUK, sorunu denemek ve düzeltmek için sorunu tam olarak kopyalayan bir EA oluşturmuştum. Temel olarak başlar, keneleri sayarak dosyaya yazdığı her tik dosyasını oluşturur. Yani dosya tik 1, tik 2 vb.

15. tıklandığında bir sipariş açılır, dosyada sipariş bilgisi görünür ve sonu (******) da görünür. Bundan sonra her tikte tik numarası (16, 17, vb.) ve siparişin durumu, yani siparişin hala açık olup olmadığı yazılmalıdır. Nedense 15'ten sonra EA dosyaya yazmıyor.

Tik 50'de siparişi kapatması gerekiyor ama bu önemli değil, önemli olan siparişi açtığında dosyaya yazmaya devam etmesi.

Windows 7 makinemde dosyalar C:\Users\{username}\AppData\Local\VirtualStore\Program Files (x86)\SIGTrader 4\experts\files konumunda oluşturulur

Appdata gizli bir klasördür.

Şimdiden teşekkürler

Kod:

 //+------------------------------------------------------------------+
//|                                                          log.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

extern string      Nombre_archivo= "log" ;
extern int         Take_Profit= 6 ;
extern int         Stop_Loss= 35 ;
extern int         Deslizamiento= 4 ;
extern double      vol= 1 ;
int                Handle, Qnt_Symb, ticket, err, abierta = 0 ;
string             File_Name, larcor;


int cont= 1 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   File_Name = StringConcatenate (Nombre_archivo, " - " , Symbol (), " - " , TimeToStr( TimeLocal (),TIME_DATE), " - " , TimeHour( TimeLocal ()), "." , TimeMinute( TimeLocal ()), "." , TimeSeconds( TimeLocal ()), ".txt" );
   Handle= FileOpen (File_Name, FILE_CSV | FILE_WRITE , ';' ); //File opening
   if (Handle==- 1 )                       // File opening fails
     {
       Alert ( "An error while opening the file. " , // Error message
               "May be the file is busy by the other applictiom" );
       PlaySound ( "Bzrrr.wav" );           // Sound accompaniment
       return ;                           // Exir start()      
     }
     FileClose ( Handle );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   double op, cl;
   
   Print ( "Order open: " , abierta);
   //Print("File: ", File_Name);

    Handle= FileOpen (File_Name, FILE_CSV | FILE_READ | FILE_WRITE , ';' ); //File opening
     Print ( "Handle: " , Handle);
   if (Handle==- 1 )                       // File opening fails
     {
       Alert ( "An error while opening the file. " , // Error message
               "May be the file is busy by the other applictiom" );
       PlaySound ( "Bzrrr.wav" );           // Sound accompaniment
       return ;                           // Exir start()      
     }
   FileSeek (Handle, 0 , SEEK_END );
   
   Qnt_Symb= FileWrite (Handle, "**** INICIANDO TICK PAR " , Symbol (), ": " , TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " ****" );
   Qnt_Symb= FileWrite (Handle, "************************************************************" );   
   
   Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Este es el tick num: " , cont);
   if (cont == 15 ){
      op = iOpen( NULL , 0 , 0 );
      cl = iClose( NULL , 0 , 0 );
      
       if (op < cl){
         Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Estamos en LARGO, se abre compra" );
         ticket = OrderSend ( Symbol (),OP_BUY,vol,Ask,Deslizamiento,Ask-Stop_Loss* Point ,Ask+Take_Profit* Point );
         if (ticket == - 1 ){
            err = GetLastError ();
            Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , " Error No. " , err, " al tratar de abrir la orden" );
         }
         else {
            Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , " Abierta orden " , ticket, ", hora: " , TimeToStr( TimeCurrent (),TIME_DATE|TIME_SECONDS));
            abierta = 1 ;
         }
       }
       else {
         Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Estamos en CORTO, se abre venta" );
         ticket = OrderSend ( Symbol (),OP_SELL,vol,Bid,Deslizamiento,Bid+Stop_Loss* Point ,Bid-Take_Profit* Point );
         if (ticket == - 1 ){
            err = GetLastError ();
            Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , " Error No. " , err, " al tratar de abrir la orden" );
         }
         else {
            Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , " Abierta orden " , ticket, ", hora: " , TimeToStr( TimeCurrent (),TIME_DATE|TIME_SECONDS));
            abierta = 1 ;
         }
       }
   }
   
   if ((cont > 15 ) && (cont < 50 )){
       if (ticket != - 1 ){
         if ( OrderSelect (ticket, SELECT_BY_TICKET) == true ){
             datetime horacierre = OrderCloseTime();
             if (horacierre == 0 ){
               Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Orden " , ticket, " en par " . Symbol (), " sigue abierta." );   
            }
             else {
               Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "La orden " , ticket, " se cerro automaticamente a las " , TimeToStr(horacierre,TIME_DATE|TIME_SECONDS));
            }
          }
      }
   }
   
   if (cont == 50 ){
       if (abierta == 1 ){
         if (larcor == "LARGO" ){
             if (OrderClose(ticket,OrderLots(),Ask, 3 )){
               Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Se cerro la orden " , ticket, " en LARGO" );
            }
             else {
               Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "No se pudo cerrar la orden " , ticket, " en LARGO" );
            }
         }
         else {
             if (OrderClose(ticket,OrderLots(),Bid, 3 )){
               Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Se cerro la orden en CORTO" );
            }
             else {
               Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "No se pudo cerrar la orden " , ticket, " en CORTO" );
            }
         }
      }
   }
   
   if (cont > 50 ){
      Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Fin de EA" );
   }
   
   Qnt_Symb= FileWrite (Handle, "***************************" );      
   Qnt_Symb= FileWrite (Handle, "**** FIN TICK PAR " , Symbol (), " ****" );        
   FileClose ( Handle );
   cont++;   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
favosys :


Teşekkürler RaptorUK, sorunu denemek ve düzeltmek için sorunu tam olarak kopyalayan bir EA oluşturmuştum. Temel olarak başlar, keneleri sayarak dosyaya yazdığı her tik dosyasını oluşturur. Yani dosya tik 1, tik 2 vb.

15. tıklandığında bir sipariş açılır, dosyada sipariş bilgisi görünür ve sonu (******) da görünür. Bundan sonra her tikte tik numarası (16, 17, vb.) ve siparişin durumu, yani siparişin hala açık olup olmadığı yazılmalıdır. Nedense 15'ten sonra EA dosyaya yazmıyor.

50'de siparişi kapatması gerekiyor ama bu önemli değil, önemli olan siparişi açtığında dosyaya yazmaya devam etmesi.

Windows 7 makinemde dosyalar C:\Users\{username}\AppData\Local\VirtualStore\Program Files (x86)\SIGTrader 4\experts\files konumunda oluşturulur

Appdata gizli bir klasördür.

Şimdiden teşekkürler

Kod:

Kodunuz, test için kullandığım Broker ile işlem yapmayacaksınız, bu bir ECN "tipi" Broker. TP ve SL'yi ayarlayıp 0.0'a ayarlayacağım