Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1093
![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
O zaman hata kodu test cihazının günlüğünde yatıyor, bunu daha iyi anlayabilirsiniz.
Hata yok. Sadece prosedüre giderken kilitleniyor. Bir de StartSell var, normalde ona giriyor. Bir çeşit çamur.
Güncellenmiş alıntılar - çalışmaya başladı. Delikler nedeniyle yanlış, ama en azından donmuyor.
Selamlar! Söyle bana, lütfen, ikili opsiyonlarda farklı enstrümanlar için (bot aynı anda çeşitli enstrümanların birkaç tablosuna eklenir) seri sayısının ayarlanan değerinden daha fazlasının aynı anda açılmasına yönelik bir yasağı en iyi nasıl reçete edebilirim?
dış çift Lot = 1; // Çok güzelsin
harici intExp = 1; // Son
harici int Bekle = 0; // Bir yöndeki mum sayısı
extern int Zaman Aşımı = 1; // Zaman aralığı
dış çift Çarpan = 3; // Çarpan
dış int kayma = 5; // kayma
extern int MaxOpenOrders = 1; // Maksimum eşzamanlı açık sipariş sayısı
harici int Sihir = 774274; // Büyü
int bilet, Tür;
çift fiyat, çok;
//+------------------------------------------- --------------------+
//| 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()
{
// --------------- İşlemlerin açılması ---------------
if (CountTrades() == 0) // Emir sayısı sıfıra eşit olmalıdır
{
if ((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) < PriceOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL)))
// Son anlaşma kârsızsa, aynısı açılır, ancak artan lotla
{
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder()*Çarpan, 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0)
// Son ticaretin karı sıfırsa, aynısını aç
{
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder(), 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > FiyatOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))
|| CountHistTrades() == 0)// Son işlem karlıysa, sipariş açılır
{
if (SignalBuy() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (SignalSell() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
}
}
}
//+------------------------------------------- --------------------+
int CountTrades(int tipi = -1)
{
int cnt = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
cnt++;
}
}
dönüş(cnt);
}
//+------------------------------------------- --------------------+
int CountHistTrades(int tipi = -1)
{
int cnt = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
cnt++;
}
}
dönüş(cnt);
}
//+------------------------------------------- --------------------+
bool SignalBuy()
{
for (int i=1; i<=Bekle; i++)
{
if (Close[i] > Open[i]) return(false);
}
if ((iBarShift(Symbol(), 0, TimeLastHistOrder()+Timeout) >= Bekle || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))
&& CountHistTrades() > 0) return(true);
if (CountHistTrades() == 0) return(true);
dönüş(yanlış);
}
//+------------------------------------------- --------------------+
bool SignalSell()
{
for (int i=1; i<=Bekle; i++)
{
if (Kapat[i] < Aç[i]) dönüş(yanlış);
}
if ((iBarShift(Symbol(), 0, TimeLastHistOrder()+Timeout) >= Bekle || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))
&& CountHistTrades() > 0) return(true);
if (CountHistTrades() == 0) return(true);
dönüş(yanlış);
}
//+------------------------------------------- --------------------+
tarihsaat TimeLastHistOrder(int tipi = -1)
{
tarihsaat sonzaman = 0;
tarihsaat açıksaat=0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
if (OrderCloseTime() > geçen sefer)
{
lasttime = OrderCloseTime();
açılış zamanı = OrderOpenTime();
}
}
}
}
dönüş (açık zaman);
}
//+------------------------------------------- --------------------+
intTypeLastHistOrder()
{
tarihsaat = 0;
int türü = -1;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderCloseTime() > zaman)
{
zaman = OrderCloseTime();
type = OrderType();
}
}
}
}
dönüş(tür);
}
//+------------------------------------------- --------------------+
double LotsLastHistOrder(int tipi = -1)
{
tarihsaat = 0;
çift lot = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
if (OrderOpenTime() > zaman)
{
zaman = OrderOpenTime();
lot = OrderLots();
}
}
}
}
dönüş(lot);
}
//+------------------------------------------- --------------------+
double PriceCloseLastHistOrder(int tipi = -1)
{
tarihsaat = 0;
çift fiyat = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
if (OrderCloseTime() > zaman)
{
zaman = OrderCloseTime();
fiyat = OrderClosePrice();
}
}
}
}
iade(fiyat);
}
//+------------------------------------------- --------------------+
double PriceOpenLastHistOrder(int tipi = -1)
{
tarihsaat = 0;
çift fiyat = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
if (OrderCloseTime() > zaman)
{
zaman = OrderCloseTime();
fiyat = OrderOpenPrice();
}
}
}
}
iade(fiyat);
}
//+------------------------------------------- --------------------+
CountTrades işlevinden OrderSymbol() == Symbol() koşulunu kaldırmanız ve OrderType() == OP_BUY || OrderType() == OP_SEL, değil mi?
Ve OnTick'te, OrderSend'den önce, if (SignalBuy() && CountTrades() < MaxOpenOrders ) koşulunu değiştirin... Ve benzer şekilde satış için.if (OrderMagicNumber() == Magic && (OrderType() == OrderType() == OP_BUY || OrderType() == OP_SELL))
Doğru mu değiştirdim?
Selamlar! Söyle bana, lütfen, ikili opsiyonlarda farklı enstrümanlar için (bot aynı anda çeşitli enstrümanların birkaç tablosuna eklenir) seri sayısının ayarlanan değerinden daha fazlasının aynı anda açılmasına yönelik bir yasağı en iyi nasıl reçete edebilirim?
dış çift Lot = 1; // Çok güzelsin
harici intExp = 1; // Son
harici int Bekle = 0; // Bir yöndeki mum sayısı
extern int Zaman Aşımı = 1; // Zaman aralığı
dış çift Çarpan = 3; // Çarpan
dış int kayma = 5; // kayma
extern int MaxOpenOrders = 1; // Maksimum eşzamanlı açık sipariş sayısı
harici int Sihir = 774274; // Büyü
int bilet, Tür;
çift fiyat, çok;
//+------------------------------------------- --------------------+
//| 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()
{
// --------------- İşlemlerin açılması ---------------
if (CountTrades() == 0) // Emir sayısı sıfıra eşit olmalıdır
{
if ((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) < PriceOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL)))
// Son anlaşma kârsızsa, aynısı açılır, ancak artan lotla
{
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder()*Çarpan, 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0)
// Son ticaretin karı sıfırsa, aynısını aç
{
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder(), 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > FiyatOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))
|| CountHistTrades() == 0)// Son işlem karlıysa, sipariş açılır
{
if (SignalBuy() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (SignalSell() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
}
}
}
//+------------------------------------------- --------------------+
int CountTrades(int tipi = -1)
{
int cnt = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
cnt++;
}
}
dönüş(cnt);
}
//+------------------------------------------- --------------------+
int CountHistTrades(int tipi = -1)
{
int cnt = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
cnt++;
}
}
dönüş(cnt);
}
//+------------------------------------------- --------------------+
bool SignalBuy()
{
for (int i=1; i<=Bekle; i++)
{
if (Close[i] > Open[i]) return(false);
}
if ((iBarShift(Symbol(), 0, TimeLastHistOrder()+Timeout) >= Bekle || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))
&& CountHistTrades() > 0) return(true);
if (CountHistTrades() == 0) return(true);
dönüş(yanlış);
}
//+------------------------------------------- --------------------+
bool SignalSell()
{
for (int i=1; i<=Bekle; i++)
{
if (Kapat[i] < Aç[i]) dönüş(yanlış);
}
if ((iBarShift(Symbol(), 0, TimeLastHistOrder()+Timeout) >= Bekle || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))
&& CountHistTrades() > 0) return(true);
if (CountHistTrades() == 0) return(true);
dönüş(yanlış);
}
//+------------------------------------------- --------------------+
tarihsaat TimeLastHistOrder(int tipi = -1)
{
tarihsaat sonzaman = 0;
tarihsaat açıksaat=0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
if (OrderCloseTime() > geçen sefer)
{
lasttime = OrderCloseTime();
açılış zamanı = OrderOpenTime();
}
}
}
}
dönüş (açık zaman);
}
//+------------------------------------------- --------------------+
intTypeLastHistOrder()
{
tarihsaat = 0;
int türü = -1;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderCloseTime() > zaman)
{
zaman = OrderCloseTime();
type = OrderType();
}
}
}
}
dönüş(tür);
}
//+------------------------------------------- --------------------+
double LotsLastHistOrder(int tipi = -1)
{
tarihsaat = 0;
çift lot = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
if (OrderOpenTime() > zaman)
{
zaman = OrderOpenTime();
lot = OrderLots();
}
}
}
}
dönüş(lot);
}
//+------------------------------------------- --------------------+
double PriceCloseLastHistOrder(int tipi = -1)
{
tarihsaat = 0;
çift fiyat = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
if (OrderCloseTime() > zaman)
{
zaman = OrderCloseTime();
fiyat = OrderClosePrice();
}
}
}
}
iade(fiyat);
}
//+------------------------------------------- --------------------+
double PriceOpenLastHistOrder(int tipi = -1)
{
tarihsaat = 0;
çift fiyat = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
if (OrderCloseTime() > zaman)
{
zaman = OrderCloseTime();
fiyat = OrderOpenPrice();
}
}
}
}
iade(fiyat);
}
//+------------------------------------------- --------------------+
Zaman, tarih-saat biçiminde hemen ayarlanabilir, dönüştürme için makine zamanını boşa harcamanıza gerek yoktur, bu şekilde çalışır:
harici tarihsaat Başlangıç Saati = D'07:00' ;
Bu zaman formatında danışmana başlarken danışmanın derleme tarihini alıyoruz ama bugün istiyoruz.
Nasıl düzeltilir?
Bu zaman formatında danışmana başlarken danışmanın derleme tarihini alıyoruz ama bugün istiyoruz.
Nasıl düzeltilir?
Başlatmada, parametreyi diğer kullanıcı parametreleriyle aynı şekilde istediğiniz şekilde değiştirin.
Ve nedense bana senaryonun başlatıldığı andaki mevcut tarihi gösteriyor.
Lütfen söyleyin bana, MagicNumber'ı ne amaçla kullanıyorsunuz, bu stratejide ne veriyor? IMHO , burada OnInit OnDeinit işlevlerini atmak da mümkündür