Nasıl kodlanır? - sayfa 278

 

20 gün boyunca geriye dönük test yaptım ve para kaybedeceğim gibi görünüyor

Bir yıl geriye dönük test yapacağım bakalım

ama her şeyden önce, harici dize başlangıcındaki ve harici dize sonundaki değeri değiştirerek süreleri değiştirebilirsem ihtiyacım var?

 

Ayrıca fark ettiğim şey, EA'nın günde birkaç kez işlem yapması. Bu yüzden EA'ya bu Min-Max -/+ 5 pip aralığından ilk çıkış için sadece bir işlem yapmasını söylemeliyiz. Ayrıca, sadece kaybı durdurmak yerine takip eden durdurmayı dahil etmeliyiz.

Bir de sayılarla ilgili soru. 300, 300 pip'e eşit değil mi? 30 pips olmak için durmamız ve 50 pips kar almamız gerekiyor. Ayrıca magis = 123 ne anlama geliyor?

bunun için aynı soru if(Teklif<=(düşük-0.005)) 0.005 burada 50 pip değil mi?

harici çift stopLoss değil = 300.0 ;

harici çift alProfit = 500.0 ;

harici dize Begin="02:00";

dış dize End="10:00";

dış çift mesafe = 80;

bool isECN = doğru;

bool koşul = yanlış;

bool koşul2 = yanlış;

çift düşük;

çift yüksek;

harici çift lot = 0.1;

int büyü = 123;

int kayma = 1;

string yorum = "";

int bileti;

 
Avasys:
Ayrıca fark ettiğim şey, EA'nın günde birkaç kez işlem yapması. Bu yüzden EA'ya bu Min-Max -/+ 5 pip aralığından ilk çıkış için sadece bir işlem yapmasını söylemeliyiz. Ayrıca, sadece kaybı durdurmak yerine takip eden durdurmayı dahil etmeliyiz.

Bir de sayılarla ilgili soru. 300, 300 pip'e eşit değil mi? 30 pips olmak için durmamız ve 50 pips kar almamız gerekiyor. Ayrıca magis = 123 ne anlama geliyor?

bunun için aynı soru if(Teklif<=(düşük-0.005)) 0.005 burada 50 pip değil mi?

harici çift stopLoss değil = 300.0 ;

harici çift alProfit = 500.0 ;

harici dize Begin="02:00";

dış dize End="10:00";

dış çift mesafe = 80;

bool isECN = doğru;

bool koşul = yanlış;

bool koşul2 = yanlış;

çift düşük;

çift yüksek;

harici çift lot = 0.1;

int büyü = 123;

int kayma = 1;

string yorum = "";

int bileti;

[lang=pl]Haklısınız, 0,005 yerine 0,0005 olmalıdır. 300 ve 500, beş basamaklı komisyoncu kullandığım için 300 puan yani 30 pip demek.

Lütfen bana ihtiyacın olan bir tür son durak istediğini söyle? Sihirli sayı hakkında. Gördüğün gibi seni sevmiyorsan sihri değiştiriyorum 123 [/lang]

Dosyalar:
simple_ea.mq4  4 kb
 
g.pociejewski:
[lang=pl]Haklısınız, 0,005 yerine 0,0005 olmalıdır. 300 ve 500, beş basamaklı komisyoncu kullandığım için 300 puan yani 30 pip demek. Lütfen bana ihtiyacın olan bir tür son durak istediğini söyle? Sihirli sayı hakkında. Gördüğün gibi seni sevmiyorsan sihri değiştiriyorum 123 [/lang]

teşekkürler

Yani bu EA artık günde sadece bir kez alım satım yapıyor, bu nedenle seviyelerin kırılması gün içinde birkaç kez gerçekleşebilir, ancak yalnızca bir kez alım satım yapabilir.

Ayrıca EURJPY yüksek değerli para birimi olduğu için hala aynı numaralandırmayı mı kullanıyorum yoksa 00 mı hareket ediyorum?

ve ayrıca sayıları kendim değiştirebilir veya değiştirebilir miyim, zararı durdur, kar al , zamanlar

takip eden durdurma ile ilgili. Kâr arttığında, kârı kilitlemek için 35 pip sondaki stop izlemesini istiyorum.

peki ya burada değiştirirsem:

harici çift stopLoss = 300.0 ; (4 basamaklı komisyoncu kullanıyorum, bu yüzden bunu değiştirmeli miyim?)

harici çift alProfit = 500.0 ;

harici string Begin=" 0:00 "; (önceki günün 22:00 ve o günün 06:00 zaman aralığını yapmak istersem ne olur?)

dış dize End=" 08:15 ";

dış çift mesafe = 60;

bool isECN = doğru;

bool koşul = yanlış;

bool koşul2 = yanlış;

çift düşük;

çift yüksek;

harici çift lot = 0.1;

int büyü = 123;

int kayma = 1;

string yorum = "";

int bileti;

ayrıca bunu değiştirirsem ne olur

if(Teklif<=(düşük- 0,005 ))

Kodun işlevselliğini etkilemeyebilir, değil mi?

Geriye dönük test yapmaya çalıştığımda sahip olduğu tek sorun, EA'nın bir günde birkaç işlem gerçekleştirmiş gibi olduğunu anladım, bu yüzden günde bir çift için yalnızca bir işlem yürütmek için kodda yönetebilir misiniz?

 

Tekrar merhaba

Tamam, JPY çiftlerinden daha düşük değere sahip GBPUSD gibi çiftler için mesafenin 80 olmaması gerektiğini öğrendim, bu nedenle JPY çiftleri durumunda, düşük değerli çiftlere göre 10X mesafe olmalıdır.

ve tekrar, geriye doğru test ettiğimde bir şeyi anlayamadım, sonuçta EA aynı paritede bir günde birden fazla işlem görmüş gibi görünüyor.

Öyleyse, EA pozisyona girerse, bu pozisyonun o gün sadece bir olması mümkün mü?

Teşekkürler

Ayrıca aşağıdakilerin anlamı nedir:

int kayma = 1;

string yorum = "";

int bileti;

ve ayrıca EA'ya komut dosyası ekleyebilir miyim ve ticaret yapıldığında bana sms veya e-posta ile gönderilir mi?

Teşekkürler

 

Tarihte bir sipariş listeleniyorsa, bugün için StopTrading

Merhaba,

belki birileri yapmama rehberlik edebilir:

- Sipariş yürütülür, kâr veya zararda kapatılır ve tarihte listelenir

- şimdi tüm gün boyunca bu çiftte (sembolde) ticareti devre dışı bırakmak/açık yeni emirleri durdurmak istiyorum

- ertesi gün yeni bir sipariş yürütülebilir

"Çubuk Başına Maksimum İşlem" işlevi gibidir, ancak tarihe dayalıdır.

farklı test edilmiş kod parçacıkları başarısız, çünkü genişletilmiş kodlama becerilerim yok

misal:

1 2008.01.07 02:36 sat 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00

2 2008.01.07 03:14 kapat 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00

3 2008.01.07 03:14 sat 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00

4 2008.01.07 07:54 kapat 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00

5 2008.01.07 07:54 sat 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00

6 2008.01.09 15:56 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04

7 2008.01.10 14:24 4 satın al 0.10 1.4708 0.0000 0.0000 0.00 10063.04

8 2008.01.10 14:47 kapat 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54

herhangi bir yardım çok takdir edilmektedir

Saygılarımızla

Michael

 
ixbone:
Merhaba,

belki birileri yapmama rehberlik edebilir:

- Sipariş yürütülür, kâr veya zararda kapatılır ve tarihte listelenir

- şimdi tüm gün boyunca bu çiftte (sembolde) ticareti devre dışı bırakmak/açık yeni emirleri durdurmak istiyorum

- ertesi gün yeni bir sipariş yürütülebilir

bu bir "Çubuk Başına Maks. İşlem" işlevi gibidir, ancak tarihe dayalıdır.

çok sayıda farklı test edilmiş kod parçacığı başarısız, çünkü genişletilmiş kodlama becerilerim yok

misal:

1 2008.01.07 02:36 sat 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00

2 2008.01.07 03:14 kapat 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00

3 2008.01.07 03:14 sat 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00

4 2008.01.07 07:54 kapat 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00

5 2008.01.07 07:54 sat 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00

6 2008.01.09 15:56 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04

7 2008.01.10 14:24 4 satın al 0.10 1.4708 0.0000 0.0000 0.00 10063.04

8 2008.01.10 14:47 kapat 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54

herhangi bir yardım çok takdir edilmektedir

Saygılarımızla

Michael

[lang=pl]Merhaba Michael,

Bir soru, mevcut gün içinde herhangi bir pozisyon kapandığında yeni pozisyon açmayı durdurmanız mı gerekiyor yoksa örneğin kısa pozisyon açmaya izin vermiyor musunuz?

durakta kapalı mı OP_BUY durumunda nasıl yapılacağına dair herhangi bir örnek var (diğerleri için benzer)

int zaman;

bool koşul = doğru;

çift stopLoss = 50;

çift alKar = 70;

çift lot = 0.1;

int siparişler = 0;

int büyü = 123;

//+------------------------------------------- -------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- -------------------+

int init()

{

//----

//----

dönüş(0);

}

//+------------------------------------------- -------------------+

//| uzman sıfırlama işlevi |

//+------------------------------------------- -------------------+

int tanım()

{

//----

//----

dönüş(0);

}

//+------------------------------------------- -------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- -------------------+

int başlangıç()

{

Print(countOrders(sihirli, OP_BUY));

if(siparişler !=countOrders(magic,OP_BUY)) koşul = yanlış;

if(time != DayOfWeek()) koşul = doğru;

if(koşul) {

OrderSend(Symbol(),OP_BUY,lots,Ask, 1,sltpValue(Ask - StopLoss*Point, stopLoss),sltpValue(Teklif+ alProfit*Puan,takeProfit),"",magic);

}

siparişler = countOrders(sihir,OP_BUY);

zaman =Hafta Günü();

//----

dönüş(0);

}

int countOrders(int oMagic,int oType) {

int sayı=0;

for(int i=0;i<OrdersTotal();i++) {

if(OrderSelect(i,SELECT_BY_POS)) {

if(OrderMagicNumber()==oMagic) {

if(OrderSymbol()==Symbol()) {

if(OrderType()==oType || oType<0) {

say++;

}

}

}

}

}

dönüş(sayım);

}

double sltpValue(double w1, int w2){

if(w2 == 0)

dönüş (0);

dönüş (NormalizeDouble(w1, Digits));

}

//+------------------------------------------- -------------------+

Umarım açıktır. Herhangi bir sorunuz olması durumunda lütfen benimle iletişime geçin.

Şerefe,

Grzesiek[/lang]

 

Merhaba Grzesiek,

evet sadece o gün içinde yeni pozisyon açmayı durdurun, al, sat, beklemede veya iptal fark etmez:

- bir emir kar, zarar, iptal veya bekleyen silinmiş ve geçmişe not edilmişse - bu sembol () için geçerli günde herhangi bir yeni ticarete izin verilmez

- Yeni bir gün olursa her türlü yeni emir yürütülebilir.

ne yaptım, çalışmıyor:

extern bool Only1OrderPerDay=true;

if(Only1OrderPerDay==true){

CountHistoryOrders();

}

void CountHistoryOrders(){

for(int d=0;d<OrdersHistoryTotal();d++){

OrderSelect(d,SELECT_BY_POS,MODE_HISTORY);{

if(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==0))d++;

Print("GeçmişSiparişler"+DoubleToStr(d,0));

{

if(d>0 ....zaman?...){

dönüş;

}}}}}

yardım için teşekkürler

Michael

g.pociejewski:
[lang=pl]Merhaba Michael,

Bir soru, mevcut gün içinde herhangi bir pozisyon kapandığında yeni pozisyon açmayı durdurmanız mı gerekiyor yoksa örneğin kısa pozisyon açmaya izin vermiyor musunuz?

durakta kapalı mı OP_BUY durumunda nasıl yapılacağına dair herhangi bir örnek var (diğerleri için benzer)

int zaman;

bool koşul = doğru;

çift stopLoss = 50;

çift alProfit = 70;

çift lot = 0.1;

int siparişler = 0;

int büyü = 123;

//+------------------------------------------- -------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- -------------------+

int init()

{

//----

//----

dönüş(0);

}

//+------------------------------------------- -------------------+

//| uzman sıfırlama işlevi |

//+------------------------------------------- -------------------+

int tanım()

{

//----

//----

dönüş(0);

}

//+------------------------------------------- -------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- -------------------+

int başlangıç()

{

Print(countOrders(sihirli, OP_BUY));

if(siparişler !=countOrders(magic,OP_BUY)) koşul = yanlış;

if(time != DayOfWeek()) koşul = doğru;

if(koşul) {

OrderSend(Symbol(),OP_BUY,lots,Ask, 1,sltpValue(Ask - StopLoss*Point, stopLoss),sltpValue(Teklif+ alProfit*Puan,takeProfit),"",magic);

}

siparişler = countOrders(sihir,OP_BUY);

zaman =Hafta Günü();

//----

dönüş(0);

}

int countOrders(int oMagic,int oType) {

int sayı=0;

for(int i=0;i<OrdersTotal();i++) {

if(OrderSelect(i,SELECT_BY_POS)) {

if(OrderMagicNumber()==oMagic) {

if(OrderSymbol()==Symbol()) {

if(OrderType()==oType || oType<0) {

say++;

}

}

}

}

}

dönüş(sayım);

}

double sltpValue(double w1, int w2){

if(w2 == 0)

dönüş (0);

dönüş (NormalizeDouble(w1, Digits));

}

//+------------------------------------------- -------------------+

Umarım açıktır. Herhangi bir sorunuz olması durumunda lütfen benimle iletişime geçin.

Şerefe,

Grzesiek[/lang]
 

Sürükle ve Bırak Kaybı Durdur

Merhaba

Sürükle ve Bırak Durdurma kaybı komut dosyasına sahibim ve onu kullanmayı seviyorum. Ama benim broker doz ile aynı scart 2 sipariş için çalışmıyor sadece 1 sipariş ayarlayın. Aynı yerde 2 sipariş için stoploss ayarlamak istiyorum.

Sorun nedir ? Diğer komisyoncu için iyi çalışıyor.

Lütfen yardım et

int başlangıç()

{

//----

int basamaklar = MarketInfo(Symbol(),MODE_DIGITS);

çift değer = NormalizeDouble(WindowPriceOnDropped(),rakamlar);

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

{

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

devam etmek;

if(OrderSymbol()!=Symbol())

devam etmek;

Yenileme Oranları();

if(OrderType()==OP_BUY)

if(değer<Teklif)

OrderModify(OrderTicket(),OrderOpenPrice(),değer, OrderTakeProfit(),OrderExpiration(),Beyaz);

if(OrderType()==OP_SEL)

if(değer>Sor)

OrderModify(OrderTicket(),OrderOpenPrice(),değer, OrderTakeProfit(),OrderExpiration(),Beyaz);

if((OrderType()==OP_BUYSTOP) || (OrderType()==OP_BUYLIMIT))

if(değer<SiparişAçFiyat())

OrderModify(OrderTicket(),OrderOpenPrice(),değer, OrderTakeProfit(),OrderExpiration(),Beyaz);

if((OrderType()==OP_SELLSTOP) || (OrderType()==OP_SELLLIMIT))

if(değer>OrderOpenPrice())

OrderModify(OrderTicket(),OrderOpenPrice(),değer, OrderTakeProfit(),OrderExpiration(),Beyaz);

}

dönüş(0);

}

//+------------------------------------------- -------------------+

 

Bir EA'da iki farklı göstergenin XY koordinat pozisyonunu satın almak ve satmak için nasıl bulabilirim?

aynı alt pencerede bir Macd ve başka bir gösterge mi söylüyorsunuz?