Herkese merhaba,
İlk kez mq5l denememde aşağıdaki kriterler ile kodu oluşturmaya çalıştım ancak demo denemelerde hiç bir işlem gerçekleşmiyor. Bir yerde mantık hatası var sanırım destekleriniz icin şimdiden çok teşekkürler!
O andaki piyasa alis fiyatı,
bir onceki mumun kapanis fiyatının 5 pip ya da daha fazla üstündeyse,
O andaki piyasa alis fiyatindan iki onceki mumun kapanis fiyati, O andaki piyasa alis fiyatindan bir onceki mumun kapanis fiyatindan en fazla 1 en az 500 pip dusukse
Alim islemi gerceklestir
100 pip yükselirse kar al
30 pip duserse zarar durdur.
void OnTick()
{
double currentBid = SymbolInfoDouble(_Symbol, SYMBOL_BID); // O andaki piyasa alış fiyatı
double prevClose = iClose(_Symbol, PERIOD_CURRENT, 1); // Bir önceki mumun kapanış fiyatı
double prev2Close = iClose(_Symbol, PERIOD_CURRENT, 2); // İki önceki mumun kapanış fiyatı
double pipSize = SymbolInfoDouble(_Symbol, SYMBOL_POINT); // Pips büyüklüğü
if (currentBid > (prevClose + 5 * pipSize))
{
double diff1 = currentBid - prev2Close; // O andaki fiyat ile iki önceki mumun kapanış fiyatı arasındaki fark
double diff2 = currentBid - prevClose; // O andaki fiyat ile bir önceki mumun kapanış fiyatı arasındaki fark
if (diff1 >= -500 * pipSize && diff1 <= -1 * pipSize && diff2 >= -500 * pipSize && diff2 <= -1 * pipSize)
{
double takeProfit = currentBid + 100 * pipSize; // Kar alma seviyesi (100 pip yukarıda)
double stopLoss = currentBid - 30 * pipSize; // Zarar durdurma seviyesi (30 pip aşağıda)
MqlTradeRequest request;
MqlTradeResult result;
request.action = TRADE_ACTION_DEAL;
request.type = ORDER_TYPE_BUY;
request.symbol = _Symbol;
request.volume = 0.01;
request.price = currentBid;
request.sl = stopLoss;
request.tp = takeProfit;
request.deviation = 3;
request.magic = 123456; // İstediğiniz bir değer kullanabilirsiniz
if (OrderSend(request, result))
{
// Başarıyla alım emri gönderildi
}
else
{
// Alım emri gönderimi başarısız oldu
Print("Alım emri gönderilemedi! Hata:", GetLastError());
}
}
}
}
- "Açılış"ta MetaTrader 5 ile Deneyimler
- Hatalar, hatalar, sorular
- Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4
Ben de mt4 teki robotlarımı, mt5 dilinde yazmaya çalışıyorum, 3-4 gün sonra vazgeçtim mt4 e devam :)))
BookClub #:
Ben de mt4 teki robotlarımı, mt5 dilinde yazmaya çalışıyorum, 3-4 gün sonra vazgeçtim mt4 e devam :)))
Ben yolun çok baskındayım 4 de bilmiyorum. Ben de mt4 teki robotlarımı, mt5 dilinde yazmaya çalışıyorum, 3-4 gün sonra vazgeçtim mt4 e devam :)))
Bu kod da hata vermiyor fakat işlem de yapmıyor. Sanırım bir mantık hatası var ama bulamadım.
Paylaşmamın sebebi bu aslında belki bir uzman fark eder, düzeltmeye yardımcı olur. teşekkürler!
Mert Ozekin #:
Ben yolun çok baskındayım 4 de bilmiyorum.
Ben yolun çok baskındayım 4 de bilmiyorum.
Bu kod da hata vermiyor fakat işlem de yapmıyor. Sanırım bir mantık hatası var ama bulamadım.
Paylaşmamın sebebi bu aslında belki bir uzman fark eder, düzeltmeye yardımcı olur. teşekkürler!
Biraz geç kaldım ama işte kod
void OnTick() { // Mevcut piyasa teklif fiyatını ve pip boyutunu alın double currentBid = SymbolInfoDouble(_Symbol, SYMBOL_BID); double pipSize = SymbolInfoDouble(_Symbol, SYMBOL_POINT); // Son ve önceki mumların kapanış fiyatlarını alın double prevClose = iClose(_Symbol, PERIOD_CURRENT, 1); double prev2Close = iClose(_Symbol, PERIOD_CURRENT, 2); // Mevcut teklif fiyatının son kapanış fiyatından 5 pip yüksek olduğunu kontrol edin if (currentBid > prevClose + 5 * pipSize) { // İki önceki kapanış fiyatının son kapanış fiyatından 1 ila 500 pip arasında düşük olduğunu kontrol edin double priceDifference = prevClose - prev2Close; if (priceDifference >= 1 * pipSize && priceDifference <= 500 * pipSize) { // Kar al ve zarar durdur seviyelerini belirleyin double takeProfit = currentBid + 100 * pipSize; double stopLoss = currentBid - 30 * pipSize; // Ticaret isteğini hazırlayın MqlTradeRequest request; MqlTradeResult result; request.action = TRADE_ACTION_DEAL; request.type = ORDER_TYPE_BUY; request.symbol = _Symbol; request.volume = 0.01; request.price = currentBid; request.sl = stopLoss; request.tp = takeProfit; request.deviation = 3; request.magic = 123456; // Ticaret isteğini gönderin if (!OrderSend(request, result)) { Print("Alış emri gönderilemedi! Hata: ", GetLastError()); } } } }
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