KimIV'ten faydalı özellikler - sayfa 71

 
Alt ve üst fraktalları ayrı ayrı numaralandırmak gerekir. Fonksiyon parametrelerinde UPPER veya LOWER tipini ve fraktalın numarasını belirtmeniz gerekir. Bu arada zikzak büküm noktaları aranırken üst ve alt bükümler ayrı ayrı numaralandırılsaydı kullanımı daha uygun olurdu.
 
KimIV писал(а) >>

Evet, hayır... çünkü bu fraktalları nasıl numaralandıracağımı çözemedim:

Peki ya bu bir fraktalın oluşumu olarak kabul edilmezse. Seçenek?

 
savaş. Bu seçeneğe katılmıyorum. Gerçek şu ki, bir çubukta iki fraktal olduğunda, bu, bazen "elmas" olarak adlandırılan iyi bilinen "mercek" modelinin bir işaretidir. Dolayısıyla bu rakam bu temelde Expert Advisor'da yakalanabilir.
 
Rıhtımlara soru ve Igor = "Kar" veya "Özkaynak" göstergesini zamandan (birçok farklı T \ F) zamandan ayrı bir pencerede (anlamı - portföyün kontrolü) sürekli bir çizgi şeklinde oluşturmak mümkün mü dinamiklerde) ... sozh'a. Igor'un web sitesinde bir gösterge var, ancak bir tablo şeklinde ve statik ... (veya belki bir tane var - lütfen bir bağlantı verin) ....
 
khorosh писал(а) >>
savaş. Bu seçeneğe katılmıyorum. Gerçek şu ki, bir çubukta iki fraktal olduğunda, bu, bazen "elmas" olarak adlandırılan iyi bilinen "mercek" modelinin bir işaretidir. Dolayısıyla bu rakam bu temelde Expert Advisor'da yakalanabilir.

EVET'i belirlemek için, ancak numaralandırma için ve neden konuşmanın aslında uygun olmadığı ...

 
nuj >> :
Rıhtımlara soru ve Igor = "Kar" veya "Özkaynak" göstergesini zamandan (birçok farklı T \ F) zamandan ayrı bir pencerede (anlamı - portföyün kontrolü) sürekli bir çizgi şeklinde oluşturmak mümkün mü dinamiklerde) ... sozh'a. Igor'un web sitesinde bir gösterge var, ancak bir tablo şeklinde ve statik ... (veya belki bir tane var - lütfen bir bağlantı verin) ....

forum aramasını kullan

Dosyalar:
equity_v7.mq4  17 kb
 

ve arayın, belki bir danışmanınız vardır:

1. Açılan tüm pozisyonları alır.

2. Kaybetmeden durdurur.

3.tralit

4. pozisyonları üç seviyede kapatır.Örneğin:

Lot 1.

1 çıkış - lotun %50'si kapalı, örneğin açılış fiyatından 30 puan.

2 çıkış - Partinin %30'u kapalı, örneğin açılış fiyatından 70 puan.

3 çıkış - Partinin %20'si, örneğin MA'nın kesiştiği yerde kapalı.

teşekkür etmek.

 

Tünaydın! Lütfen bana bu basit Expert Advisor'da NumberOfBarOpenLastPos işlevini nasıl uygulayacağımı söyleyin,

böylece bir çubuk için sipariş bir kez çalışır... Fonksiyonu koda koydum ama hiçbir şey olmuyor...

//------------------------------------------------ --------------------
// tradeexpert.mq4
//
//------------------------------------------------ --------------------
#property telif hakkı "Telif hakkı © Kitap, 2007"
#özellik bağlantısı "http://AutoGraf.dp.ua"
//------------------------------------------------ --------------- 1 --
// M15 için sayısal değerler
harici çift StopLoss =200; // Açılan sipariş için SL
harici çift Kar Al =10; // Açılan sipariş için TR
harici int Dönem_MA_1=11; // MA dönemi 1
harici int Period_MA_2=31; // MA dönemi 2
harici çift Rastvor =28,0; // MA arasındaki mesafe
dış çift Lot = 0.1; // Sabit kodlanmış sayı çok
harici çift Artılar =0.07; // Serbest öz sermaye yüzdesi

bool İş=doğru; // Expert Advisor çalışacak.
dize Symb; // Finansın adı. alet
//------------------------------------------------ --------------- 2 --
int başlangıç()
{
int
Toplam, // Penceredeki sipariş sayısı
İpucu=-1, // Tür seçili. siparişler (B=0,S=1)
bilet; // Sipariş numarası
çift
MA_1_t, // Değer. MA_1 geçerli
MA_2_t, // Değer. MA_2 akımı
Parti, // Miktar seçilen sırayla lotlar
Lts, // Miktar açık düzende çok
Min_Lot, // Minimum lot sayısı
Adım, // Parti büyüklüğü değiştirme adımı
Ücretsiz, // Mevcut ücretsiz fonlar
One_Lot, // Bir lotun maliyeti
Fiyat, // Seçilen siparişin fiyatı
SL, // seçilen sıranın SL'si
TP; // seçilen siparişin TP'si
bool
Ans =false, // Kapattıktan sonra sunucu yanıtı
Cls_B=false, // Satın Al'ı kapatmak için kriterler
Cls_S=false, // Satışı kapatmak için kriterler
Opn_B=false, // Buy'u açma kriterleri
Opn_S=yanlış; // Sell'i açmak için kriterler
//------------------------------------------------ --------------- 3 --
// Ön işleme
if(Barlar < Period_MA_2) // Yeterli bar yok
{
Alert("Pencerede yeterli çubuk yok. Expert Advisor çalışmıyor.");
dönüş; // başlangıçtan çık()
}
if(İş==yanlış) // Kritik hata
{
Alert("Kritik hata. Expert Advisor çalışmıyor.");
dönüş; // başlangıçtan çık()
}
//------------------------------------------------ --------------- 4 --
// Siparişler için muhasebe
Sembol=Sembol(); // fin.instr'nin adı.
toplam=0; // Sipariş sayısı
for(int i=1; i<=OrdersTotal(); i++) // Sipariş üzerinden döngü
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Sonraki Varsa
{ // Siparişlerin analizi:
eğer (OrderSymbol()!=Symb)devam ederse; // Bizim Fincemiz değil. alet
if (OrderType()>1) // Beklemede
{
Alert("Bekleyen bir sipariş algılandı. Expert Advisor çalışmıyor.");
dönüş; // başlangıçtan çık()
}
Toplam++; // Pazar sayacı kalabalık
if (Toplam>1) // Birden fazla sipariş yok
{
Alert("Çoklu piyasa emirleri. Expert Advisor çalışmıyor.");
dönüş; // başlangıçtan çık()
}
Bilet=SiparişTicket(); // Seçilen numara. ord.
Tip=SiparişTürü(); // Seçilen siparişin türü.
Fiyat =SiparişAçıkFiyat(); // Fiyat seçildi. ord.
SL =SiparişStopLoss(); // Seçilen siparişin SL'si.
TP=OrderTakeProfit(); // Seçilen siparişin TP'si.
Parti=SiparişLots(); // Parti sayısı
}
}
//------------------------------------------------ --------------- 5 --
// Ticaret kriterleri
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_LWMA,PRICE_TYPICAL,0); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_LWMA,PRICE_TYPICAL,0); // MA_2

if (MA_1_t > MA_2_t + Rastvor*Nokta) // Arasındaki Fark ise
{ // ..MA 1 ve 2 büyük
Opn_B=doğru; // Kriterler açık. satın almak
CLs_S=doğru; // Kriterler kapanıyor. Satmak
}
if (MA_1_t < MA_2_t - Rastvor*Nokta) // Arasındaki Fark ise
{ // ..MA 1 ve 2 büyük
Opn_S=doğru; // Kriterler açık. Satmak
Cls_B=doğru; // Kriterler kapanıyor. satın almak
}
//------------------------------------------------ --------------- 6 --
// Kapanış siparişleri
while(true) // Sipariş kapatma döngüsü.
{
if (Tip==0 && Cls_B==true) // Satın alma emri açıldı..
{ //ve bir kapatma kriteri var
Alert("Satın Alımı Kapatmaya Çalışıyor ",Ticket,". Yanıt bekleniyor..");
Yeniler(); // Veriyi güncelle
Ans=SiparişKapat(Bilet,Lot,Teklif,2); // Satın Al'ı Kapat
if (Ans==true) // Anladım :)
{
Alert("Sipariş kapandı",Bilet);
kırmak; // Kapatma döngüsünden çık
}
if (Fun_Error(GetLastError())==1) // Hata İşleme
devam etmek; // Yeniden dene
dönüş; // başlangıçtan çık()
}

if (Tip==1 && Cls_S==true) // Satış emri açıldı..
{ // ve bir kapatma kriteri var
Alert("Satılmaya çalışılıyor",Ticket,". Cevap bekleniyor..");
Yeniler(); // Veriyi güncelle
Ans=SiparişKapat(Bilet,Parti,Sor,2); // Satışı Kapat
if (Ans==true) // Anladım :)
{
Alert("Satış emri kapandı",Bilet);
kırmak; // Kapatma döngüsünden çık
}
if (Fun_Error(GetLastError())==1) // Hata İşleme
devam etmek; // Yeniden dene
dönüş; // başlangıçtan çık()
}
kırmak; // iken çık
}
//------------------------------------------------ --------------- 7 --
// Sipariş maliyeti
Yeniler(); // Veriyi güncelle
Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Min. miktar çok
Serbest=HesapFreeMargin(); // Kullanılabilir fonlar
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// 1 lot maliyeti
Adım =MarketInfo(Symb,MODE_LOTSTEP); // Adım yeniden boyutlandırıldı

if (Lot > 0) // Lot belirtilirse,
lts=Çok; // onlarla çalışıyoruz
else // % ücretsiz öz sermaye
Lts=MathFloor(Serbest*Prots/Bir_Lot/Adım)*Adım;// Açmak için

if(Lts < Min_Lot) Lts=Min_Lot; // Minimumdan az değil
if (Lts*One_Lot > Free) // Lot, bedavadan daha pahalıdır.
{
Alert("Yeterli para yok", Lts," lot");
dönüş; // başlangıçtan çık()
}
//------------------------------------------------ --------------- sekiz --
// Emirleri açma
if (NumberOfBarOpenLastPos()>0){
while(true) // Sipariş kapatma döngüsü.
{
if (Total==0 && Opn_B==true) // Emirleri aç. hayır +
{ // açık kriter satın almak
Yeniler(); // Veriyi güncelle
SL=Teklif - New_Stop(StopLoss)*Puan; // SL açık hesapla.
TP=Teklif + New_Stop(TakeProfit)*Puan; // TP açık hesapla.
Alert("Satın Alım Açmaya Çalışıyorum. Cevap Bekleniyor..");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Open Buy
if (Bilet > 0) // Başarılı :)
{
Alert("Sipariş açık",Bilet);
dönüş; // başlangıçtan çık()
}
if (Fun_Error(GetLastError())==1) // Hata İşleme
devam etmek; // Yeniden dene
dönüş; // başlangıçtan çık()
}
if (Total==0 && Opn_S==true) // Emirleri aç. hayır +
{ // açık kriter Satmak
Yeniler(); // Veriyi güncelle
SL=Sor + New_Stop(StopLoss)*Puan; // SL açık hesapla.
TP=Sor - New_Stop(TakeProfit)*Puan; // TP açık hesapla.
Alert("Sat açmaya çalışıyorum. Cevap bekleniyor..");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);//Open Sel
if (Bilet > 0) // Başarılı :)
{
Alert("Sipariş açık",Bilet);
dönüş; // başlangıçtan çık()
}
if (Fun_Error(GetLastError())==1) // Hata İşleme
devam etmek; // Yeniden dene
dönüş; // başlangıçtan çık()
}
kırmak; // iken çık
}
}
//------------------------------------------------ --------------- dokuz --
dönüş; // başlangıçtan çık()
}
//------------------------------------------------ -------------- on --


//+------------------------------------------- ------------------------------+
//| Yazar : Kim Igor V. namı diğer KimIV, http://www.kimiv.ru |
//+------------------------------------------- ------------------------------+
//| Sürüm : 02/19/2008 |
//| Açıklama : Son pozisyon açık çubuğunun veya -1'in numarasını döndürür. |
//+------------------------------------------- ------------------------------+
//| Seçenekler: |
//| sy - alet adı ("" veya NULL - geçerli sembol) |
//| tf - zaman çerçevesi ( 0 - mevcut zaman çerçevesi) |
//| operasyon - operasyon ( -1 - herhangi bir pozisyon) |
//| mn - MagicNumber ( -1 - herhangi bir büyü) |
//+------------------------------------------- ------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
tarihsaat t;
int i, k=SiparişToplam();

if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==dk) {
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
dönüş(iBarShift(sy, tf, t, Doğru));
}

int Fun_Error(int Error) // Hata İşleme Fonksiyonu
{
geçiş (Hata)
{ // Önlenebilir hatalar
case 4: Alert("Ticaret sunucusu meşgul. Tekrar deneyelim..");
uyku(3000); // Basit bir çözüm
dönüş(1); // Fonksiyon çıkışı
case 135:Alert("Fiyat değişti. Tekrar deneyelim..");
Yeniler(); // Veriyi güncelle
dönüş(1); // Fonksiyon çıkışı
case 136:Alert("Fiyat yok. Yeni bir onay işareti bekleniyor..");
while(RefreshRates()==false) // Bir sonraki onay işaretine kadar
Uyku(1); // Döngüde gecikme
dönüş(1); // Fonksiyon çıkışı
case 137:Alert("Aracı meşgul. Tekrar deniyor..");
uyku(3000); // Basit bir çözüm
dönüş(1); // Fonksiyon çıkışı
case 146:Alert("Ticaret alt sistemi meşgul. Tekrar deneniyor..");
Uyku(500); // Basit bir çözüm
dönüş(1); // Fonksiyon çıkışı
// Kritik hatalar
durum 2: Alert("Genel hata.");
dönüş(0); // Fonksiyon çıkışı
case 5: Alert("Eski terminal versiyonu.");
iş=yanlış; // artık çalışma
dönüş(0); // Fonksiyon çıkışı
case 64: Alert("Hesap bloke edildi.");
iş=yanlış; // artık çalışma
dönüş(0); // Fonksiyon çıkışı
case 133:Alert("Ticaret yasaktır.");
dönüş(0); // Fonksiyon çıkışı
case 134:Alert("İşlemi tamamlamak için yeterli para yok.");
dönüş(0); // Fonksiyon çıkışı
varsayılan: Alert("Bir hata oluştu",Hata); // Diğer seçenekler
dönüş(0); // Fonksiyon çıkışı
}
}
//------------------------------------------------ -------------- on bir --
int New_Stop(int Parametre) // Durdurmayı kontrol edin.
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Min. mesafe
if (Parametre<Min_Dist) // İzin verilenden az ise
{
Parametre=Min_Dist; // İzin verilebilir olarak ayarlayın.
Alert("Durma emri mesafesi artırıldı.");
}
dönüş(Parametre); // geri dönüş değeri
}
//------------------------------------------------ -------------- 12 --

 
kurilko >> :

// Emirleri açma

if (NumberOfBarOpenLastPos()>0)

İşlev, yalnızca pozlar açılmışsa 0'dan fazlasını döndürür ve değilse, sonraki -1...

if (NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)

{

}

 

Koşul if (NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1) olarak değiştirildi

hala çalışmıyor, belki kodda başka bir yere kaydedilmesi gerekiyor?