MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 287
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
{
çift toplam=0 ;
int siparişler=OrdersHistoryTotal();
{
for(int i=sipariş-1;i>=0;i--)
{
if( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)==yanlış)
{
Print("Geçmişte Hata!");
kırmak;
}
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
devam etmek;
//---
if(OrderProfit()>0) kırılması;
toplam=SiparişProfit()+toplam;
}
}
Tünaydın. Fonksiyonla ilgili yardım lütfen, kapalı emirlerin kaybını özetler, emirleri kapatma fonksiyonu ile kullanıldığında, metatrader çöküyor, bu fonksiyonda nasıl bir hata olduğunu düşünüyorum.
Daha şimdiden görmeye hazır olun ve gerekirse kendiniz düzeltin. GetProfitFromDateInCurrency()
Tünaydın. Fonksiyonla ilgili yardım lütfen, kapalı emirlerin kaybını özetler, emirleri kapatma fonksiyonu ile kullanıldığında, metatrader çöküyor , bu fonksiyonda ne tür bir hata olduğunu düşünüyorum.
metatrader çökmesi ne anlama geliyor? Program hatalarla derleniyor!!!
Üç yerde if yerine küçük küçük harf ile yazılır Büyük büyük harf ile ise
küme parantezleri açıkça gereksizdir: int order=OrdersHistoryTotal(); ve summa=OrderProfit()+summa'dan sonraki çifti; - ama önemli değil
işte hala var...
Tünaydın. Fonksiyonla ilgili yardım lütfen, kapalı emirlerin kaybını özetler, emirleri kapatma fonksiyonu ile kullanıldığında, metatrader çöküyor, bu fonksiyonda nasıl bir hata olduğunu düşünüyorum.
Şu şekilde deneyin:
#property strict yönergesi ile derlenmiştir - son satırı azarlar: 'i' - bildirilmemiş tanımlayıcı. Mesele şu ki, değişken bir döngü içinde bildirilir ve sadece onun içinde geçerlidir. #property strict yönergesi olmadan hatasız derlendi, ancak bu kötü. Yönerge kullanılmalıdır.
if( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)==false) yerine if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) yazmak daha kolaydır. Şimdi daha fazla ara vermelisiniz - bu döngüden çıkış. Ve diğer siparişleri işlemeniz gerekiyor. Ancak, bu tarihte gereksizdir. Piyasada ve bekleyen emirlerde bir hata oluşur, eğer işlem sırasında emir kapanmışsa ve eksikse. Genel olarak, if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) devam eder; - sonraki siparişleri işlemeye devam et
Aynı nedenle if(OrderProfit()>0) break; if(OrderProfit()>0) ile değiştirin devam edin;
İşte hatanın nedeni: if(OrderProfit()<0) i++ ; - Kaybeden bir sayı varsa, endeks artar. Ve döngü başlığı for(int i=orders-1;i>=0; i-- ) onu azaltır. Aynı siparişin işlenmesi tekrarlanır - program döngüleri. Muhtemelen şöyle olmalı:
Yazarken 2 dakika gecikti... Şu kısma biraz daha yakından bakalım:
#property strict yönergesi ile derlenmiştir - son satırı azarlar: 'i' - bildirilmemiş tanımlayıcı. Mesele şu ki, değişken bir döngü içinde bildirilir ve sadece onun içinde geçerlidir. #property strict yönergesi olmadan hatasız derlendi, ancak bu kötü. Yönerge kullanılmalıdır.
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) yerine if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) yazmak daha kolaydır. Şimdi daha fazla ara vermelisiniz - bu döngüden çıkış. Ve diğer siparişleri işlemeniz gerekiyor. Ancak, bu tarihte gereksizdir. Piyasada ve bekleyen emirlerde bir hata oluşur, eğer işlem sırasında emir kapanmışsa ve eksikse. Genel olarak, if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) devam eder; - sonraki siparişleri işlemeye devam et
Aynı nedenle if(OrderProfit()>0) break; if(OrderProfit()>0) ile değiştirin devam edin;
İşte hatanın nedeni: if(OrderProfit()<0) i++ ; - Kaybeden bir sayı varsa, endeks artar. Ve döngü başlığı for(int i=orders-1;i>=0; i-- ) onu azaltır. Aynı siparişin işlenmesi tekrarlanır - program döngüleri. Muhtemelen şöyle olmalı:
Teşekkürler, metatrader artık çökmez) Hakkında
if(OrderProfit()>0) kırılması; if(OrderProfit()>0) ile değiştirin devam edin;
if(OrderProfit()>0) kırılması;
sipariş kârla kapandıysa tezgahı durdurmalı, doğru mu anladım?
Teşekkür ederim, metatrader artık çökmez) Bana gelince, sipariş bir kârla kapatılırsa, işlevin bu kârı dikkate almamasını, sadece zarar miktarını ve ilk siparişe kadar kârla kapatılmasını istiyorum. . Onlar.
sipariş kârla kapandıysa tezgahı durdurmalı, doğru mu anladım?
Mantığınız neredeyse doğru. Siparişlerin geçmişinde herhangi bir siparişin garantisi yoktur. Kendiniz için - yapabilirsiniz, satılık - kötü
Bir kaynak varsa - DROW_NONE - herhangi bir çizimin olmaması
Yardımcı olmadı, hala köşedeki sayıları gösteriyor
listede sırayla. Ancak bu listede herhangi bir sipariş verme garantisi yoktur.