MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 30
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
Sadece öğreniyorum, referans kitabını kullanmaya çalışıyorum ama bunun bir tür saçmalık olduğunu anlıyorum, nasıl yapılacağına dair bir örnek görmek istiyorum.
Herkese iyi günler! Lütfen sipariş silme işlemini danışmana nasıl koyacağımı söyleyin.
Durum şu:
farklı yönlere bekleyen 2 emir veririz, biri tetiklenir, diğeri silinir ve artık verilmez.
Yardımın için çok minnettar olacağım.
Teşekkür ederim.
Bunun gibi bir şey
{
if ( OrderSelect (pos, SELECT_BY_POS , MODE_TRADES ) && OrderType ()> 1 ) //Если найденный ордер отложенный
{
ticket= OrderTicket (); //Запомним его тикет
}
else //Если ордер не отложенный
{
trade= 1 ; //Запомним,что есть открытая позиция
}
if (ticket!= 0 && trade== 1 ) //И если известен отложенный и открыта позиция
{
int OD= OrderDelete (ticket); //Удаляем отложенный
}
}
"Aramaya devam edelim" - kaldırılmalı!
Forumda, yazılarınızı kendiniz düzenleyebilirsiniz. Yukarıda ayrı gönderilerde yazdığınız her şey tek bir gönderiye sığabilir.
Merhaba! Aşağıdaki algoritmaya göre bir kar alma izi tanıttım:
if(toplam>0)
{for (int i=SiparişlerToplam()-1; i>=0; i--)
if( OrderSelect (i,SELECT_BY_POS)==true)
{
if(OrderMagicNumber()==magic && OrderSymbol()==varlık && OrderType()==OP_BUY)
{
Yeniler();
if(TimeCurrent()>OrderOpenTime() && TimeCurrent()<=(OrderOpenTime()+3600))
{
TAKEPROFIT İZ DURUMU;
YENİ TAKEPROFIT SİPARİŞİNİN DEĞİŞİKLİĞİ;
}
}
}
}
ancak bir nedenden dolayı zaman sınırı çalışmaz ve mevcut zaman diliminde pozisyon kapatılmazsa, koşulların yerine getirilmesi şartıyla bir sonrakinde takip eder.
Son if() ile yanlış olan ne?
Merhaba! Aşağıdaki algoritmaya göre bir kar alma izi tanıttım:
if(toplam>0)
{for (int i=SiparişlerToplam()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderMagicNumber()==magic && OrderSymbol()==varlık && OrderType()==OP_BUY)
{
Yeniler();
if(TimeCurrent()>OrderOpenTime() && TimeCurrent()<=(OrderOpenTime()+3600))
{
TAKEPROFIT İZ DURUMU;
YENİ TAKEPROFIT SİPARİŞİNİN DEĞİŞTİRİLMESİ;
}
}
}
}
ancak bir nedenden dolayı zaman sınırı çalışmaz ve mevcut zaman diliminde pozisyon kapatılmazsa, koşulların yerine getirilmesi şartıyla bir sonrakinde takip eder.
Son if() ile yanlış olan ne?
Şey, bilmiyorum, orada neyin yanlış olduğunu henüz üstünkörü bir bakışla göremiyorum. Emir sayısı için fazladan bir kontrol kaldırıldı (döngü koşullarında zaten var) ve her iki pozisyon türü için bir kontrol eklendi (Al ve Sat)
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS )) {
if ( OrderType ()> OP_SELL ) continue ;
if ( OrderMagicNumber ()==magic && OrderSymbol ()==asset) {
if ( TimeCurrent ()> OrderOpenTime () && TimeCurrent ()<= OrderOpenTime ()+ PeriodSeconds ( PERIOD_H1 )) {
// УСЛОВИЕ ТРАЛА ТЭЙКПРОФИТА;
// МОДИФИКАЦИЯ ОРДЕРА НА НОВЫЙ ТЭЙКПРОФИТ;
}
}
}
}
//+------------------------------------------------------------------+
// Sondaki ve değiştirme koşullarının olduğu yerde, zaman değişkenlerinin değerleriyle Print() öğesini ekleyin ve günlükte ne yazılacağını görün.
Şey, bilmiyorum, şu anda orada neyin yanlış olduğunu göremiyorum.Emir sayısı için fazladan bir kontrol kaldırıldı (döngü koşullarında zaten var) ve her iki pozisyon türü için bir kontrol eklendi (Al ve Sat)
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS )) {
if ( OrderType ()> OP_SELL ) continue ;
if ( OrderMagicNumber ()==magic && OrderSymbol ()==asset) {
if ( TimeCurrent ()> OrderOpenTime () && TimeCurrent ()<= OrderOpenTime ()+ PeriodSeconds ( PERIOD_H1 )) {
// УСЛОВИЕ ТРАЛА ТЭЙКПРОФИТА;
// МОДИФИКАЦИЯ ОРДЕРА НА НОВЫЙ ТЭЙКПРОФИТ;
}
}
}
}
//+------------------------------------------------------------------+
// Sondaki ve değiştirme koşullarının olduğu yerde, zaman değişkenlerinin değerleriyle Print() öğesini ekleyin ve günlükte ne yazılacağını görün.
CELL için farklı iz koşullarım var, bu yüzden sadece SATIN AL gösterdim.
"zaman değişkenlerinin değerleriyle" - TimeCurrent()'i mi kastediyorsunuz? Bu sizi şaşırttıysa özür dilerim - Programlamada eksi ile sıfırım.
Ve bunu anlamadım - OrderType ()> OP_SELL. Neden >? OP_SELL işlem tipi = 1 ve OP_BUY = 0 değerine sahiptir. Bu nedenle <= ? Teşekkür ederim.
CELL için farklı iz koşullarım var, bu yüzden sadece SATIN AL gösterdim.
"zaman değişkenlerinin değerleriyle" - TimeCurrent()'i mi kastediyorsunuz? Bu sizi şaşırttıysa özür dilerim - Programlamada eksi ile sıfırım.
Ve bunu anlamadım - OrderType ()> OP_SELL. Neden >? OP_SELL işlem tipi = 1 ve OP_BUY = 0 değerine sahiptir. Bu nedenle <= ? Teşekkür ederim.
Selamlar. Söyle bana, lütfen, neden böyle bir kayıtla
if (x!=maxpr1){x=maxpr1; OrderDelete(biletD);}
if (z!=minpr1){z=minpr1; OrderDelete(ticketUP);}
sürekli hata veriyor
: OrderDelete işlevi için geçersiz bilet
: Sipariş Silme hatası 4051
kılavuza göre o
Geçersiz fonksiyon parametre değeri
parametreler aynı gibi görünse de.
Her ne kadar koşulu kaldırsanız ve yalnızca bıraksanız da
OrderDelete(biletD);
OrderDelete(ticketUP);
bu başarıyla siler (ancak bir şartla gereklidir). Neyi yanlış yapıyorum?
Selamlar. Söyle bana, lütfen, neden böyle bir kayıtla
if (x!=maxpr1){x=maxpr1; OrderDelete(biletD);}
if (z!=minpr1){z=minpr1; OrderDelete(ticketUP);}
sürekli hata veriyor
: OrderDelete işlevi için geçersiz bilet
: Sipariş Silme hatası 4051
kılavuza göre o
Geçersiz fonksiyon parametre değeri
parametreler aynı gibi görünse de.
Her ne kadar koşulu kaldırırsanız ve yalnızca bırakırsanız
OrderDelete(biletD);
OrderDelete(ticketUP);
bu başarıyla siler (ancak bir şartla gereklidir). Neyi yanlış yapıyorum?