Nasıl kodlanır? - sayfa 110

 

Merhaba.

Senin numaralarını öğrenmek ve benimkini göstermek için sabırsızlanıyorum.

 
CodeMuncher:
Merhaba. Senin numaralarını öğrenmek ve benimkini göstermek için sabırsızlanıyorum.

Bu forumda çok güzel şeyler bulacaksınız.

Herhangi bir kısıtlama olmaksızın arama özelliğini okuyun ve kullanın !!!

Herhangi bir şey sormaktan çekinmeyin ... Burada birçok katkıda bulunanlar/yardımcılar var.

FerruFx

 
fireslayer26:
Bu kodda, 45 pip için ayarlanmış sondaki durdurmaya sahiptir. Ancak takip eden durak, 45 pip hareket edene kadar Etkinleştir görünmüyor. Takas yapıldığında takip eden durdurmanın etkinleştirilmesi için bunu nasıl değiştirmem gerekir?

extern string Remark1 = "== Main Settings ==";

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = true;

extern double Lots = 4;

extern int Slippage = 2;

extern bool UseStopLoss = false;

extern int StopLoss = 100;

extern bool UseTakeProfit = false;

extern int TakeProfit = 15;

extern bool UseTrailingStop = true;

extern int TrailingStop = 45;

extern bool MoveStopOnce = False;

extern int MoveStopWhenPrice = 50;

extern int MoveStopTo = 1;

extern int MaxConcurrentTrades = 2;

//Version 2.01

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start()

{

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

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

//| Variable End |

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

//Check position

bool IsTrade = False;

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

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderStopLoss() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(((OrderStopLoss - Ask) > (Point * TrailingStop)) || OrderStopLoss() == 0) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

Kırmızı değiştirildi

 

Değişiklikleri kırmızı yaptım, ancak şimdi EA çalışmak istemiyor gibi görünüyor. Bir göz atmanız için tüm EA'yı göndereceğim. Teşekkürler!

Dosyalar:
williams_ea.mq4  12 kb
 

orderstoploss'tan sonra () koyduğunuzdan emin olun.

 

Harika, başardı!

Bu göstergeye ne dersiniz....

Fiyatların nasıl açıldığına bağlı olarak farklı renkler göstermesi için değiştirilebilir mi? Mesela önceki çubuktan daha yüksek açılırsa fiyat yeşil olur, daha düşükse kırmızı olur ve hatta o zaman sarı olur mu? Bu renkler seçilebilirken? Ayrıca, sadece 6 yerine 10 açıklık gösterecek şekilde genişletebilir misiniz?

Ayrıca az önce düzelttiğimiz EA'da, "İzleyen Durdurmayı Etkinleştirmek için Pipler" gibi bir giriş ayarını nasıl koyardım. Bunu başka bir EA'da buldum ama nasıl kodlayacağımdan emin değilim.

Dosyalar:
period_open.mq4  23 kb
 

SiparişYorumu()

Sipariş Bileti()

SiparişLotları()

SiparişStopLoss()

SiparişAlKar()

SiparişAçıkZamanı()

Bunların hepsi potansiyel sipariş filtreleme araçlarıdır.

Bu özel işlemler hakkında onları benzersiz kılan başka neler var?

 
Ronald Raygun:
SiparişYorumu()

Sipariş Bileti()

SiparişLotları()

SiparişStopLoss()

SiparişAlKar()

SiparişAçıkZamanı()

Bunların hepsi potansiyel sipariş filtreleme araçlarıdır.

Bu özel işlemler hakkında onları benzersiz kılan başka neler var?

Siparişleri filtrelemek için en önemli iki tanesi OrderSymbol() ve OrderMagicNumber()'dir. Bir diğer not da OrderComment()'dir.

En iyi fikir, bunlardan birini Metaeditor'a girmek, ardından kelimeye tıklayıp ardından F1'e basmaktır. Bunu yapmak, yardımı gösterecek ve tüm sipariş işlevlerini listeleyecektir.

Mutlu programlama,

Hiachiever

 

OrderComment'ı kullanma

İşlemleri belirlemek için OrderComment() kullanırken dikkatli olun. Bazen komisyoncu yoruma karakterler ekler.

kullanmak en iyisidir

if (StringFind(OrderComment(), UserComment, 0) > 0)

{

// UserComment tarafından tanımlanan sipariş, OrderComment'ta bulundu

}

yerine

if (OrderComment() == KullanıcıYorumu)

{

// sipariş, UserComment tarafından tanımlanabilir

// OrderComment komisyoncu tarafından değiştirilmediyse

}

Robert

 

Beakeven'da kapanış işlemleri

................