Kodlama yardımı.. Uyarı yerine filtrelenecek göstergeyi nasıl alabilirim? - sayfa 5

 

Emirler, mevcut teklife/soruma çok yakın yerleştirildi. Siparişlerin mevcut fiyattan belirli bir mesafede olması gerekir. Bu bilgiyi ayıklamak için stop_level parametresiyle Marketinfo işlevini kullanın ve siparişlerinizin talep/teklif'ten o kadar uzakta olduğundan emin olun.

Bu yardımcı olur umarım.

 
Maji:
Emirler, mevcut teklife/soruma çok yakın yerleştirildi. Siparişlerin mevcut fiyattan belirli bir mesafede olması gerekir. Bu bilgiyi ayıklamak için stop_level parametresiyle Marketinfo işlevini kullanın ve siparişlerinizin talep/teklif'ten o kadar uzakta olduğundan emin olun. Bu yardımcı olur umarım.

ımmm....

üzgünüm ama beni orada kaybettin..

'mevcut' seviyede bir sipariş veremez miyim? Bu noktaya kadar yaptıklarımın çoğu, dönem kapanışında emirleri yerine getirmek oldu. Bu yapılabilir mi?

Öncelikle stop_level parametresinin ve marketinfo işlevlerinin ne olduğunu öğrenmem gerekecek.

yön için teşekkürler

Burada değeri ne olursa olsun, trend bantları göstergesine yaptığım güncelleme çok eğlenceliydi.

tamam işte burada...

MarketInfo() işleviyle kullanılan piyasa bilgisi tanımlayıcıları.

Aşağıdaki değerlerden herhangi biri olabilir:

MODE_STOPLEVEL 14 Nokta olarak durma seviyesi.

yani öyle olduğunu varsayıyorum...

Pazar Bilgisi(14)

nereye koyayım?

yoksa bu mu...

MarketInfo(NULL,MODE_STOPLEVEL);

veya...

çift teklif =MarketInfo(NULL,MODE_BID);

çift sor =MarketInfo(NULL,MODE_ASK);

çift nokta =MarketInfo(NULL,MODE_POINT);

Sanırım bunun nasıl kullanılacağını gerçekten anlamıyorum...Bana bir örnek gösterebilir misiniz?

İşte bu durumda üzerinde çalıştığım şey..Bu EA'nın neden daha önce sipariş vermekte sorun yaşamadığını ve şimdi neden böyle olduğunu merak ediyorum? Filtreyi eklemeden önce çalıştı ???

//----------channel filter

double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);

double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);

// ENTRY

if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)

{

double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position

if(isCrossed == 1 && Ask < upLevel)

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

else

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

//###################################################################### the added code starts here

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);

else

ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

//###################################################################### ends here

return(0);

}

if(isCrossed == 2 && Ask > LowLevel)

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);

else

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

//###################################################################### the added code starts here

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

else

ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

//###################################################################### ends here

return(0);

}

return(0);

}

return(0);

}

return(0);

}

}

//+------------------------------------------------------------------+
Dosyalar:
 

Stop emirlerinizin mevcut fiyattan ne kadar uzakta olması gerektiğini belirlemek için MarketInfo(NULL,MODE_STOPLEVEL) kullanmalısınız. Unutmayın, değerini pip olarak döndürür.

Ancak, şunun gibi bir şey kullanarak Puanlara dönüştürebilirsiniz:

double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Nokta, Rakamlar);

Şimdi stop emirlerinizin mevcut piyasa fiyatından en az o kadar uzakta olduğundan emin olun. Bu arada NormalizeDouble ve Digits kullanarak pip değerini ondalıktan (4 veya 2) sonra uygun yerlere çeviriyorsunuz. MT4'te bu çok güzel bir şey.

Bu yardımcı olur umarım.

Maji

 
Maji:
Stop emirlerinizin mevcut fiyattan ne kadar uzakta olması gerektiğini belirlemek için MarketInfo(NULL,MODE_STOPLEVEL) kullanmalısınız. Unutmayın, değerini pip olarak döndürür.

Ancak, şunun gibi bir şey kullanarak Puanlara dönüştürebilirsiniz:

double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Nokta, Rakamlar);

Şimdi stop emirlerinizin mevcut piyasa fiyatından en az o kadar uzakta olduğundan emin olun. Bu arada NormalizeDouble ve Digits kullanarak pip değerini ondalıktan (4 veya 2) sonra uygun yerlere çeviriyorsunuz. MT4'te bu çok güzel bir şey.

Bu yardımcı olur umarım.

Maji

Anlamadığım şey, göstergeyi neden bir filtre olarak eklemenin sipariş verme veya durma şeklini bozduğu. Söyleyebileceğim kadarıyla bunların hiçbirini değiştirmedi, peki neden çizginin üzerinde işlemlere izin vermemek stop emirlerini verme şeklini değiştiriyor?

 

Sakıncası yoksa, bana mevcut kodu e-posta ile gönder. Hafta sonu bakmaya çalışacağım. Düzelteceğime söz veremem ama dürüst bir şekilde bakıp deneyeceğim.

 

işte ilk önce bakman gereken senin problemin

if(isCrossed == 1 && Ask < upLevel-longrange)[/PHP]

Ask and upLevel are in "price" (like 115.56 or 1.2678) while longrange is in pips (like 4,5,6) and u cannot mixed them. U have to normalize the pips to "price" and this is done by muliplying the pips with Points

the corrected code is like that

[PHP]if(isCrossed == 1 && Ask < upLevel-longrange*Point)
 

bir kere bu kolay bir çözüm...

bir tek...

... o gönderiyi yaptığımdan beri değiştirdim. ..Bantları daha geniş veya daha dar yapmak için göstergeyi bir parametre ile değiştirdim ve EA'nın çizgiye yakınlık sınırı yapan kısmını çıkardım. Eğer ticaret gruplarını dar veya geniş yapabilirsem, aynı işlevi çok karmaşık olmadan yerine getirebilirsem ve benim için zihinsel olarak takip etmenin daha kolay olacağını düşündüm.... o yüzden...

şu anda durum böyle...

//----------channel filter

double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);

double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);

// ENTRY

if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)

{

double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position

if(isCrossed == 1 && Ask < upLevel)

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

else

hem sor hem de üst seviye, her ikisinin de fiyatı değil mi? bu, hala hatayı oluşturan koddur. daha devam ediyor olmalı..

 

şimdiye kadar herhangi bir sorun görmüyorum (kod odaklı)

Ama mantıklı olarak şuna bak

if(isCrossed == 1 && < upLevel sor)

Yakın olduklarını kontrol etmiyorsunuz, sadece fiyatın hattan daha düşük olduğunu kontrol ediyorsunuz.

 

bende olduğunu biliyordum!!!

Tam olarak ne almak istediğinizi test ediyorum ve önceki gönderilerimde sadece yanlış EA'yı koydum.

Bu EA, hepsinin aynı anda üstün olup olmadığını kontrol etmek için 4 TF'ye kadar kontrol edebilir. İsterseniz sadece birini seçebilirsiniz.

Bir göstergeden mantığın nasıl çıkarılacağını ve birden fazla TF'nin nasıl birleştirileceğini örnek olarak kullanabilirsiniz.

Saygılarımızla

Eli

Dosyalar:
tbs.mq4  7 kb
 
elihayun:
bende olduğunu biliyordum!!!

Tam olarak ne almak istediğinizi test ediyorum ve önceki gönderilerimde sadece yanlış EA'yı koydum.

Bu EA, hepsinin aynı anda üstün olup olmadığını kontrol etmek için 4 TF'ye kadar kontrol edebilir. İsterseniz sadece birini seçebilirsiniz.

Bir göstergeden mantığın nasıl çıkarılacağını ve birden fazla TF'nin nasıl birleştirileceğini örnek olarak kullanabilirsiniz.

Saygılarımızla

Eli

bu ilgi çekici Henüz çoklu TF göstergelerini gerçekten incelemedim ama bunların bir değeri olduğuna inanıyorum.