örneğin dize
bool neutral = OrderClosePrice() == OrderOpenPrice();
belki de algoritmik koşulların çalışmasını aşağıdaki gibi oluşturmak gerekir:
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
peki, aynı ruhta diğer iki koşul
Bu arada, tarihteki son ticaret her zaman sonuncusu değildir.
örneğin dize
belki de algoritmik koşulların çalışmasını aşağıdaki gibi oluşturmak gerekir:
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
peki, aynı ruhta diğer iki koşul
Ama yine de, elbette kontrol edip yeniden yazacağım. Sonuçları size bildireceğim.
Evet, zaman örneklemesini kaldırdım ama hala çalışmıyor ... Bu bloğu daha önce diğer sistemlerde kullandım ve bu kısımda mükemmel çalıştı.
Ama yine de, elbette, kontrol edip yeniden yazacağım. Sonuçları size bildireceğim.
Bu değişkenler bir yerde sıfıra mı ayarlanmış?
ObchMin = ObchMin + SumPosOrder; // Подсчет общего минуса Minus++; //Подсчет отрицательных сделок Sdelok++; //Подсчет количества сделок
Belki tersinden gidin.
Şimdilik bu fonksiyondan istatistik toplamayı, diğerinde genel eksi ve istatistikleri kaldıracağım (ayrı bir fonksiyon üreteceğim)
Bloklar halinde yazıyorum.
İstatistik toplamak ve eksi ve artı saymak için blok (eksi ve artı global değişkenler)
if ( OrderSelect ((OrdersHistoryTotal() - 1 ), SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol ) { if (OrderTicket() != Tiket2) { bool profit1 = false ; if (OrderClosePrice() > 0 ) { profit1 = true ; } bool loss1 = false ; if (OrderClosePrice() < 0 ) { loss1 = true ; } SumPosOrder = OrderLots(); Tiket2 = OrderTicket(); Print (OrderCloseTime()); if (loss1) { ObchMin = ObchMin + SumPosOrder; Minus++; Sdelok++; } if (profit1) { ObchPlus = ObchPlus + (SumPosOrder * 0.8 ); } if (profit1 && ObchPlus < ObchMin) { Pobeda++; Sdelok++; } if (profit1 && ObchPlus > ObchMin) { ObchPlus = 0 ; ObchMin = 0 ; Pobeda++; Sdelok++; } }
Oranın hesaplanması (daha doğrusu örnekleme) için değişken n'nin Blok 2 seçimi
int GetN() { int n = 0 ; for ( int i = OrdersHistoryTotal() - 1 ; i >= 0 ; i--) { if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol ) { bool profit = false ; if (OrderClosePrice() > 0 ) profit = true ; bool loss = false ; if (OrderClosePrice() < 0 ) loss = true ; } if (loss) { n++; } if (n >= MartinSteps) { n = 0 ; break ; } if (profit && ObchPlus < ObchMin) { n++; } if (profit && ObchPlus > ObchMin) { n = 0 ; break ; } } Print (n); return n; } double SelectVolume( int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; } //+------------------------------------------------------------------+
Bu muhtemelen doğru olurdu...
mantığı anlayana kadar
nasıl yani?
bool profit = false ; if (OrderClosePrice() > 0 ) profit = true ; bool loss = false ; if (OrderClosePrice() < 0 ) loss = true ;
Bir emrin kapanış fiyatı nasıl sıfırdan az olabilir?
Kapanış fiyatı açılış fiyatından yüksekse AL emri pozitif bölgede olacaktır.
İşte satın almanın artı koşulu (komisyonlar ve takaslar hariç):
OrderClosePrice() > OrderOpenPrice()eğer tersiyse, o zaman olumsuzdur.
Kapanış fiyatı açılış fiyatından yüksekse AL emri pozitif bölgede olacaktır.
İşte satın almanın artı koşulu (komisyonlar ve takaslar hariç):
eğer tersiyse, o zaman olumsuzdur.İkili opsiyonlar için yazdığım için biraz farklı yaptım:
if (OrderProfit() > 0 )
Yani muhtemelen doğru olurdu?
Belki tersinden gidin.
Şimdilik bu fonksiyondan istatistik toplamayı, bir diğerinde genel eksi ve istatistikleri kaldıracağım (ayrı bir fonksiyon üreteceğim)
Bloklar halinde yazıyorum.
İstatistik toplamak ve eksi ve artı saymak için blok (eksi ve artı global değişkenler)
Oranın hesaplanması (daha doğrusu örnekleme) için değişken n'nin Blok 2 seçimi
Bu muhtemelen doğru olurdu...
Algoritma boyunca size zaten tavsiye verildi, karışmak istemiyorum ve kodunuza ve aynı tavsiyeye bakmadım bile ... Ve bu
double SelectVolume( int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; }
gözüme çarptı. Bu bağlamda soru şudur: switch ifadesini uygulamak daha kolay ve daha okunaklı değil mi?
double SelectVolume( int n) { double Volume = 0.0 ; switch (n) { case 1 : Volume = Volume2; break ; case 2 : Volume = Volume3; break ; case 3 : Volume = Volume4; break ; case 4 : Volume = Volume5; break ; case 5 : Volume = Volume6; break ; case 6 : Volume = Volume7; break ; case 7 : Volume = Volume8; break ; case 8 : Volume = Volume9; break ; case 9 : Volume = Volume10; break ; default : Volume = Volume1; break ; } return (Volume); }Bence okuması ve anlaması daha kolay. Belki biraz daha hızlı çalışır.
Algoritma boyunca size zaten tavsiye verildi, karışmak istemiyorum ve kodunuza ve aynı tavsiyeye bakmadım bile ... Ve bu
gözüme çarptı. Bu bağlamda soru şudur: switch ifadesini uygulamak daha kolay ve daha okunaklı değil mi?
Bence okuması ve anlaması daha kolay. Belki biraz daha hızlı çalışır.Başlangıçta bulduğum gibi yaptım, işe yaradı, bu yüzden geliştirmeyi düşünmedim.
Ne derler bilirsiniz - işe yarıyor - dokunmayın.
Ama şimdi kesinlikle bu yöntemi uygulamaya çalışacağım. Çünkü öğrenmen ve büyümen gerekiyor.
Şimdi n değişkenimle ilgileneceğim. O düşünülmek istemiyor.
her zaman n = 0 (şimdilik)

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
kod yazarım
Görev başlangıçta şuydu:
Son kapatılan siparişi bulun.
Artı kapalı veya eksi ile kontrol edin.
İşlem sayısını sayın
Artıları ve eksileri sayın.
Bahis miktarını hesaplayın.
İşlem pozitifse (ve toplam eksi = 0) o zaman 1 numaralı bahis
Anlaşma olumsuzsa, eksi sayarız ve 2 No'lu oran veririz.
Artı ama eksi > 0 ise, sonraki bahis.
Ama nedense bahis sayısını ve bahis miktarını doğru hesaplamıyor...