MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1347
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Danışmanı hiçbir şekilde bitiremiyorum. İşin özü basittir - ilk önce satın alma için tetikleyici olan bir dikdörtgen çizerim, fiyat kendi alanına ulaşırsa ikincisini çizerim - fiyat oraya ulaştı - anlaşma kapatılmalıdır.
Ve şu çıkıyor - fiyat alan içinde açılıp kapanmaya başlıyor. Neyi yanlış yapıyorum?
//+------------------------------------------- --------------------+
//| DİKDÖRTGENLER OP_BUY.mq4 |
//+------------------------------------------- --------------------+
#mülkiyet telif hakkı ""
#özellik bağlantısı ""
#özellik sürümü "1.00"
#mülkiyet katı
harici int Sihir = 777701;
harici çift Parti = 0.01;
dış int kayma = 3;
int bileti;
int OrderOfSymbol;
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int OnInit()
{
//---
dönüş(INIT_SUCCESSED);
}
//+------------------------------------------- --------------------+
//| Uzman başlatmasızlaştırma işlevi |
//+------------------------------------------- --------------------+
geçersiz OnDeinit(const int nedeni)
{
//---
}
//+------------------------------------------- --------------------+
//| Uzman onay işlevi |
//+------------------------------------------- --------------------+
geçersiz OnTick()
{
//---
//Bir dikdörtgen olup olmadığını kontrol edin:
if(NesnelerToplam(OBJ_RECTANGLE)==0)
{Comment("Satın alma işlemi açmak için bir dikdörtgen çizin!");}
// Dikdörtgenin ADI alın:
for(int n=0;n<ObjectsTotal();n++)
{
stringname=NesneAdı(n);
if(ObjectType(name)==OBJ_RECTANGLE)
{
tarihsaat t1a = (tarihsaat) ObjectGet(isim,OBJPROP_TIME1);
tarihsaat t2a = (tarihsaat) ObjectGet(isim,OBJPROP_TIME2);
double p1a=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE1),Rakamlar);
double p2a=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE2),Rakamlar);
OrderOfSymbol=KarşıSiparişTipi(-1);
if (Simge Sırası<1)
if (Kapat[1]>Aç[1])
if(TimeCurrent()>t1a && TimeCurrent()< t2a &&
Teklif < p1a && Teklif > p2a )
{
bilet = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, 0, 0, "sipariş açık", Magic, 0, Blue);
}
}
}
// Zaten ikinci bir dikdörtgen olup olmadığını kontrol edin:
if(ObjectsTotal(OBJ_RECTANGLE)==1)
{Comment("Satın alma işlemini kapatmak için ikinci bir dikdörtgen çizin!");}
// Dikdörtgenin ADI alın:
for(int n=0;n<ObjectsTotal();n++)
{
stringname=NesneAdı(n);
if(ObjectType(name)==OBJ_RECTANGLE)
{
tarihsaat t1b = (tarihsaat) ObjectGet(isim,OBJPROP_TIME1);
tarihsaat t2b = (tarihsaat) ObjectGet(isim,OBJPROP_TIME2);
double p1b=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE1),Rakamlar);
double p2b=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE2),Rakamlar);
if(TimeCurrent()>t1b && TimeCurrent()< t2b &&
Teklif < p1b && Teklif > p2b )
CloseBuyPositions1();
}
}
// Zaten 2 dikdörtgen olup olmadığını kontrol edin:
if(NesnelerToplam(OBJ_CHANNEL)==2)
{Comment("Satın alma emirlerini açma ve kapama alanları belirlendi - alım satım devam ediyor!");}
}
//+------------------------------------------- --------------------+
geçersiz CloseBuyPositions1()
{
for(int i = OrdersTotal() - 1; i >= 0; i--)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderMagicNumber() == Sihirli)
if(OrderSymbol() == Symbol())
{
if(OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL)){Print("Siparişi Kapat");}
}
}
}
//+------------------------------------------- --------------------+
//| Geçerli sembol için siparişleri sayma |
//+------------------------------------------- --------------------+
int CounterOrderTradeType( ENUM_ORDER_TYPE order_type)
{
int cnt=0;
//----
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
if(OrderSelect(kon, SELECT_BY_POS, MODE_TRADES)==yanlış) devam et;
if(OrderSymbol()!=_Symbol) devam ediyor;
if(order_type == OrderType() || order_type == -1) cnt++;
}
//----
dönüş(cnt);
}
Kod göndermek için böyle bir işlev var, yardım için herkesin kodunuzu okuması daha uygun olacaktır.
Kod göndermek için böyle bir işlev var, yardım için herkesin kodunuzu okuması daha uygun olacaktır.
Ona yardım etmeyecek. Boş satırlar sadece kendisi gibiler tarafından okunur.
Порт-моне тв :
Neyi yanlış yapıyorum?
Meydanın adının benzersizliği yok, herhangi bir kareniz var - alım satım için bir koşul
Bu da size yardımcı olacaktır
Lütfen bana hatayı nasıl düzelteceğimi söyle
İşte hata
'CornerInfo' - constant cannot be modified Wa.mq4 22 1 'CornerInfo1' - constant cannot be modified Wa.mq4 23 1 2 errors, 0 warnings 3 1
Teşekkür ederim!
Benim için zevkti )
Lütfen bana hatayı nasıl düzelteceğimi söyle
İşte hata
girdi değişkenleri değiştirilemez.
Bu şekilde mümkündür:
Benim için zevkti )
girdi değişkenleri değiştirilemez.
Bu şekilde mümkündür:
anladım teşekkürler
Bu da size yardımcı olacaktır
Yardım etmedi. Ve karenin değerlerinin olması gerektiği gibi ikiden değil sondan alındığını anladım. Bunu nasıl kazanacağımı bilmiyorum. Kendim çözemez miydim? Ama mql aracını tam olarak bilmiyorum, bu yüzden burada soruyorum ve bana burada tarak teklif ediyorsunuz.
Yardım etmedi. Ve karenin değerlerinin olması gerektiği gibi ikiden değil sondan alındığını anladım. Bunu nasıl kazanacağımı bilmiyorum. Kendim çözemez miydim? Ama mql aracını tam olarak bilmiyorum, bu yüzden burada soruyorum ve bana burada tarak teklif ediyorsunuz.
Kodunuzun hitap ettiğiniz kişiler tarafından kolayca okunabilmesi için size taraklar öneririm (burada kötü niyetli bir amaç yoktur)
Karelerinize gelince, onları doğru bir şekilde tanımlamak için kökenlerini anlamanız gerekir, yani. onları mı çiziyorsun yoksa danışman mı