MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1598
![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
sadece bir ekleme, terminalin yeterli geçmişe sahip olduğu ve oluşturacağı GARANTİ EDİLMEZ.
yukarıdaki örnekte tarihe referans yok
bu nedenle OrderSelect() sonucunun doğru olup olmayacağı garanti edilir
UPD: OrderSelect 4-ke'de çok iyi çalışıyor, bir kez test ettim - piyasa emirleri için, emir özelliklerine erişim zamanı .... saniyede gerçekten milyonlarca kez, arama yapmak istemiyorum, tartışıyormuşum gibi görünüyor moderatör Artem ile, ama burada dedikleri gibi, "tüm keçeli kalemlerin tadı farklıdır", isterseniz - kalsın
merhaba, her işlem için bir düşüş verisine ihtiyaç vardır.
Belki birisi bu tür istatistikleri toplayan ve bunu bir rapor olarak veren bir komut dosyasıyla karşılaştı?
Teşekkür ederim
merhaba, her işlem için bir düşüş verisine ihtiyaç vardır.
Belki birisi bu tür istatistikleri toplayan ve bunu bir rapor olarak veren bir komut dosyasıyla karşılaştı?
Teşekkür ederim
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
"elle" yazılmış, kontrol edilmemiş, hatalarla dolu :-) ihtiyaçlarınıza ve kullanımınıza uyacak şekilde ince ayar yapın
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
"elle" yazılmış, kontrol edilmemiş, hatalarla dolu :-) ihtiyaçlarınıza ve kullanımınıza uyacak şekilde ince ayar yapın
Teşekkürler, anlamaya çalışacağım!
@Igor Makanu , terminalde sipariş sıralama konusundaki cevaplarınız için çok teşekkür ederim. Muhtemelen onları bir dizi yapı olarak kaydedeceğim ve kendim sıralayacağım. Şüpheler, temel olarak, her kene üzerinde gerçekleştirilen bu tür eylemlerin performans üzerinde gözle görülür bir olumsuz etkisi olacağından korkmamdan kaynaklanıyordu.
Öyleyse neden her keneyi sıralayasınız? Sadece kayıt sayısını değiştirirken veya listeyi tamamen değiştirirken yeterlidir ...
yukarıdaki örnekte tarihe referans yok
bu nedenle OrderSelect() sonucunun doğru olup olmayacağı garanti edilir
UPD: OrderSelect 4-ke'de çok iyi çalışıyor, bir kez test ettim - piyasa emirleri için, emir özelliklerine erişim zamanı .... saniyede gerçekten milyonlarca kez, arama yapmak istemiyorum, tartışıyormuşum gibi görünüyor moderatör Artem ile, ama burada dedikleri gibi, "tüm keçeli kalemlerin tadı farklıdır", isterseniz - kalsın