MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1219

 

Bir sınıf işlevinde bildirilen statik değişkenler , o sınıfın tüm örneklerine geçiş yapıyor mu?

Nedense, her örneğin kendine ait olmasını bekliyordum.

Bir alternatif var mı - yalnızca sınıf düzeyinde değişkenler mi yoksa başka bir zor yol var mı?

 

Merhaba ! Dosyayı kaydetmek için yolu belirtmelisiniz. Daha spesifik olarak, kene geçmişi . Bu sorunu çözmeye yardımcı olun)

 //------------------------------------------------------------------
#property copyright "www.forex-tsd.com"
#property link        "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window

//
//
//
//
//

extern string FileName   = "Ticks.csv" ;
extern bool    SaveVolume = true ; 
int fileHandle;

MqlBookInfo book[];

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

int    OnInit ()                   
{ 
   MarketBookAdd ( _Symbol ); 
      fileHandle = FileOpen ( Symbol ()+ " - " +FileName, FILE_WRITE | FILE_SHARE_READ | FILE_ANSI | FILE_CSV ); 
       return ( 0 ); 
}
void OnDeinit ( const int reason) 
{
   MarketBookRelease ( _Symbol );
   FileClose (fileHandle);
}

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

int OnCalculate ( const int rates_total, const int prev_calculated, const datetime &Time[],
                 const double &Open[], const double &High[], const double &Low[], const double &Close[],
                 const long &TickVolume[], const long &Volume[], const int &Spread[])
{                
   if (fileHandle < 0 )
   {
       static bool alerted = false ;
         if (!alerted)
         {
             Alert ( "File : " + Symbol ()+ " - " +FileName+ " could not be opened" ); alerted = true ;
         }
         return ( 0 );
   }         

   //
   //
   //
   //
   //
   
   bool bget = MarketBookGet ( _Symbol ,book);
   int bidVolume = 0 ;
   int askVolume = 0 ;

       if (bget)
      {
         int     size = ArraySize (book);
         string info = "\n" ;
             for ( int i= 0 ; i<size; i++)
               {
                   if (book[i].type== BOOK_TYPE_SELL ) askVolume += ( int )book[i].volume;
                   if (book[i].type== BOOK_TYPE_BUY )  bidVolume += ( int )book[i].volume;
               }                  
      }            
      
   if ( FileSize (fileHandle) == 0 )
         FileWriteString (fileHandle, "date and time,bid,ask,bid volume,ask volume\n" );
         if (SaveVolume)
               FileWriteString (fileHandle, TimeToString ( TimeCurrent (), TIME_DATE | TIME_SECONDS )+ "," + DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), _Digits )+ "," + DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits )+ "," + DoubleToString (bidVolume, 0 )+ "," + DoubleToString (askVolume, 0 )+ "\n" );
         else    FileWriteString (fileHandle, TimeToString ( TimeCurrent (), TIME_DATE | TIME_SECONDS )+ "," + DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), _Digits )+ "," + DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits )+ "\n" );
         FileFlush (fileHandle);
   return ( 0 );
}
 

@Sinir ağı

Dosya Aç

Dosya, MQL5\Files alt klasöründeki (veya test durumunda test_agent_directory\MQL5\Files) istemci terminal klasöründe açılır.

İşaretler arasında FILE_COMMON belirtilirse, dosya tüm istemci terminalleri \ Terminal\Common\Files ortak klasöründe açılır.

--

sadece "sembolik bağlantı" yoluyla başka bir konuma

      fileHandle = FileOpen ( Symbol ()+ " - " +FileName, FILE_WRITE | FILE_SHARE_READ | FILE_ANSI | FILE_CSV );    // FILE_COMMON 



 
NeuralNetwork :
Çok teşekkürler ! Ancak, farklı bir sürücü veya klasör belirterek dosyayı kaydetme yolunu ayarlamak istiyorum. Bu benim için çalışmıyor...

https://www.mql5.com/ru/docs/files

3 satır

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы". общая папка всех установленных на компьютере терминалов  – обычно расположена в каталоге C:\Documents and Settings\All Users\Application...
 
Fast235 :

@Sinir ağı

Dosya Aç

Dosya, MQL5\Files alt klasöründeki (veya test durumunda test_agent_directory\MQL5\Files) istemci terminal klasöründe açılır.

İşaretler arasında FILE_COMMON belirtilirse, dosya tüm istemci terminalleri \ Terminal\Common\Files ortak klasöründe açılır.

--

sadece bir "sembolik bağlantı" yoluyla başka bir yere



Çok teşekkürler !
 
Roman Shiredchenko :


Yöneticiler ve moderatörler çarpık yazılmış bir robot sorununu ne kadar ilginç çözecek?

 

Sevgili profesyoneller, lütfen bana EA kodunda haftalık zaman dilimi için RSI değerlerini bir şekilde almanın mümkün olup olmadığını söyleyin, ancak böylece değerler Pazartesi'den değil, örneğin Çarşamba'dan başlayarak hafta için hesaplanır ( yani, Çarşamba'dan sonraki Çarşamba'ya kadar olan hafta için). iRSI'nin yardımıyla, anladığım kadarıyla bu işe yaramayacak, çünkü hesaplamada haftalık çubuklar dikkate alınıyor ve Pazartesi günü başlıyorlar.

Şimdiye kadar, hesaplama kodunu kendim yazmanın sadece bir yolunu görüyorum. Daha basit veya hazır bir çözüm var mı?

 
Roman Shiredchenko :

Bağırmak, bağırmak, küfür etmek, kendi kodunuzu çalışır hale getirmek istememek, adminlerle moderatörleri suçlamak, adminlerle moderatörleri aşağılamak...

Genel olarak - eksiksiz bir set. Sakinleşmek ve hatalarımı düzeltmek için bir hafta veriyorum. Düşünceli!

 
Valeriy Yastremskiy :

Bilet muhasebesi için.

Bir sipariş açarken, bileti hatırlamanız gerekir.

Sayesinde
 
Valeriy Yastremskiy :

Bayraklar veya emir türlerinin sayısının kontrolü veya bilet bir piyasa emrinin kapanış zamanının kontrolü ise, sıfıra eşit değilse, emir kapanmıştır ve emri açma bayrağı yanlıştır.

Teşekkürler, zaten ortaya çıktı, insanlar önerdi)))))))