Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
İş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
}
RobertKesinlikle ... Ve ayrıca, bazen EA'da kodlanmış orijinal yorum çok uzundur ve platform tarafından trocated olacaktır (yorumun geri kalanının "bellekte" olup olmadığından emin değilim, ancak yorum sütununda görüntülenmiyor).
FerruFx
EA ile ilgili yardıma ihtiyacım var
merhaba,
aynı anda uzun ve kısa pozisyonlar açan bir EA üzerinde çalışıyorum ve bu sorunla karşı karşıyayım...her iki pozisyon türü de açıkken, birincisinin kısa ve ikincisinin uzun olduğunu söyleyin...EA uzun pozisyonu kapatmayacak kısa devre hala açıksa, kısa devrenin kapanmasını bekleyecek ve koşullar sağlandığında uzun devreyi kapatacak ve bunun tersi de geçerlidir. EA'nın açık pozisyonları kapatması gereken kısmı aşağıdadır:
//---- Açık Pozisyonları Kapat
for(int cnt=0; cnt<toplam; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS);
{
//-- Uzun Kapat
if(OrderSymbol() == Symbol() && OrderType()==OP_BUY && rsi1>75 && rsi<75)
{
OrderClose(OrderTicket(),OrderLots(),Bid,5,Yeşil);
LotL=Lot;
}
//-- Kapat Kısa
if(OrderSymbol() == Symbol() && OrderType()==OP_SELL && rsi125)
{
OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
LotS=Lot;
}
}
}
*burada rsi1 önceki rsi ve rsi mevcut okumadır
*LotL & LotS, orijinal Lot'un çarpanıdır, her iki tarafta maksimum 3 pozisyon açacak şekilde ayarladım, bu nedenle bir tür açık pozisyonu kapatırken LotL & LotS orijinal boyutuna sıfırlanacak
EA, pozisyonları açarken amaçlandığı gibi çalışıyor ama sorun açık pozisyonları kapatmakla ilgili, bence döngü kısmındaki EA tüm açık pozisyonları değil, sadece ilkini okuyor... Bunu düzeltmek için herhangi bir yardım gerçekten takdir ediliyor! !
şerefe!
evcil hayvan
"İzleyen durdurmayı etkinleştirmek için Pip" özelliğini eklemeye çalışıyorum. Değiştirdiğim şey kırmızı. Başka ne eklenmesi gerekiyor?
extern string Remark1 = "== Main Settings ==";
extern int MagicNumber = 54321;
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 double Pips_Activate_TS = 5;
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 - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| 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((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if(Open[0] > Open[0+1] &&
Open[0+1] >= Open[0+2] &&
Open[0+2]>= Open[0+3] &&
Open[0+3] >= Open[0+4] &&
Open[0+4] >= Open[0+5] &&
Open[0+5] >= Open[0+6]) Order = SIGNAL_SELL;
if(Open[0] < Open[0+1] &&
Open[0+1] <= Open[0+2] &&
Open[0+2]<= Open[0+3] &&
Open[0+3] <= Open[0+4] &&
Open[0+4] <= Open[0+5] &&
Open[0+5] <= Open[0+6]) Order = SIGNAL_BUY;
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(DecideToOpenTrade(OP_BUY) && TradeSlotsAvailable()) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(DecideToOpenTrade(OP_SELL) && TradeSlotsAvailable()) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
Merhaba tüccarlar,
Özel bir göstergeden Uzman Danışman geliştirirken bu küçük sorunum var, "iCustom" işlevini denedim ancak göstergem her zaman aynı değeri veriyor.
21473 gibi bir şey döndürür ..., bunun gibi
EA'nın sat ve al ok sinyallerinin ne zaman üretildiğini tanımasını ve ilgili ticaret eylemini gerçekleştirmesini istiyorum (yani gösterge yukarı söylediğinde satın al ve aşağı söylediğinde sat)
İşte göstergenin kodu, birileri en kısa sürede bir çözüm bulabilirse çok memnun olurum.Lütfen iCustom() işlevinizle kod satırlarını da gönderin
FerruFx
üzgünüm, elimdeki bu...
Rsi Ea
Bu benim ilk EA. 3 zaman diliminde 2 rsi geçişini kullanır. Haçlara karşı alım satım yapmakla ilgili bir sorunum var. Satması gerektiğinde satın almak, alması gerektiğinde satmak. Birisi lütfen koda bakıp nerede yanlış yaptığımı söyleyebilir mi? Yanlış bir şey göremedim.
Sorunun bir resmini ve bir resmini ekledim.
EA kodu için yardıma ihtiyacınız var!
Herkese selam,
Bildiğiniz gibi fx piyasası 24 saat, bilgisayar başında oturmadan bir gecede işlem yapmakta içim rahat değil. Bu yüzden, fiyat benim favori yönüme doğru hareket ederse, ticareti korumanın en iyi yolunun program olduğunu düşünüyorum. Örneğin toplamda 5 lot açsam, kâr 50 pip'in üzerine çıkınca otomatik olarak zararı durdur'u başa baş a geçiyor. Kar 100 pips üzerinde olduğunda 30 pips korumak için hareket eder. Kar 200 pips üzerinde olduğunda 50 pips korumak için hareket eder. ve benzeri.
Kendimi kodlamaya çalıştım. Ama grafiğime sürüklediğimde ve alım satımı canlı olarak ayarladığımda çalışmıyor. Herhangi bir kurum koduma bakmama ve düzeltmeme yardımcı olabilir mi? Çok teşekkürler.
# mülkiyet telif hakkı "x li"
#özellik bağlantısı ""
#özellik gösterisi_onayla
//---- giriş parametreleri
harici int hedef1 =50;
harici int hedef2 =100;
harici int hedef3 =150;
harici int hedef4 =200;
harici int hedef5 =300;
harici int koruma1 =0;
harici int koruma2 =5;
harici int koruma3 =50;
harici int koruma4 =100;
//+------------------------------------------- ------------------------------+
//| komut dosyası "stoploss'u korumak için taşı (50->0;100->5;150->50;200->50;300->100)" |
//+------------------------------------------- ------------------------------+
int başlangıç()
{
bool sonucu;
double stop_loss,point,EntryPrice,kâr;
int cmd,toplam,hata,i;
//----
toplam=SiparişToplam();
point=MarketInfo(Symbol(),MODE_POINT);
//----
for(i=0; i<toplam; i++)
{
if(Sipariş Seçimi(i,SELECT_BY_POS,MODE_TRADES))
{
cmd=SiparişTürü();
EntryPrice=OrderOpenPrice();
//---- satın alma siparişleri dikkate alınır
if(cmd==OP_SATIN AL)
{
kâr=Teklif-GirişFiyatı;
if(kâr>hedef1*puan && kar<target2*puan)
{
stop_loss=EntryPrice+protect1*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
if(kâr>hedef2*puan && kar<target3*puan)
{
stop_loss=EntryPrice+protect2*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
if(kâr>hedef3*puan && kar<target4*puan)
{
stop_loss=EntryPrice+protect3*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
if(kâr>target4*puan && kar<target5*puan)
{
stop_loss=EntryPrice+protect3*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
if(kâr>hedef5*puan)
{
stop_loss=EntryPrice+protect4*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
}
//---- satış emirleri dikkate alınır
if(cmd==OP_SAT)
{
kâr=GirişFiyatı-Sor;
if(kâr>hedef1*puan && kar<target2*puan)
{
stop_loss=EntryPrice-protect1*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
if(kâr>hedef2*puan && kar<target3*puan)
{
stop_loss=EntryPrice-protect2*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
if(kâr>hedef3*puan && kar<target4*puan)
{
stop_loss=EntryPrice-protect3*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
if(kâr>target4*puan && kar<target5*puan)
{
stop_loss=EntryPrice-protect3*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
if(kâr>hedef5*puan)
{
stop_loss=EntryPrice-protect4*point;
sonuç=OrderModify(OrderTicket(),0,stop_loss,0,0,CLR_NONE);
}
}
}
else { Print("Sipariş seçiminde hata oluştu ", GetLastError()); kırmak; }
}
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
Rsi Ea
İşlemleri açmak ve kapatmak için neden aynı değişkeni kullandığınızı anlamıyorum, ancak işe yarayabilir.
Bu sorun olabilir:
"Sipariş" global bir değişkendir. Bu nedenle, Başlat işlevi aracılığıyla yapılan her çalıştırmanın sonunda, atandığı son değere ayarlanacak ve bu değeri bir sonraki çalıştırmanın başlangıcı için kullanacaktır. Yerel yaparsanız (Başlat'ın içinde hareket ettirirseniz), düzeltebilir. Aksi takdirde, son kullanımınızdan sonra sıfırlamanız gerekecektir.
İyi avlar,
büyük olmak