Kapatılan siparişler için kar hesaplaması "YARDIM" - sayfa 8

 
Natashe4ka :
Emirler bir seri halinde kapatılır, ancak kapanış için herhangi bir koşul yoksa, siparişler bir veya iki gün içinde toplanır vb.

Peki, seri neredeyse bir çevrimde kapanırsa, diyelim ki, bir çubuğun ömrü boyunca , o zaman seri kriteri, kapanış zamanı artı bir çubuk tarafından alınabilir. Yani, kapanış süresi daha az olan tüm siparişler atılmalıdır.

Doğru, bunun yalnızca test cihazında işe yarayacağına, manuel ticaretle herhangi bir müdahaleye - ve kârın yanlış hesaplanacağına dair korkular var (sadece danışmanın kârı dikkate alınacak ve manuel olarak işlem görecek - hayır).

 
Vitalie Postolache :
Peki, seri neredeyse bir çevrimde kapanırsa, diyelim ki, bir çubuğun ömrü boyunca , o zaman seri kriteri, kapanış zamanı artı bir çubuk tarafından alınabilir. Yani, kapanış süresi daha az olan tüm siparişler atılmalıdır.

Onlar.

if ((op< 0 || OrderType ()==op) && (t== OrderCloseTime ()  ||  t== OrderCloseTime () + 60) ) {LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();}

(t== OrderCloseTime () || t== OrderCloseTime () + 60) ?

 
Natashe4ka :

Onlar.

if ((op< 0 || OrderType ()==op) && t== OrderCloseTime () + 60 ) {LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();}

+60?

PeriodSeconds() daha doğru olurdu. Yoksa sadece M1 üzerinde mi çalışacaksınız?

Bunun gibi bir şey:

double lastloss()
{
double lastlos= 0.0 ,op= 0.0 ;
int cnt= 0 ;
datetime time= 0 ;
for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
{
       if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ))
      {
         if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==Magic && OrderType ()< 2 )
         {
             if (cnt== 0 ) time= OrderCloseTime ();
            op= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
             if ( OrderCloseTime ()+ PeriodSeconds ()<time && op> 0.0 ) break ;
            lastlos+=op;
             if (cnt!= 0 ) cnt++;
         }
      }
}
return (lastlos);
}
 
Vitalie Postolache :

Bunun gibi bir şey:

Böylece yeni değer öncekine eklenir. Ve her yeni kapanış gereklidir, yeni bir kâr değeri.
 

Ayrıca yorumun üzerine yazmayan DC'ler için yorumdaki siparişleri de numaralandırabilirsiniz. Ve yinelerken, sayı bozuk olur olmaz, sayıyı yorumdan ayırın - dizi hepsidir.

Örnek: 1,2,3,4,5 numaralı seri siparişleri. Sırayla kapalı 5,4,3,2,1 - döngü 1'i görür ve keser. 1,2,3,4,5 ve 1 sırasına göre (önceki serinin sıra numarası) kapanış - döngü 5-1>1 farkını görür ve kesintiye uğrar. Bunu koda nasıl çevireceğimi düşünmem gerekiyor)))

 
Natashe4ka :
Böylece yeni değer öncekine eklenir. Ve her yeni kapanış gereklidir, yeni bir kâr değeri.
Şey, bilmiyorum, hiç almıyorum.
 
Vitalie Postolache :
Şey, bilmiyorum, hiç almıyorum.

Kendine bilgi koy ve ne eklendiğini hemen göreceksin

color ProfitColor;

   if (lastloss()< 0 ) ProfitColor=Red;
   if (lastloss()> 0 ) ProfitColor=LimeGreen;
   if (lastloss()== 0 )ProfitColor=DarkGray;
   ObjectCreate ( "Last Profit" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSet ( "Last Profit" , OBJPROP_CORNER , 1 );
   ObjectSet ( "Last Profit" , OBJPROP_XDISTANCE , 5 );
   ObjectSet ( "Last Profit" , OBJPROP_YDISTANCE , 15 );
   ObjectSetText ( "Last Profit" , StringConcatenate ( "Last Profit: " , DoubleToStr (lastloss(), 2 )), 10 , "Arial" ,ProfitColor);
 
Natashe4ka :

Kendine bilgi koy ve ne eklendiğini hemen göreceksin

Hmm, evet, gerçekten ... Daha fazla düşüneceğiz)))
 
Test cihazındaki testi böyle anlıyorum ....
 
Vitalie Postolache :
Hmm, evet, gerçekten ... Daha fazla düşüneceğiz)))

Ayrıca her şey yolundaymış gibi hissettim.
Bu bilgiyi koda koymak zorunda değildim ve yaşaması daha kolay olurdu))

Ve şimdi dinlenmiyor, bunca zaman fonksiyon nasıl düzgün çalışmadı !!

Neden: