Nasıl kodlanır? - sayfa 111

 
MrPip:
İş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

Kesinlikle ... 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);

}

 
 
mifiglo:
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.

Dosyalar:
 

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

Neden: