Kontrol et - neyi yanlış yaptım? - sayfa 2

 
Natalya Smirnova # :

İkili opsiyonlar için yazdığım için biraz farklı yaptım:


Yani muhtemelen doğru olacak?

İşte sorunun ne olduğu
1 sipariş için terminalde 2 hat


Ve Uzman Danışman tarafından verilen siparişe göre Kar == 0

 
Natalya Smirnova # :

İşte sorunun ne olduğu
1 sipariş için terminalde 2 hat


Ve Uzman Danışman tarafından verilen siparişe göre Kar == 0

sıfırdan düşük fiyatı nereden buldun ekranı göster ?

bu ekranda öyle bir şey yok

 
Alexey Viktorov # :

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.
Belki bir işlev yerine sadece volume[n] dizisini kullanın?
Tehdit Her kod satırı için ödeme yapsalar da, böyle bırakmak daha iyidir :))
 
Nikolai Semko # :
Belki bir işlev yerine sadece volume[n] dizisini kullanın?
Tehdit Her kod satırı için ödeme yapsalar da, böyle bırakmak daha iyidir :))

Belki evet ... Katılıyorum.

 
Renat Akhtyamov # :

sıfırdan düşük fiyatı nereden buldun ekranı göster ?

bu ekranda öyle bir şey yok


OrderProfit()'i almaya çalışıyorum - 0 veriyor

işte bu ek satırdan ayrılacağı için -0.01'lik bir kâr bulunan onay

 
Alexey Viktorov # :

Belki evet ... Katılıyorum.

Bunu kendim ve kendimi geliştirmem için almıyorum. İşten sonra, Kâse'yi aramak ilginçtir.
 

Genel olarak, negatif fiyatı anlamadım, hala mevcut değil

toplam karı şöyle bir hesapla (kopyala)

neye ihtiyacın olduğunu vurguladı

    for(i=0;i<OrdersHistoryTotal();i++)

   {

      if(OrderSelect (i,SELECT_BY_POS,MODE_HISTORY))

      {

          if(OrderType()==ORDER_TYPE_BALANCE && OrderCloseTime()>startDate)Withdrawal=Withdrawal+ OrderProfit()+OrderCommission()+OrderSwap();

         if((OrderType()==ORDER_TYPE_BUY || OrderType()==ORDER_TYPE_SELL))

         {

            if(OrderCloseTime()>iTime(Symbol(),PERIOD_D1,0))hystCurrDay=hystCurrDay+OrderProfit()+OrderCommission()+OrderSwap();

            if(OrderCloseTime()<iTime(Symbol(),PERIOD_D1,0) && OrderCloseTime()>iTime(Symbol(),PERIOD_D1,1))hystPrevDay=hystPrevDay+OrderProfit()+OrderCommission()+OrderSwap();

         }

      }

   }



 
Natalya Smirnova # :
Bunu kendim ve kendimi geliştirmem için almıyorum. İşten sonra, Kâse'yi aramak ilginçtir.

Boşver. Nikolai ve benim aramda böyle bir kabal oluştu...

Özünde, sorununuz: BO üzerindeki OrderProfit() gerçek bir değer vermediğinden, emrin kapanış fiyatı ile açılış fiyatı arasındaki fark olarak pozitif/negatif bir kapalı emir tanımlamanız gerekir. Bu konuda size zaten söylendi

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Kontrol et - neyi yanlış yaptım?

Renat Akhtyamov , 2021.12.21 09:27

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 alım için artı koşul (komisyonlar ve takaslar hariç):

OrderClosePrice() > OrderOpenPrice()
eğer tersiyse, o zaman olumsuzdur.

 
Natalya Smirnova # :
Bunu kendim ve kendimi geliştirmem için almıyorum. İşten sonra, Kâse'yi aramak ilginçtir.

Evet, Natalya - "Bir satır kod için ödeme yaptığınızda" dizisinden sadece bir memeydi.

Programcılar arasında böyle bir mizah


Senin durumunda, bir işleve gerek yok

 double SelectVolume( int n)

Sadece Volume1 ... Volume10 değişkenlerini başlangıçta bir dizi hacmi[10] biçiminde oluşturmanız gerekir.
ve ardından n dizinine göre [n] öğelerine erişin.
Endişelenme - hemen hemen her programcı bunu yaşadı.
Ana şey, programlamadan gerçekten acele etmenizdir. Ben hissediyorum.
Yani uzağa gideceksin.

 
Kabul ediyorum. Programlamadan gerçekten acele ve çok uzun!!!
Herkes mezun olmuyor...