KimIV'ten faydalı özellikler - sayfa 60

 

Sevgili Kim, emeğin için çok teşekkür ederim. Yazdığınız fonksiyonlar hayatımı kolaylaştırıyor.

Cephaneliğinizde, ardışık tüm kapalı kaybeden işlemlerin toplam kaybını döndüren bir işlev var mı? Diyelim ki son üç anlaşma zararla kapatıldı, bunların toplam kaybını mevduat para biriminde bulmanız gerekiyor. Açıklığa kavuşturacağım - bu, art arda kaybeden son işlemlerdir.

Yardım için minnettar olurum, başkalarının bu işlevi kullanabileceğini düşünüyorum

 

KimIV

Görevlerini danışmana bağlamaya çalıştım. derleyici şöyle bir şey yazar: " ClosePositions " işlevine başvurulmaz ve exp dosyasından kaldırılır

"ExistPositions" işlevine atıfta bulunulmuyor ve exp dosyasından kaldırılacak

"ManagePositions" işlevine başvurulmuyor ve exp dosyasından kaldırılacak .................................

Bir söve ne olabilir?




 
WroC писал(а) >>
derleyici yazıyor: "ClosePositions" işlevine başvurulmuyor ve exp dosyasından kaldırılacak

Bir söve ne olabilir?

Eklem değil. Bu, işlevin kullanılmadığına ve bu nedenle kodunu derlemenin bir anlamı olmadığına dair bir uyarıdır.

 

Igor!

Zaman filtresinin işlevleri hakkında herhangi bir gelişme veya sadece düşünce var mı?

örneğin: geçerli ay, gün, hafta için...

veya orada: önceki ay, gün, hafta, çeyrek...

*

İdeal olarak şöyle görünecektir:

// FuncStPeriod(int Per, int Val)
// Где:
// Per = 0-день, 1-неделя, и т.д...
// Val = 0-текущие, 1-прошедший

// пример использования для выбора ордеров за период
if(FuncStPeriod(1, 0)) ...

Üzgünüm, ama işe yaramadığını görebiliyorum...

Ya da belki de filtreleme modeli yanlış seçilmiştir...

Genel olarak, şimdiye kadar çıkmazda ... ve kelimenin tam anlamıyla ... :)))

 

Sen, Vasily, politik olarak doğru değilsin! Giriş belirtilmiş, ama çıkış nerede?

 

Evet, içimde 0,5 + 0,5'in bir litre olacağını hissediyorum!

ama sorunu çözemiyorum ... (c))))

*

Tarihlerinden örnekleme siparişlerinin zamanlarına göre örnekleri için çok minnettar olurum.

*

Ve bu:

// FuncStPeriod(int Per, int Değer)
// Neresi:
// Başına = 0 gün, 1 hafta, vb...
// Val = 0-geçmiş, 1-geçmiş


// bir dönem için sipariş seçme kullanım örneği
if(FuncStPeriod(1, 0)) ...
*

tarafımca yanlış, daha doğrusu açıklama yapılmadan yazılmıştır...

vurgulanan yalnızca işlevin sahip olabileceği parametrelerdir.

Aşağıda bu işlevin kullanımına bir örnek verilmiştir...

EĞER siparişlerin zamanı FİLTRE dönemine EŞİTTİR (isabet)

...

 

Vasily, yine girişten bahsediyorsun. Sonuç olarak, neye sahip olmak istiyorsunuz ve hangi biçimde?

 

ahh...

Aynen... mantık hatamın yeri orası...

İşlev, BİR ŞEY döndürür, örneğin 123456 sayısı

Ve C ve ON'u filtrelemeniz gerekiyor (peki veya FROM ve TO, mesele bu değil ...)

*

Genel olarak, MT4'teki hesap geçmişi filtresiyle aynıdır.

Elbette bir döngünün oluşturduğu bir liste vardır, örneğin:

için( ...

if(VALUE1 > OrderCloseTime () > VALUE2)

...

*

İşlevin if () filtresinde ikame için bir dize (?) değeri döndürmesi gerektiği ortaya çıktı.

için( ...

if(FuncStPeriod(1, 0))

...

*

Saçmalık. Tarif etmek zor...

Kafam karıştı ve seni zorladım.

:(

 

Eh, neredeyse her şeyi kendin yaptın! Filtre gerekmez. Sadece dt1 ve dt2 gibi iki tarih saat değeri hazırlayın. Bir kapalı anlaşmalar döngüsü düzenleyin. Bir seçim ile siparişleri seçin ve kapanış zamanlarını kontrol edin:

 if ( OrderCloseTime ( ) > dt1 & & OrderCloseTime ( ) < dt2 ) {
   // что-то делаете с выбранным ордером
}
 

Igor" Evet, bu anlaşılabilir bir şey ...

Ondan sonra bu konu üzerinde çalışmaya başladım.

*

Ancak görev, aynı dt1 ve dt2'yi doğru değerlerle "doldurmaktır"!

Örneğin çeyrek, cari. Teoride, fonksiyon şöyle bir şey döndürmelidir:

OrderCloseTime ()>"01.10.2008" && OrderCloseTime()<"04.12.2008"

Bugünü başlangıç tarihi olarak almak.

*

FuncStPeriod(int Per, int Val) işlevinin sonunu aşağıdaki gibi görüyorum:

FuncStPeriod(int Per, int Val)
{
string fsp;

//...
fsp="OrderCloseTime()>"+"dt1+" && OrderCloseTime()<"+dt2;
return(fsp);
}

***

Örneğin, mevcut olana göre önceki ayların sayısını "hesaplamak":

 int KM ( )
{
int kolm ;
kolm = ( TimeLocal ( ) - StrToTime ( "2007.10.01" ) ) / 2592000 ;
return ( kolm - 1 ) ;
} 

Ancak, böyle basitleştirilmiş bir yaklaşımın kendi hatası vardır,

yanlış bir tanımın mümkün olduğu gerçeğinde kendini gösterecek olan

sonraki ayların başında...

Neden: