[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 46

 
bool exit_for = false ;
double max_1 = 0 ;
double max_2 = 0 ;
for ( int k = 0 ; k < Bars ; k + + )
{
	if (	iRSI ( Symbol ( ) , 0 , rsi_period , PRICE_CLOSE , k ) < iRSI ( Symbol ( ) , 0 , rsi_period , PRICE_CLOSE , k + 1 )
		& & iRSI ( Symbol ( ) , 0 , rsi_period , PRICE_CLOSE , k + 1 ) > iRSI ( Symbol ( ) , 0 , rsi_period , PRICE_CLOSE , k + 2 ) 	)
	{
		//Если это первый максимум:
		if ( max_1 = = 0 )
			max_1 = iRSI ( Symbol ( ) , 0 , rsi_period , PRICE_CLOSE , k + 1 ) ; //Записываем номер бара экстремума
		else
		//Если первый найден, записываем второй
		{	
                        max_2 = iRSI ( Symbol ( ) , 0 , rsi_period , PRICE_CLOSE , k + 1 ) ;
                        exit_for = true ;
                } 
	}
        //Выход из цикла, когда найдены оба максимума
        if ( exit_for = = true ) k = Bars + 1 ;  
}
Tünaydın . Lütfen söyle. Değeri 70'in üzerine çıktıktan sonra tepe noktaları RSI ile karşılaştırma konusundaki soruma bu çözümü önerdiler.(Kod yukarıda)

Ama biraz farklı çıkıyor. Sonuç olarak, geçmişteki yükseklerin arandığı ortaya çıkıyor (örneğin, geçmiş günlerde buluyor), ancak bu işlevin çalışmasına izin verildikten sonra bu koşulun yürütülmesini beklemesi gerekiyor (örneğin, 1. çubuktaki değer > 70) ... ve koşul karşılandığında (tarihte çubuk > 70 ve sonrasında değil) 1. Makim 2.'nin altındadır - sonra alımların kapanması

Bana neyi değiştireceğimi söyle.

teşekkürler
 
xruss писал(а) >>

bir soru daha lütfen yardım edin

Bir geçmiş emri seçtikten sonra türü nasıl belirlenir (Al veya Sat emrinin kapalı olup olmadığı)?

 // ищем самый последний закрытый ордер
for ( i = OrdersHistoryTotal ( ) ; i > = 0 ; i - - ) {
   if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) ) {
     if ( OrderSymbol ( ) = = Symbol ( ) ) {
       if ( OrderMagicNumber ( ) = = MagicNumber ) {
         if ( OrderCloseTime ( ) ! = 0 ) {
           if ( OrderCloseTime ( ) > time ) {
            time   = OrderCloseTime ( ) ;
            tikcet = OrderTicket ( ) ;
            profit = OrderProfit ( ) ;
            type   = OrderType ( ); <-----
           }
         }
       }
     }
   }
}
 
Roger >> :
Sizde bir değişken bildirilir ve ardından bir başkasını kullanmaya çalışır.

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...... Semyon Semenych!!!!!!!!!!!!!!!!!!! Eh, hemen söylerlerdi ........... yoksa yaşlılık bir sevinç değil - ama gençlik iğrenç .....

SSPPAASSIIBBOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

Lütfen bana söyle
siparişin stop veya kâr yoluyla kapatılıp kapatılmadığı konusunda net bir anlayışa ihtiyacınız var
priceprofitbuy ve pricestopbuy değişkenlerini yaptım
siparişler sona ermeden önce, fiyat satın al = Sor, ardından fiyatla satın al, başarılıysa uyarıda bulunun ve fiyatkarlı satın al ve fiyatları durdur, fiyata dayalı olarak satın al
o zaman priceprofitbuy koşuluyla >= Teklif ve fiyatlartopbuy <= Teklif Nasıl kapattığımı kontrol ederim - kar veya stop ile
ancak, döngü sırasında Teklif, kâr al düzeyine ulaştı, sipariş kapandı, ancak döngü fiyat kârlı satın al >= Teklif'e ulaştığında, Teklif küçüldü ve ardından döngü daha fazla çalışmaz.

soru - siparişin kârla kapatıldığını bir şekilde açıkça belirlemek mümkün mü ???
Değişkene sipariş biletinin numarasını atamaya ve ardından geçmişteki karı kontrol etmeye çalıştım, ancak biletteki sipariş geçmişten seçmiyor - geçmiş sadece yerleşim üzerinde çalışıyor.

 
gramp >> :

priceprofitbuy ve pricestopbuy değişkenlerini yaptım
siparişler sona ermeden önce, fiyat satın al = Sor, ardından fiyatla satın al, başarılıysa uyarıda bulunun ve fiyatkarlı satın al ve fiyatları durdur, fiyata dayalı olarak satın al
o zaman priceprofitbuy koşuluyla >= Teklif ve fiyatlartopbuy <= Teklif Nasıl kapattığımı kontrol ederim - kar veya stop ile
ancak, döngü sırasında Teklif, kâr al düzeyine ulaştı, sipariş kapatıldı, ancak döngü fiyat kârlı al >= Teklif'e ulaştığında, Teklif küçüldü ve ardından döngü daha fazla çalışmaz

soru - siparişin kârla kapatıldığını bir şekilde açıkça belirlemek mümkün mü ???
Değişkene sipariş biletinin numarasını atamaya ve ardından geçmişteki karı kontrol etmeye çalıştım, ancak biletteki sipariş geçmişten seçmiyor - geçmiş sadece yerleşim üzerinde çalışıyor.

Pek doğru değil:

Bir pozisyon tam olarak belirtilen fiyattan değil, kayma ile (genellikle en kötü ihtimalle) açılabilir.

Açık bir emrin fiyatını, daha önce OrderSelect(...) kullanarak seçmiş olan OrderOpenPrice() işlevini kullanarak belirlemek daha doğru olacaktır.

Ve açılış ve kapanış fiyatları arasındaki farkı hesaplamak için kapattıktan sonra daha da kolay. İkincisi, OrderClosePrice() işlevi tarafından belirlenir.

OrderType() size türü (al/sat) döndürür.

 

xrust'a: Çok teşekkür ederim.


Ancak ticaret koşullarında, kapalı bir siparişin türü OP_BUY ise, falan filan ((

şöyle giderim:


 int ORDtype;
// ищем самый последний закрытый ордер
for ( i = OrdersHistoryTotal ( ) ; i > = 0 ; i - - ) {
   if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) ) {
     if ( OrderSymbol ( ) = = Symbol ( ) ) {
       if ( OrderMagicNumber ( ) = = MagicNumber ) {
         if ( OrderCloseTime ( ) ! = 0 ) {
           if ( OrderCloseTime ( ) > time ) {
            time   = OrderCloseTime ( ) ;
            tikcet = OrderTicket ( ) ;
            profit = OrderProfit ( ) ;
            ORDtype   = OrderType ( ); <-----
           }
         }
       }
     }
   }
}
// торг условия
if(ORDtype=1)&&....

durumda, sipariş türü OP_BUY ise blablabla?

 
xruss >> :

if(ORDtype=1)&&....

durumda, sipariş türü OP_BUY ise blablabla?

Olmalı:

if(ORDtype == 1)&&....

 
Everlost >> :

Olmalı:

if(ORDtype == 1)&&....

ve geçmiş yoksa - benim durumumda ORDtype ==0 olacak?

 
xruss >> :

ve geçmiş yoksa - benim durumumda ORDtype ==0 olacak?

Değişkeni bildirirken belirtilen değere eşit olacaktır, yani. sizin durumunuzda 0, çünkü ona açık bir atama yapılmadı. Bu arada, önceki gönderide bir OP_BUY siparişi seçmek istediğinizi fark etmedim - tam olarak 0 bu sabite karşılık gelir ve 1 OP_SELL'dir. Bu nedenle, ORDtype değişkenini -1 değeriyle bildirmek daha iyidir:

int ORDtype=-1;

Ayrıca kafa karıştırmamak için hangi değerin hangi işlem tipine karşılık geldiğini şu şekilde belirtebilirsiniz:


if (ORDtype==OP_BUY) ...

 
Everlost >> :

Değişkeni bildirirken belirtilen değere eşit olacaktır, yani. sizin durumunuzda 0, çünkü ona açık bir atama yapılmadı. Bu arada, önceki gönderide bir OP_BUY siparişi seçmek istediğinizi fark etmedim - tam olarak 0 bu sabite karşılık gelir ve 1 OP_SELL'dir. Bu nedenle, ORDtype değişkenini -1 değeriyle bildirmek daha iyidir:

int ORDtype=-1;

Ayrıca kafa karıştırmamak için hangi değerin hangi işlem tipine karşılık geldiğini şu şekilde belirtebilirsiniz:


if (ORDtype==OP_BUY) ...

ve geçmişte bir Satış emri varsa ve ardından Uzman Danışman onu kapattıysa (geçmiş türünde, (kapanışı) t/p veya s/l olarak görüntülenir - son olarak kabul edilmez mi? istenen etkiyi elde edememek ((

Neden: