Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 328

 
çift GetLastUpperFractalPrice()
{
for (int i = 3; i<=Barlar; i++)
if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) (i);
double LastUpperFractalPrice = Yüksek[i]; dönüş(LastUpperFractalPrice);

}

çok doğru? Bu işlev, son yukarı fraktalın fiyatını döndürür mü?

 
Trader7777 :

çok doğru? Bu işlev, son yukarı fraktalın fiyatını döndürür mü?


Fraktal bulma örneği ...
 
çift GetLastUpperFractalPrice()
{
for (int i = 3; i<=Barlar; i++)
{
if (iFractals(Symbol(), PERIOD_M5 ,MODE_UPPER,i) != 0) (i);
{
double LastUpperFractalPrice = Yüksek[i];
}
}
dönüş(LastUpperFractalPrice);

}

Peki işe yarayacak mı çalışmayacak mı?

 
Trader7777 :
çift GetLastUpperFractalPrice()
{
for (int i = 3; i<=Barlar; i++)
{
if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) (i);
{
double LastUpperFractalPrice = Yüksek[i];
}
}
dönüş(LastUpperFractalPrice);

}

Peki işe yarayacak mı çalışmayacak mı?


Yani, örneğin, olacak:

 double GetLastUpperFractalPrice()
{
   for ( int i = 3 ; i<= Bars ; i++)
   {
       if ( iFractals ( Symbol (), PERIOD_M5 ,MODE_UPPER,i) != 0 )
      {
         return (High [i]);
      }
   }
   return ( EMPTY_VALUE );
}

Senin gibi, olmayacak.

 
Trader7777 :
çift GetLastUpperFractalPrice()
{
for (int i = 3; i<=Barlar; i++)
{
if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) (i);
{
double LastUpperFractalPrice = Yüksek[i];
}
}
dönüş(LastUpperFractalPrice);

}

Peki işe yarayacak mı çalışmayacak mı?


hayır. kodu paneldeki SRC üzerinden yapıştırın.

return (XXX), kullanıcı işlevinden bir çıkış yapar - oraya sürülen ve işlev tarafından döndürülecek olan - XXX değeri veya bazı hesaplama işlevlerinin sonucu.

bu yüzden i-inci çubuk getirisinin maksimum fiyatını (Yüksek [i]) görüntülemek için fraktal bulurken girin - fazladan bir şey icat etmenize gerek yok.

ilerde))

 

İşte temel bir f-tion ayarı otlozh. siparişler, parametreler önemli değildir, ancak danışmanı "yeni fiyatı" aldıktan veya sıraladıktan sonra (içindeki sipariş yineleme döngüsünü kullanabilirsiniz) zorlamak veya başka bir şekilde sipariş vermemeye zorlamak önemlidir. aynı fiyatla. Aynı zamanda, sipariş verme döngüsü durmamalıdır.

çift Uzak=10000.0;
dize SMB;
çift NewPrice;
int i;
int başlangıç()
{
Yeniler();
KOBİ=Sembol();
{UstanOtlozh();}
}
dönüş(0);
geçersiz UstanOtlozh()
{
double OldPrice=WindowPriceOnDropped(); // Komut Dosyası Buraya Atıldı
Yeniler();
KOBİ=Sembol();
{
int i=1;
while(i<=Sipariş Toplamı())
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Sonraki Varsa
{ // Siparişlerin analizi:
(OrderSymbol()!= SMB) devam ederse; // Bizim finansal aracımız değil.
int İpucu=SiparişTürü(); // Sipariş türü
(İpucu<2) devam ederse; // Market siparişi
double NewPrice=OrderOpenPrice(); // Sipariş fiyatı
{
while(NewPrice<=Sor+200*Puan||NewPrice>=Sor+50*Puan)
{
YeniFiyat=YeniFiyat+50*Puan;
OrderSend(SMB,OP_BUYSTOP,0.01,NewPrice,3,0,0,NULL,0, CLR_NONE );
if(YeniFiyat>Sor+200*Puan||YeniFiyat<Sor+50*Puan)
kırmak;
}}}}}}

 
ALXIMIKS :
derlemek için düzeltildi - ve 555 build mt4 düzenleyicisini kullanın - sorunları hızlı bir şekilde bulmaya gerçekten yardımcı olur. sadece kurulumdan önce talimatları okuyun - ilk 15 sayfa.

Bu kadar basitliği soracağım hiç aklıma gelmezdi. Derlerken, BU() fonksiyonunun dahil olmadığını belirten bir mesaj verilir. Ben şöyle koyuyorum (kodu veriyorum) şimdi her şey derleniyor ama başabaş fonksiyonu çalışmıyor. Diğer Uzman Danışmanlarda, tam olarak aynı başabaş işlevi çalışır.

 int start()
  {
   if (Volume[ 0 ]> 1 ) return ; 
  
   if (CountTrades()== 0 && Open[ 1 ]>Close[ 1 ] && Open[ 2 ]<Close[ 2 ] && High[ 1 ]>High[ 2 ] && Low[ 1 ]<Low[ 2 ])   // продажа
   {
      ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Red);
       if ( OrderSelect (ticket, SELECT_BY_TICKET,MODE_TRADES))
      {
         TP= NormalizeDouble (Bid - TakeProfit * Point , Digits );
         OrderModify(ticket, OrderOpenPrice(), 0 ,TP, 0 );
      }
   }
   else
   if (CountTrades()== 0 && Open[ 1 ]<Close[ 1 ] && Open[ 2 ]>Close[ 2 ] && High[ 1 ]>High[ 2 ] && Low[ 1 ]<Low[ 2 ]) // покупка
    {
      ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Blue);   
       if ( OrderSelect (ticket, SELECT_BY_TICKET,MODE_TRADES))
      {
         TP= NormalizeDouble (Ask + TakeProfit * Point , Digits );
         OrderModify(ticket, OrderOpenPrice(), 0 ,TP, 0 );
      }
    }
   if (CountTrades()> 0 )
      {
      otype = FindLastOrderType();
       if (otype == OP_BUY)
         { // ценапоследнего ордера на покупку
         price = FindLastBayPrice();
         
         if ((Bid - price) / Point >= Step)
            {
               ticket= OrderSend ( Symbol (),OP_SELLSTOP,Lots,Bid,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Red);  
            }
         }
       else if (otype == OP_SELL)
         { // цена последнего ордера на продажу
         price = FindLastSellPrice();
         
           if ((price - Ask) / Point >= Step)
            {
               ticket= OrderSend ( Symbol (),OP_BUYSTOP,Lots,Ask,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Blue);  
            }
         }
      }
    BU();  
     return ( 0 );
  }
 
alexey1979621 :

Bu kadar basitliği soracağım hiç aklıma gelmezdi. Derlerken, BU() fonksiyonunun dahil olmadığını belirten bir mesaj verilir. Ben şöyle koyuyorum (kodu veriyorum) şimdi her şey derleniyor ama başabaş fonksiyonu çalışmıyor. Diğer Uzman Danışmanlarda, tam olarak aynı başabaş işlevi çalışır.




Bunun tek nedeni yanlış bir if(...) return ifadesidir; Görünüşe göre bir tane var - programın başında.
 

Kral!!! İnsanların kafasını neden karıştırıyorsunuz?

iFractals() , fraktal çubuk numarasını değil, fiyatı döndürür.

 
tara :

Bunun tek nedeni yanlış bir if(...) return ifadesidir; Görünüşe göre bir tane var - programın başında.
Bunu kaldırdım. Ancak sorun başka bir yerde - normalleşmede. Nedense danışman 5 değil 4 ondalık basamak görür.
 extern double   Lots             = 0.1 ;
extern string Сomment           = "Pattern_1" ;
extern int TakeProfit           = 10 ;     
extern int StopLoss             = 0 ;   
extern int Step                 = 2 ;   

extern int BULevel              = 2 ;
extern int    NotBULevel         = 2 ;         // Уровень безубытка в пунктах

extern int Slippage             = 2 ; // проскальзывание 
extern int Magic                = 111 ;



//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
       if ( Digits == 5 ) // для пятизначного брокера
         {
            TakeProfit *= 10 ;
            StopLoss *= 10 ;
            Slippage *= 10 ;
            Step *= 10 ;
            BULevel *= 10 ;
            NotBULevel *= 10 ;
         }
       return ( 0 );
}
Ve nasıl düzeltilir?