[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 607

 
rustein :
Evet, anladım, teşekkürler.

Ben böyle koydum, başka bir yol bilmiyorum .......)

Ve bu yüzden..

 double BullSumm()
{
   double MySummBull= 0 ;
   for ( int Cnt= 0 ;Cnt< OrdersTotal ();Cnt++)
  { 
     if (! OrderSelect (Cnt,SELECT_BY_POS,MODE_TRADES)) continue ; // если нет продолжим цикл
     if ( OrderType ()==OP_BUY)
    {
      MySummBull+= OrderOpenPrice ()* OrderLots ();
    }
  }
   if (MySummBull== 0 ) return ( 380 /*v*/ );
   return (MySummBull);
}
 
griha :
Danışmanın eylemlerini bir dosyaya kaydetmek istiyorum
MQL editörüne yapılan referanstan bir örnek aldım, kendim için biraz değiştirdim


ve sonuç olarak, siparişler açılmasına rağmen OrdersReport.csv dosyası boştur.


Aynı sorunla karşılaştım, bir dosyayı okumak için açıp yazmaya çalışırken dosya ya oluşturulmaz ya da üzerine hiçbir şey yazılmaz.

Servis Masası Talebi:

FILE_READ|FILE_WRITE anahtarıyla açılan bir metin dosyasına ekleme yapmaya çalışırken, önce dosya işaretçisini FileSeek() işleviyle açıkça ayarlamadan hiçbir yazma işlemi gerçekleşmez.

Terminalin önceki sürümlerinde, bir metin dosyası FileReadString() işlevi kullanılarak okunduğunda, dosya işaretçisi otomatik olarak ayarlanırdı.

İşte geliştiricilerden gelen yanıt:

Dosya işlevindeki son değişiklik 2008'in ortalarına kadar uzanıyor.

Dosya işaretçisini sonuna ayarlamadan bir dosyaya eklemek daha önce hiç mümkün olmamıştı.

Daha fazla bilgi için başka bir soru. Dosyanın sonuna ekleme ile ilgisi var mı?

Herhangi bir dosya okuma/yazma işlemi, dosya işaretçisini otomatik olarak hareket ettirir. Her zaman olmuştur ve değişmemiştir. Ancak dosya csv olarak açılırsa, ara veri arabelleğe alma mümkündür. O zaman dosya işaretçisi olmasını beklediğiniz yerde olmayabilir. Tekrar ediyorum, her zaman böyle olmuştur - hem önceki sürümde hem de önceki sürümde, resmi sürümün en başından beri.

Sessizlik ilkesinin son derece zararlı olduğunu defalarca tekrarladık. Dosya işaretçileri dahil. Sürekli okuma veya sürekli yazma kullanmıyorsanız (özellikle egzotik karışık okuma-yazma durumları) dosya işaretçisiyle açıkça ilgilenin.

Sonuç: FileSeek'i kullanın

 
khorosh :
Orada.
Teşekkür ederim.
 
Roll :

EA'nız 30 dakikalık ADX sinyalleriyle işlem görüyor. Danışman 1dk ADX sinyalleriyle işlem yapıyorsa, bu tür sinyaller ilk seçeneğe göre daha sık verilecektir. Sürümünüzdeki ekran görüntüsü yalnızca bir SATIN AL pozisyonu açarken alınır.
Ekran görüntüsündeki çizelgedeki göstergelerin görüntülerinin olmamasıyla ilgileniyorsunuz (test modunda). Demo modunda ekran görüntüsündeki göstergelerin mevcut olduğundan emin olmanız istendi. Sorununuzu hızlı bir şekilde kontrol edebilmek ve anlayabilmek ve saatlerce beklememek için ilgili işleve sahip bir komut dosyası yayınlandı. Bir günden fazla zaman geçti. Sonuçların ne olduğunu bilmek istiyorum?

Seni haberdar edeceğim. Meşgulüm, yarın kontrol etmeye çalışacağım
 

Bir fonksiyonda bir isim tanımlarken veya bir değişkene bir isim atarken ve sonra değişkeni fonksiyona geçirirken arasındaki farkın ne olduğunu söyleyin?

 //-------------- первый вариант (рабочий)

string up_line = "upline_" , down_line = "downline_" ;
 
     flatlineup( up_line+ TimeToStr (Time[i]) , y2,x2,y22,x2, Red , 1 );     Имя присваиваю в теле функции
     flatlinedown( down_line+ TimeToStr (Time[i]) , y1,x1,y11,x1, Blue , 1 );
     dellline(up_line, down_line);

TimeToStr (Time[i]) указывал в имени тренд лайн в теле функции
 //--------------- второй вариант (нерабочий)

string up_line = "upline_" + TimeToStr (Time[i]); //--или пробовал StringConcatenate()        ИМЯ ПРИСВАИВАЮ В ПЕРЕМЕННОЙ
string down_line = "downline_" + TimeToStr (Time[i]); //--или пробовал StringConcatenate()
 
     flatlineup(up_line, y2,x2,y22,x2, Red , 1 );                 ПЕРЕДАЮ ПЕРЕМЕННУЮ В ФУНКЦИЮ
     flatlinedown(down_line, y1,x1,y11,x1, Blue , 1 );
     dellline(up_line, down_line);
 
rustein :
Expert Advisor'daki sıfır bölme hatasından kurtulmama yardım edin.

Şimdiden teşekkür ederim.

Bu mümkün, benim için çalışıyor

çift BullPrice()

{

çift BullAverageFiyat=0;

çift MySummBullLots=0;

for (int i = OrdersTotal() - 1; i >= 0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

(OrderSymbol() != Symbol()) devam ederse;

if (OrderSymbol() == Symbol() && OrderType() == OP_BUY)

{

BullAveragePrice+=OrderOpenPrice()*OrderLots();

MySummBullLots+=OrderLots();

}

}

if (MySummBullLots>0) BullAveragePrice = NormalizeDouble (BullAveragePrice / MySummBullLots, Digits);

dönüş (BullAverageFiyat);

}

 
Zhunko :

MT4 klasöründe, MQL4'teki tüm durumlar için bir C++ kodu örneği vardır. Bu kodu derleyin ve sizinkini oraya yapıştırın. Sizinkiyle örnek arasındaki farkı hemen bulacaksınız.

MT'm yok. MQL'de (stdlib.mq4) yazılmış sadece 1 lib var. Burada bir örnek yayınlayabilir misiniz?
 
Fox_RM :

Bir fonksiyonda bir isim tanımlarken veya bir değişkene bir isim atarken ve sonra değişkeni fonksiyona geçirirken arasındaki farkın ne olduğunu söyleyin?

Örneğinizde, fark yalnızca parametreyi işleve geçirirken ortaya çıkar.
dellline(...)
 
costy_ :

Ve bu yüzden..

Teşekkür ederim!
 

bana durumun böyle olduğunu söyle csv dosyasını şöyle okudum

 void ReadDate(){
   while (! IsStopped ()){
       string dTime = FileReadString (ExtCsvHandle); // читаем строчку 1
       string sValue = FileReadString (ExtCsvHandle); // читаем строчку 2
       Print ( "Date=" , StrToTime (dTime), "Value=" ,sValue);   
      
   }
}

ancak csv dosyasının bir başlığı var, ilk ekstra satır

Time,Value
15.02 . 2012 00 : 00 : 00 ;Значение 1
15.02 . 2012 00 : 01 : 07 ;Значение 2
15.02 . 2012 00 : 02 : 26 ;Значение 3
15.02 . 2012 00 : 00 : 00 ;Значение 1
15.02 . 2012 00 : 01 : 07 ;Значение 2
15.02 . 2012 00 : 02 : 26 ;Значение 3

İlk satırı programlı olarak nasıl atlayacağınızı veya değeri kaydederken genel olarak programlı olarak nasıl sileceğinizi, her şeyi bozar.

şimdiden teşekkürler.