Nasıl kodlanır? - sayfa 283

 

Matematiksel Beklenti Yardım Lütfen

Merhaba

Kendimi bir dereceye kadar snooked gibi görünüyor.

EA'mda bir beklenti formülünü kullanmaya çalışıyorum 1-avgwin/avgloss*sistem doğruluğu+1 formülüne sahibim ve bu iyi çalışıyor, ancak Sipariş ile StopLoss arasındaki farkı nasıl hesaplayacağımı ve göstereceğimi bilmek istiyorum Örneğin

OP_SELLSTOP 1.63406

StopLoss 1.63603

1.63406 - 1.63603 = -0.00197 Bunun pozitif bir sayı olması gerektiğini düşünüyorum.

1.45 beklentisi

Yani TakeProfit'i hesaplamak için -0.00197 * 1.45 = -0.00285

TP'yi OP_SELLSTOP'a yerleştirin 1.63406 - 1.63121

ve Uzun pozisyon için tersi

hepsi bu konunun bir parçası https://www.mql5.com/en/forum/178980 ve excel sayfasına bir göz atarsanız hemen orada olduğumu göreceksiniz.

Herhangi bir yardım harika olurdu.

Şerefe Beno

 
Beno:
Merhaba

Kendimi bir dereceye kadar snooked gibi görünüyor.

EA'mda bir beklenti formülünü kullanmaya çalışıyorum 1-avgwin/avgloss*sistem doğruluğu+1 formülüne sahibim ve bu iyi çalışıyor, ancak Sipariş ile StopLoss arasındaki farkı nasıl hesaplayacağımı ve göstereceğimi bilmek istiyorum Örneğin

OP_SELLSTOP 1.63406

StopLoss 1.63603

1.63406 - 1.63603 = -0.00197 Bunun pozitif bir sayı olması gerektiğini düşünüyorum.

1.45 beklentisi

Yani TakeProfit'i hesaplamak için -0.00197 * 1.45 = -0.00285

TP'yi OP_SELLSTOP'a yerleştirin 1.63406 - 1.63121

ve Uzun pozisyon için tersi

hepsi bu konunun bir parçası https://www.mql5.com/en/forum/178980 ve excel sayfasına bir göz atarsanız hemen orada olduğumu göreceksiniz.

Herhangi bir yardım harika olurdu.

Şerefe Beno

En basit yol, bunu düşünmemek ve kullanmaktır:

double MathAbs(çift değer)

MathAbs - MQL4 Belgeleri

Saygılarımızla

 

Merhaba CRN

cevap için teşekkürler bende bunu denedim

double PipSL = MathAbs (OrderOpenPrice() - StopLoss); Print (MathAbs (OrderOpenPrice() - StopLoss));

Bence doğru ama sadece PipSL 15769.68328362 yazdırıyor

1 2011.01.04 00:00 satış durdurma 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00

2 2011.01.07 08:20 sat 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00

3 2011.01.07 08:20 1 değiştir 0.01 1.54279 1.57712 0.00000 0.00 10000.00

4 2011.01.11 23:40 Durakta kapanış 1 0.01 1.56045 1.57712 0.00000 -17.66 9982.34

ve satış ile SL arasındaki gerçek farkı istiyorum

 

Biri bana yardım etsin.

Herkese merhaba ve Mutlu Noeller.

Öncelikle bu forumda yeniyim. Ea ile ilgili bir sorunum var ve biri bunu benim için düzeltebilir mi? Sorun, bu EA'yı gerçek ticaret için nasıl ayarlayacağım ve EA, canlı ticaretimde sadece gri renk.

İşte ek:

spielershedge_library.mqh

spielershedge_pipstar.mq4

spielershedge_ea_v2.8.1.ex4

spielershedge_divergence_v5.1.ex4

-Eskiden olsa da belki hepimize fayda sağlayacak bir şeyler paylaşıp alabiliriz diye düşünüyorum.

- Bunu , vadeli işlem spread ticaretinden türetilen Hedge ticaret spieler sisteminden buldum - Sayfa 193 @ Forex Factory (SpielersHedge PipStar.mq4) ve geri kalanı vadeli işlem spread ticaretinden türetilen Hedge ticaret spieler sisteminden - Sayfa 87 @ Forex Fabrikası

-Kötü ingilizcem için özür dilerim.

P/S : Gelişimim için hepinizden gelen ders, rehberler, yorumlar ve eleştiriler için çok teşekkür ederim. Bilgimizi ne kadar çok verirsek, bilgiyi o kadar çok kazanacağımıza inanıyordum.

 
Beno:
Merhaba CRN

cevap için teşekkürler bende bunu denedim

double PipSL = MathAbs (OrderOpenPrice() - StopLoss); Print (MathAbs (OrderOpenPrice() - StopLoss));

Bence doğru ama sadece PipSL 15769.68328362 yazdırıyor

1 2011.01.04 00:00 satış durdurma 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00

2 2011.01.07 08:20 sat 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00

3 2011.01.07 08:20 1 değiştir 0.01 1.54279 1.57712 0.00000 0.00 10000.00

4 2011.01.11 23:40 Durakta kapanış 1 0.01 1.56045 1.57712 0.00000 -17.66 9982.34

ve satış ile SL arasındaki gerçek farkı istiyorum

Gerçek kullanıma ihtiyacınız varsa iClose (0,0,0)-OrderStopLoss() kullanın.

ama önce OrderSelect ile doğru sırayı seçin;

Saygılarımızla

 

CloseAll Yardımı ile Zaman Filtresi Lütfen

günaydın

EA üzerinde çalışan bir Zaman Filtrem var ama buna bir kapanış eklemeye çalışıyorum, bu yüzden eğer zaman kapanış saatine eşitse, o zaman tüm açık pozisyonları kapat

extern string timefilter="Time Filter";

extern int gmtshift=1; // gmt offset of the broker

extern bool generalfilter=false; // enable time filter

extern int starthour=7; // start hour to trade after this hour

extern int startminutes=0; // minutes of the start hour

extern int endhour=21; // stop to trade after this hour

extern int endminutes=0; // minutes of the start hour

extern bool tradesunday=true; // trade on sunday

extern bool fridayfilter=false; // enable special time filter on friday

extern int fridayhour=21; // stop to trade after this hour

extern int fridayminutes=0; // minutes of the friday hour[/CODE]

[CODE]void start() {

if(generalfilter){

nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;

if(nstarthour<10)istarthour="0"+nstarthour;

if(nstarthour>9)istarthour=nstarthour;

if(startminutes<10)istartminutes="0"+startminutes;

if(startminutes>9)istartminutes=startminutes;

tstart=StrToTime(istarthour+":"+istartminutes);

nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;

if(endhour<10)iendhour="0"+nendhour;

if(endhour>9)iendhour=nendhour;

if(endminutes<10)iendminutes="0"+endminutes;

if(endminutes>9)iendminutes=endminutes;

tend=StrToTime(iendhour+":"+iendminutes);

}

if(fridayfilter){

nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;

if(nfridayhour<10)ifridayhour="0"+nfridayhour;

if(nfridayhour>9)ifridayhour=nfridayhour;

if(fridayminutes<10)ifridayminutes="0"+fridayminutes;

if(fridayminutes>9)ifridayminutes=fridayminutes;

tfriday=StrToTime(ifridayhour+":"+ifridayminutes);

}

if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))

|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);

if (TimeCurrent() >= tend) {

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

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==TradeSymbol) {

if (OrderType()==OP_BUY) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);

}

if (OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);

}

}

}

}

}
 

Lütfen bana yardım et

extern int BuyStopTakeProfit =10;

extern int BuyStopSL=1000;

nasıl kodlanır

BuyStopTakeProfit TakeProfit'e basarsa, Bekleyen Tüm Siparişi Sil

lütfen herkes yardım edebilir

 

Yardım!!!! Lütfen!!!! iÖzel işlev

Yardım,

C_EA_rev6.mq4'ümün VSATEXTSIGNALS.mq4 özel göstergesinden herhangi bir arabelleği çağırmasını sağlamak için her şeyi denedim. iCustom işlevini kullandım ancak her zaman 2147483647 döndürüyor ve bunun bir hata kodu olduğunu anlıyorum. Özel gösterge, hacim yayılımı analiz tekniklerine dayalı olarak metin sinyallerini grafiğe yerleştirir. Bir grafiğe eklediğimde özel gösterge düzgün çalışıyor. Bunun için sayısız saat harcadım ve bildiğim her kombinasyonu denedim. Herhangi bir yardım çok takdir edilecektir. Ayrıca bir sorum var, bir komut dosyası veya .dll dosyası çağıran özel bir göstergede iCustom işlevini kullanabilir misiniz?

Gösterge kodu ve EA için eklere bakın.

Teşekkürler,

cmfxtrader

Dosyalar:
 
cmfxtrader:
Yardım,

C_EA_rev6.mq4'ümün VSATEXTSIGNALS.mq4 özel göstergesinden herhangi bir arabelleği çağırmasını sağlamak için her şeyi denedim. iCustom işlevini kullandım ancak her zaman 2147483647 döndürüyor ve bunun bir hata kodu olduğunu anlıyorum. Özel gösterge, hacim yayılımı analiz tekniklerine dayalı olarak metin sinyallerini grafiğe yerleştirir. Bir grafiğe eklediğimde özel gösterge düzgün çalışıyor. Bunun için sayısız saat harcadım ve bildiğim her kombinasyonu denedim. Herhangi bir yardım çok takdir edilecektir. Ayrıca bir sorum var, bir komut dosyası veya .dll dosyası çağıran özel bir göstergede iCustom işlevini kullanabilir misiniz?

Gösterge kodu ve EA için eklere bakın.

Teşekkürler,

cmfxtrader

Hey,

Mesele şu ki, göstergeden arabelleği okumaya çalışırken, arabellek olmayan metin mesajları verir. Bu nedenle EMPTY_VALUE olan 2147483647 değerini alıyorsunuz, bu bir hata değil.

Her neyse, sanırım bu göstergeden gelen sinyalleri otomatikleştirmek istiyorsunuz. Bunun için basit bir çözüm var. Göstergenin 7 arabelleğe (#property gösterge_buffers 7) sahip olduğu bildirildi, ancak yalnızca 5 kullanıyor. Göstergeler en fazla 8 arabellek kullanabilir. Bu, yalnızca hesaplamalarınız için başka bir ek arabellek bildirebileceğiniz ve onu tanımlı mesajlarla doldurabileceğiniz anlamına gelir. TextOutput işlevinde mesaj numaralarını bulacaksınız. Hangi mesajın görüntülendiğine bağlı olarak, arabelleğinize numaralar eklemeniz yeterlidir. Örneğin, metin : "UPTHRUST / Weakness_" ise arabelleğinize 1 ekleyin, mesaj PSEUDO UPTHRUST / Weakness_ ise 4 ekleyin ve bu şekilde devam edin. Tamponun indeksi, "i" değişkeninden gelen değerle aynı olacaktır.

İkinci sorunuza gelince: iCustom işlevini her zaman bir gösterge (komut dosyası değil) için kullanabilir ve göstergede belirtilen arabellekleri dolduruyorsa değerleri okuyabilirsiniz. Örneğin, bu çizgiler çizen bir gösterge olacaksa, o zaman çizgi değerlerini okuyabilirsiniz - çünkü bir şey çizmek için (etiketler hariç) göstergenin arabellekleri doldurması gerekir. Gösterge grafik nesneleri oluşturacaksa (iliştirdiğiniz gibi), o zaman şunları yapmanız gerekir: a) grafik nesnelerinden değerleri okumak veya b) göstergeyi yeniden kodlamak (yukarıda önerdiğim gibi). Göstergenin DLL kullanıp kullanmaması önemli değil - sadece iCustom işlevinden değerlerini okumak için arabelleği düzgün doldurması gerekiyor.

 
Beno:
günaydın

EA üzerinde çalışan bir Zaman Filtrem var ama buna bir kapanış eklemeye çalışıyorum, bu yüzden eğer zaman kapanış saatine eşitse, o zaman tüm açık pozisyonları kapat

extern string timefilter="Time Filter";

extern int gmtshift=1; // gmt offset of the broker

extern bool generalfilter=false; // enable time filter

extern int starthour=7; // start hour to trade after this hour

extern int startminutes=0; // minutes of the start hour

extern int endhour=21; // stop to trade after this hour

extern int endminutes=0; // minutes of the start hour

extern bool tradesunday=true; // trade on sunday

extern bool fridayfilter=false; // enable special time filter on friday

extern int fridayhour=21; // stop to trade after this hour

extern int fridayminutes=0; // minutes of the friday hour[/CODE]

[CODE]void start() {

if(generalfilter){

nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;

if(nstarthour<10)istarthour="0"+nstarthour;

if(nstarthour>9)istarthour=nstarthour;

if(startminutes<10)istartminutes="0"+startminutes;

if(startminutes>9)istartminutes=startminutes;

tstart=StrToTime(istarthour+":"+istartminutes);

nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;

if(endhour<10)iendhour="0"+nendhour;

if(endhour>9)iendhour=nendhour;

if(endminutes<10)iendminutes="0"+endminutes;

if(endminutes>9)iendminutes=endminutes;

tend=StrToTime(iendhour+":"+iendminutes);

}

if(fridayfilter){

nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;

if(nfridayhour<10)ifridayhour="0"+nfridayhour;

if(nfridayhour>9)ifridayhour=nfridayhour;

if(fridayminutes<10)ifridayminutes="0"+fridayminutes;

if(fridayminutes>9)ifridayminutes=fridayminutes;

tfriday=StrToTime(ifridayhour+":"+ifridayminutes);

}

if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))

|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);

if (TimeCurrent() >= tend) {

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

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==TradeSymbol) {

if (OrderType()==OP_BUY) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);

}

if (OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);

}

}

}

}

}

bu kısmı kontrol etmeye çalışın:

if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))

|| (tradesunday==yanlış && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);

kodun diğer kısmı daha kolay olabilirdi ama çalışıyor olmalı.

Ancak, tüm bölümleri kapatmadan önce komut dosyasından çıkarsanız, çalışmaz ve komut dosyası bunu yapıyor gibi görünüyor.

Örneğin şu kısma bir göz atın:

(fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday) return(0);

İngilizce'de şu anlama gelir: Cuma ise ve Cuma filtresi AÇIK ise ve Zaman İşareti geçildiyse (örn.

Şöyle olmalıdır: Cuma ise ve Cuma filtresi AÇIK ise ve Zaman İşareti TÜMÜNÜ KAPAT geçirilmişse ve (örn. bitiş saati 18.00 ve 18.01 ise) sonra geri dön (0).