Sormak! - sayfa 11

 

EA'ların iletişim kurabilmesi için bir sunucu olarak kolaylaştıracak bir komut dosyasına veya başka bir şeye sahip olmaktan bahsediyorsunuz. Metaalıntıların böyle bir şey bulmasının biraz zaman alacağını düşünüyorum. Ancak mql4.com'a baktıklarında, bahsettiğim işlevin GlobalVariableSetOnCondition() yürütmede atomik olduğunu söylüyorlar. Bununla, muhtemelen ihtiyacım olanı yapmak için bir dizi fonksiyon bulabilirim.

 

Birisi bana yardım edebilir mi: https://www.mql5.com/en/forum/174184 ?

 

Yardım - Sıfır bölme ???

Merhaba tüm kodlayıcılar...

Bu hatayı çözmek için ne yapmam gerekiyor: sıfır bölme?

Herhangi bir yardım için teşekkürler...

Dosyalar:
ok.gif  16 kb
error.gif  16 kb
ttm_stoch.mq4  5 kb
 

jma

merhaba kodlayıcılargurusu,

EA kodunda ema yerine jma kullanabilir miyim?

 
 

yardıma ihtiyacım var - ayarlanmış MACD

Sinyal hattını RSI değerine göre ayarlayan bir gösterge oluşturmaya çalışıyorum. Gerçekten MACD'ye ayarlanmış başka bir sinyal çizgisi çizmek ve normal sinyal çizgisini yerinde bırakmak istiyorum.

Düzenle:

Aynı pencerede RSI çizgisini (ilk adım) çizmek için göstergeye sahibim. Ama nedense son periyodu çekmiyor. Lütfen eke bakınız.

Dosyalar:
 

herhangi bir yardım harika olurdu

burada biraz kod var //// ile ilgili bir sorunum var, bunu 1 kez Northfinace'e yüklediğimde çalışıyor sonra bir daha asla ticaret yapmıyor...ama Interbank'ta hiçbir şey yapmıyor... kama .0005 ters tırtıldır...Neler olduğu hakkında hiçbir fikrim yok, çünkü ilk yüklediğimde Northfinance'de mükemmel bir şekilde 1 işlem yaptı, ancak zaten yapılmış olması gereken mevcut bir işlemdi...

 

kod

#property telif hakkı "Uzman Danışman Oluşturucu"

#özellik bağlantısı "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

harici int SihirliSayı = 0;

harici bool SignalMail = Yanlış;

extern bool EachTickMode = True;

dış çift Lot = 1;

extern int Kayma = 3;

extern bool StopLossMode = True;

harici int StopLoss = 40;

extern bool TakeProfitMode = False;

harici int TakeProfit = 60;

extern bool TrailingStopMode = True;

extern int TrailingStop = 35;

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESEL 4

int BarCount;

int Akım;

bool TickCheck = Yanlış;

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

//| uzman başlatma işlevi |

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

int init() {

BarCount = Barlar;

if (EachTickMode) Akım = 0; başka Akım = 1;

dönüş(0);

}

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

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

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

int tanım() {

dönüş(0);

}

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

//| uzman başlatma işlevi |

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

int start() {

int Sıra = SIGNAL_NONE;

int Toplam, Bilet;

çift StopLossLevel, TakeProfitLevel;

if (EachTickMode && Çubuklar != BarCount) TickCheck = False;

Toplam = SiparişlerToplam();

Sıra = SIGNAL_NONE;

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

//| Değişken Başlangıç |

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

double Var1 = iCustom(NULL, 0, "KAMATEST", 3, 2, 0.0005, 0, Geçerli + 0);

double Var2 = iCustom(NULL, 0, "KAMA CCI", 14, 0, Geçerli + 0);

double Var3 = iCustom(NULL, 0, "KAMARSI", 14, 0, Geçerli + 0);

çift Buy1_1 = Var1 ;

çift Buy1_2 = 25;

çift Buy2_1 = Var2 ;

çift Buy2_2 = 80;

çift Buy3_1 = Var3 ;

çift Buy3_2 = 50;

çift Sat1_1 = Var1 ;

çift Satış1_2 = -25;

çift Sat2_1 = Var2 ;

çift Sat2_2 = -80;

çift Sat3_1 = Var3 ;

çift Satış3_2 = -50;

double CloseBuy1_1 = Var1 ;

çift KapatBuy1_2 = -25;

double CloseBuy2_1 = Var2 ;

çift KapatBuy2_2 = -80;

double CloseBuy3_1 = Var3 ;

çift KapatBuy3_2 = -50;

double CloseSell1_1 = Var1 ;

çift KapatSell1_2 = 25;

double CloseSell2_1 = Var2 ;

çift KapatSell2_2 = 80;

double CloseSell3_1 = Var3 ;

çift KapatSell3_2 = 50;

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

//| Değişken Son |

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

//Konumu kontrol et

bool IsTrade = Yanlış;

for (int i = 0; i < Toplam; ben ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = Doğru;

if(OrderType() == OP_BUY) {

//Kapat

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

//| Sinyal Başla(Çıkış Satın Al) |

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

if (CloseBuy1_1 <= CloseBuy1_2 && CloseBuy2_1 <= CloseBuy2_2 && CloseBuy3_1 <= CloseBuy3_2) Sipariş = SIGNAL_CLOSEBUY;

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

//| Sinyal Sonu(Çıkış Satın Al) |

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

if (Sipariş == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

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

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Teklif, Rakamlar) + " Satın Alma Kapat");

if (!EachTickMode) BarCount = Çubuklar;

IsTrade = Yanlış;

devam etmek;

}

//Sondaki durdurma

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Nokta * TrailingStop) {

if(OrderStopLoss() < Teklif - Nokta * TrailingStop) {

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

if (!EachTickMode) BarCount = Çubuklar;

devam etmek;

}

}

}

} başka {

//Kapat

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

//| Sinyal Başla(Çıkış Sat) |

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

if (CloseSell1_1 >= CloseSell1_2 && CloseSell2_1 >= CloseSell2_2 && CloseSell3_1 >= CloseSell3_2) Sipariş = SIGNAL_CLOSESELL;

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

//| Sinyal Sonu (Çıkış Sat) |

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

if (Sipariş == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

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

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Kapat Satış");

if (!EachTickMode) BarCount = Çubuklar;

IsTrade = Yanlış;

devam etmek;

}

//Sondaki durdurma

if(TrailingStopMode && TrailingStop > 0) {

if((OrderOpenPrice() - Sor) > (Nokta * TrailingStop)) {

if((OrderStopLoss() > (Sor + Nokta * TrailingStop)) || (OrderStopLoss() == 0)) {

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

if (!EachTickMode) BarCount = Çubuklar;

devam etmek;

}

}

}

}

}

}

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

//| Sinyal Başlıyor(Giriş) |

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

if (Buy1_1 >= Buy1_2 && Buy2_1 >= Buy2_2 && Buy3_1 >= Buy3_2) Sipariş = SIGNAL_BUY;

if (Sat1_1 <= Satış1_2 && Satış2_1 = Satış3_2) Sipariş = SIGNAL_SELL;

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

//| Sinyal Sonu |

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

//Satın almak

if (Sipariş == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

if(!IsTrade) {

// Serbest marjı kontrol et

if (AccountFreeMargin() < (1000 * Lot)) {

Print("Paramız yok. Serbest Marj = ", AccountFreeMargin());

dönüş(0);

}

if (StopLossMode) StopLossLevel = Sor - StopLoss * Puan; başka StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Sor + TakeProfit * Puan; başka TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Bilet > 0) {

if (OrderSelect(Bilet, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Satın alma emri açıldı : ", OrderOpenPrice());

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Satın Alımı Aç");

} başka {

Print("SATIN AL emri açılırken hata oluştu : ", GetLastError());

}

}

if (EachTickMode) TickCheck = Doğru;

if (!EachTickMode) BarCount = Çubuklar;

dönüş(0);

}

}

//Satmak

if (Sipariş == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

if(!IsTrade) {

// Serbest marjı kontrol et

if (AccountFreeMargin() < (1000 * Lot)) {

Print("Paramız yok. Serbest Marj = ", AccountFreeMargin());

dönüş(0);

}

if (StopLossMode) StopLossLevel = Teklif + StopLoss * Puan; başka StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Teklif - TakeProfit * Puan; başka TakeProfitLevel = 0.0;

Bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sat(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Bilet > 0) {

if (OrderSelect(Bilet, SELECT_BY_TICKET, MODE_TRADES)) {

Print(" SAT emri açıldı : ", OrderOpenPrice());

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Teklif, Rakamlar) + " Açık Satış");

} başka {

Print("SATIŞ emrini açarken hata: ", GetLastError());

}

}

if (EachTickMode) TickCheck = Doğru;

if (!EachTickMode) BarCount = Çubuklar;

dönüş(0);

}

}

if (!EachTickMode) BarCount = Çubuklar;

dönüş(0);

}

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

 

Uzmandaki göstergenin .0005 değerini değiştirdim çünkü bu sadece kanal çizgisini gösteriyor sonuçta seviyeleri değiştirmeniz gereken şey .0005 için 25,-25 ...30,,-30 için .0006, ve böylece üzerinde...

 

Başabaş ve sondaki durma ile ilgili sorun

Merhaba,

Codersguru'nun MQL4 eğitimini kullanarak kodlama öğreniyorum ve "My_First_EA" üzerinde çalışıyorum. Bu gerçekten benim ilk EA'm. Çok iyi çalışıyor, ancak bir başabaş noktası yazmaya çalışıyorum ve çözemiyorum. Sahip olduğum sorun, başabaş durağın, tıpkı takip eden bir durak gibi fiyatı takip etmesidir. 15 pip yaptığımda (örneğin) ilk stoploss'un 1 pip kar tutmak için hareket etmesini istiyorum, sonra stoploss'un son stop 25 pip kârda çalışmaya başlayana kadar başabaş durağında (1 pip kâr) kalmasını istiyorum. Ardından, sondaki durağın her pip kârı hareket ettirerek her zamanki gibi çalışmasını istiyorum. Sorunun "OrderStopLoss()" olabileceğini düşünüyorum, ancak artık hiçbir şey bilmiyorum. Beynim lapa. Teşekkür ederim

İşte yaptığım ilgili kod:

harici çift TrailingStop=25.0;

harici çift BreakEvenProfit=15;

harici çift BreakEvenStop=1;

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

buradaki giriş ve açık sipariş kodum iyi çalışıyor

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

(cnt=0;cnt<total;cnt++) için

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderType()<=OP_SELL&&OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY)//Uzun pozisyon açıldı

{

//kapatılmalı mı?

if (FSAR > FMA) //çıkış sinyalim

{

//----KAPAT UZUN KONUM iyi çalışıyor

OrderClose(OrderTicket(),OrderLots(),Bid,3,Macenta);

dönüş (0);//çıkış

}

///////////////////BU SORUN ALANI AŞAĞIDA/////////

//---- BAŞLANGIÇ DUR UZUN POZİSYON KONTROLÜ ------

if (Bid-OrderOpenPrice() > BreakEvenProfit*Puan)

{

if (OrderStopLoss() < OrderOpenPrice()+ BreakEvenStop*Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + BreakEvenStop*Point,OrderTakeProfit(),0,Yellow);

dönüş(0);

}

}

//-----BURADA AŞAĞIDAKİ HER ŞEY TİPİK BİR İZLEME DURAĞI OLARAK ÇALIŞIYOR

//----Sondaki durdurmayı kontrol et UZUN KONUM

if(TrailingStop>0)

{

if (Bid-OrderOpenPrice()>Point*TrailingStop)

{

if (OrderStopLoss()<Teklif Noktası*TrailingStop)

{

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

dönüş(0);

}

}

}

}

yoksa//kısa pozisyona git

Neden: