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

 

ah :-)

teşekkür etmek!

 

Merhaba bilenler!

İşte danışman. yukarı\aşağı fraktalda bir konum açar . Stop, fraktalın tepesinden 5 puan daha yüksek (AL ise) ve 5 puan daha düşük (SAT ise) nasıl yapılır???

P_up0 = iCustom ( 0 , 0 , "Ценовой канал" , Chperiod , 0 , 0 ) ;
   P_down0 = iCustom ( 0 , 0 , "Ценовой канал" , Chperiod , 1 , 0 ) ;
   P_up1 = iCustom ( 0 , 0 , "Ценовой канал" , Chperiod , 0 , 1 ) ;
   P_down1 = iCustom ( 0 , 0 , "Ценовой канал" , Chperiod , 1 , 1 ) ;
   Up = iCustom ( 0 , 0 , "olyakish_fractals_02(для Skonti)" , 15 , 150 , "Процент для отсеивания по объему" , 110 , 1 , 3 ) ;
   Down = iCustom ( 0 , 0 , "olyakish_fractals_02(для Skonti)" , 15 , 150 , "Процент для отсеивания по объему" , 110 , 3 , 3 ) ;
//задали все данные 

   total = OrdersTotal ( ) ;
   if ( total < 1 ) 
     {
      // Проверка свободной маржи
      if ( AccountFreeMargin ( ) < ( 1000 * Lots ) )
        {
         Print ( "We have no money. Free Margin = " , AccountFreeMargin ( ) ) ;
         return ( 0 ) ;  
        }
      // Условие открытие позиции BUY
      if ( Up > Down )
        {
         Lots = GetSizeLot ( ) ;
         ticket = OrderSend ( Symbol ( ) , OP_BUY , Lots , Ask , 3 , 0 , 0 , "" , 16384 , 0 , Green ) ;
         if ( ticket > 0 )
           {
            if ( OrderSelect ( ticket , SELECT_BY_TICKET , MODE_TRADES ) ) Print ( "BUY order opened : " , OrderOpenPrice ( ) ) ;
           }
         else Print ( "Error opening BUY order : " , GetLastError ( ) ) ; 
         return ( 0 ) ; 
        }
      // Условие открытие позиции SELL
      if ( Up < Down )
        {
         Lots = GetSizeLot ( ) ;
         ticket = OrderSend ( Symbol ( ) , OP_SELL , Lots , Bid , 3 , 0 , 0 , "" , 16384 , 0 , Red ) ;
         if ( ticket > 0 )
           {
            if ( OrderSelect ( ticket , SELECT_BY_TICKET , MODE_TRADES ) ) Print ( "SELL order opened : " , OrderOpenPrice ( ) ) ;
           }
         else Print ( "Error opening SELL order : " , GetLastError ( ) ) ; 
         return ( 0 ) ; 
        }
      return ( 0 ) ;
     }
    
   for ( cnt = 0 ; cnt < total ; cnt + + )
     {
      OrderSelect ( cnt , SELECT_BY_POS , MODE_TRADES ) ;
      if ( OrderType ( ) < = OP_SELL & &   
         OrderSymbol ( ) = = Symbol ( ) )  
        {
         if ( OrderType ( ) = = OP_BUY )   // длинная позиция открыта
           {
            // условие закрытие длинной позиции
            if ( P_down1 > P_down0 | | Up < Down )
                {
                 OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Violet ) ; 
                 return ( 0 ) ; 
                }
            if ( TrailingStop > 0 )  
              {                  
               if ( Bid - OrderOpenPrice ( ) > Point * TrailingStop )
                 {
                  if ( OrderStopLoss ( ) < Bid - Point * TrailingStop & & OrderStopLoss ( ) ! = OrderOpenPrice ( ) + X * Point )
                    {
                     OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , OrderOpenPrice ( ) + X * Point , OrderTakeProfit ( ) , 0 , Green ) ;
                     return ( 0 ) ;
                    }
                 }
              }
           }
         else 
           {
            // условие закрытия короткой позиции
            if ( P_up1 < P_up0 | | Up > Down )
              {
               OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Violet ) ; 
               return ( 0 ) ; 
              }
            if ( TrailingStop > 0 )  
              {               
               if ( ( OrderOpenPrice ( ) - Ask ) > ( Point * TrailingStop ) )
                 {
                  if ( NormalizeDouble ( OrderStopLoss ( ) , Digits ) ! = NormalizeDouble ( OrderOpenPrice ( ) - X * Point , Digits ) )
                    {
                     OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , OrderOpenPrice ( ) - X * Point , OrderTakeProfit ( ) , 0 , Red ) ;
                     return ( 0 ) ;
                    }
                 }
              }
           }
        }
     }
   return ( 0 ) ;
  }

Burada Fiyat Kanalını kullandım.

 // условие закрытия короткой позиции
            if ( P_up1 < P_up0 | | Up > Down )
              {
               OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Violet ) ; 
               return ( 0 ) ; 
              }
ve
 // условие закрытие длинной позиции
            if ( P_down1 > P_down0 | | Up < Down )
                {
                 OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Violet ) ; 
                 return ( 0 ) ; 
                }

Pozisyonun açıldığı fraktalın L veya H'sini belirlememi zorlaştırıyor!

aşağı yukarı böyle mi?!!!??

 if ( NormalizeDouble ( MathAbs ( High [ i ] - 5 ) , Digits ) < Price )
 
Hangi enstrüman fiyatı 5'e eşittir?
 if ( NormalizeDouble ( MathAbs ( High [ i ] - 5 ) , Digits ) < Price )

bu yüzden en az anlamlı basamağın fiyatıyla çarpıyoruz

5*Point
 

Burada yanılmışım. Teşekkür ederim.

Pozisyonun açıldığı fraktalın tepesi nasıl ayarlanır ????

 
tüm sorunları deneyerek çözüyoruz - bir komut dosyası yazıyoruz, çalıştırıyoruz,
- standart iFractals () arasında aşağıdaki farklılıkları görüyoruz
1. Fraktal indeks göstergesi tam olarak Hi/Lo'ya eşittir
2. var olmayan fraktal değer ==0
 int i ;
   double f ;
   for ( i = 0 ; i < 50 ; i + + ) { f = iFractals ( NULL , 0 , MODE_UPPER , i ) ; if ( f ! = 0 ) break ; }
 Alert(f,"  ",High[i]," i=",i);
PS, bu döngü ile pozisyondan geriye bakıyoruz, pozisyonu açarken, unutmayın
datetime timeFractalOnOpenPos=Time[i]
 
Bunu danışmanda nasıl göstereceğimi anlamıyorum. pozisyon açmak şartıyla bu fraktalı ezberleyin. o zaman kapanış durumunda nasıl çağrılır?
 
aramanın ne anlama geldiği belli değil,
küresel program değişkenlerinde
-Pozisyonun açılış fraktalının bar zamanını ezberledik, barın zamanına göre iBars () bar sayısını biliyoruz
- fraktalın fiyatını hatırla
- yukarı/aşağı hafızaya alındı
ve sonra tekrar aramak için ne?
 
belki ben öyle koymadım. Sadece nasıl kodlayacağımı bilmiyorum.
 
açıklığa kavuşturalım - her yönde kaç sipariş ve hangileri?
 

tüm blokların üstünde

double UfractalBuy,LfractalBuy;

bir satın alma emri açarken en yakın fraktalı not edin

int i; double f;

     if ( ticket > 0 )
           {
             if ( OrderSelect ( ticket , SELECT_BY_TICKET , MODE_TRADES ) ) 
             {
             Print ( "BUY order opened : " , OrderOpenPrice ( ) ) ;
  
   for ( i = 0 ; i < 50 ; i + + ) { f = iFractals ( NULL , 0 , MODE_UPPER , i ) ; if ( f ! = 0 ) break ; }
   UfractalBuy = High [ i ] ;
   for ( i = 0 ; i < 50 ; i + + ) { f = iFractals ( NULL , 0 , MODE_LOWER , i ) ; if ( f ! = 0 ) break ; }
   LfractalBuy = Low [ i ] ;
             }
           }

bir satın alma siparişini kapatmak için başka bir koşul girin

if(P_down1>P_down0||Up<Down||Close[0]+5*Point<LfractalBuy)