[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 415

 
Neo777 :

Burada danışmanın, siparişin sadece kavşakta değil, mumun KAPANIŞINDA açılması için yapılması gerekir.

Yardımcı olabilecek herkes, şimdiden teşekkürler.


Peki barın bu tık ile kapanacağını nasıl bileceksin? Belki yeni bir bar açıldıktan sonra?

kod, SRC düğmesiyle eklenir

 

TAMAM.

Evet yeni çubuk

 
Neo777 :

TAMAM.

Evet yeni çubuk

https://www.mql5.com/en/articles/1494 yeni bir çubuğun başladığını belirlemenin yolları burada. Nasıl başladı - koşullarınızı kontrol edin
 

İyi günler İnsanlar, birisi, WindowScreenShot işlevini bulmama yardım etsin. 3. gün kimse cevap vermiyor ((. Aşağıdaki içeriğe sahip bir komut dosyası yazdı (ekteki dosyaya bakın).

Senaryo hakkında 2 kelimeyle. Komut dosyası, istemci terminal penceresinin mevcut grafiğinin ekran görüntülerini oluşturmak için tasarlanmıştır.Harici tarihsaat Bar_time harici değişkeni, çubuğun saatini ayarlar, sıfırdan başlayarak ve sıfır çubuğuna kadar, bir ekran görüntüsü oluşturulacaktır (hesaplanan grafikte sağ girinti). Çizgide

int bar_number=iBarShift(NULL,0,Bar_time,true)

extern datetime Bar_time dizesi tarafından harici değişkende belirtilen çubuğun sıra numarasını arar. Ve zaten doğrudan işlevin kendisinde, satırda

bool f=WindowScreenShot(ad+".gif",1024,768,bar_number,Scale,Graph_View)

Şimdi asıl soru... Basitlik için, son iki çubuğun ekran görüntüsünü oluşturmamız gerektiğini varsayalım. O zaman eğer çizgi

int bar_number=iBarShift(NULL,0,Bar_time,true)

değiştirmeden bırakın, böyle bir ekran görüntüsü alıyoruz


Yani, ekran görüntüsünde tek bir çubuk yok (satırda olmasına rağmen

int bar_number=iBarShift(NULL,0,Bar_time,true)

bar sayısı zamana göre hesaplanmış olmalıdır)

Bu çizgi aşağıdaki gibi temsil edilirse

int bar_number=iBarShift(NULL,0,Bar_time,true)+2

sonra istediğimiz ekran görüntüsünü alırız:

Soru : neden bu satırda bu satırın formu var?

int bar_number=iBarShift(NULL,0,Bar_time,true)

Ekran görüntüsü yukarıdaki satırda belirtilenden 2 çubuk sağa kaydırılarak mı alınmış?

Not: Forumu kirletmemek adına şimdiden cevap için teşekkürler

Dosyalar:
 
ilunga :
kodu göster + göstergedeki giriş parametreleri nelerdir

Eh, kendim her şeyi 20 kez kontrol ettim, 20 kez kontrol etmeden yazmazdım, tüm parametreler göstergede olduğu gibi doğru girilir. Sorun muhtemelen başka bir şeyde yatıyor, böyle bir sorunla karşılaşan var mı?
 

Meslektaşlar!! iyi akşamlar!

Şaşırtıcı QQE göstergesini keşfetti! ve bu göstergeye göre bir danışman bulmaya karar verdi... ve bulamadı. Ancak bu forumda POZITIV kullanıcısından bir mesaj buldum.

Şu mantığı ortaya koydu: "kırmızı çizgi sarı çizgiyi aşağıdan yukarıya kestiğinde, bir Buy emri, kırmızı çizgi sarı olanı yukarıdan aşağıya kestiğinde - bir Sat emri açılmalıdır".

Sonuç olarak, yarı bitmiş bir EA kodu yayınladı.

Kendim için farklı bir mantık buldum: kalın eğri noktalı olanı yukarıdan aşağıya kestiğinde, koyu kırmızı noktalı olanı aşağıdan yukarıya kestiğinde, bu lotu satmanız ve kapatmanız (al) gerekir. Ayrıca, aynı anda, hemen başka bir lot açın (alış), tersi durum oluştuğunda kapanan (sat) ..... genel olarak, bir lot sürekli açıktır ve çizgilerin her kesişimi bir tane kapatmak için kullanılır. ve aynı anda başka bir lot açın. Ayrıca kavşak muhtemelen bir barın kapanmasından sonraki değerlerine göre değerlendirilmelidir, yani. 20. dakikada (kapanıştan sonra) kalın değer 51 (Konvansiyonel) ve noktalı olan 50 ise ve 21. dakikada (kapanıştan sonra) kalın değer 50 ve noktalı olan 51 ise, o zaman satmak zaruridir. SL ve TK yok.

Prensip olarak, mantık basittir. Ok yok, alarm veya mesaj yok. Yalnızca otomatik modda en saf haliyle ticaret yapın

Lütfen bu kodu (aşağıda) böyle bir mantıkla düzeltmeme yardım edin. Ve böylece koddaki süreyi (1 dakikadan 1 güne kadar) ve SF parametresini (yumuşatma) ayarlamak mümkün olacaktır.

İkinci gündür kodu anlamaya ve düzeltmeye çalışıyorum ama programcı değilim (((((((((((((((((((((((((((((((((((((


Gerçekten yardımınızı umuyorum!

 //--- input parameters
extern double MaxRisk= 1.0 ;
extern double FixLot = 0.01 ;
extern double Exponent= 2.0 ;
extern int Magic= 888 ;

// костыли

extern int TakeProfit= 100 ;
extern int StopLoss= 100 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
//----
   int Count= 0 ;
   double b0,b1;
   int ticket;

// параметры индикатора
   int SF= 5 ; // original 5
   int RSI_Period= 14 ; // original 14
   double DARFACTOR= 4.236 ; //original 4.236

//------------ Параметры из индикатора QQEA -----------------------
// Buffer0 -- красная жирная
   string Buffer0= iCustom ( NULL , 0 , "QQEA" ,SF,RSI_Period,DARFACTOR, 0 , 0 );
// Buffer1 -- жёлтый пунктир
   string Buffer1= iCustom ( NULL , 0 , "QQEA" ,SF,RSI_Period,DARFACTOR, 1 , 0 );

   b0= StrToDouble (Buffer0);
   b1= StrToDouble (Buffer1);


   double Lot=GetLot(MaxRisk);
// если лот <0 выводим сообщение об ошибке
   if (Lot== 0 )
     {
       Alert ( "Недостаточно средств!" );
       return ( 0 );
     }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if (Lot!= 0 && b0>b1) // если лот <> 0 и красная выше жёлтой
     {
      ticket=NewOrder(OP_BUY,Lot);
       if (ExistOrders( Symbol (), 1 , 888 , 0 )==true) // проверяем наличие ордера sell
        {
         CloseOrder();
        }
     }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if (Lot!= 0 && b0<b1) // если лот <> 0 и красная выше жёлтой
     {
      ticket=NewOrder(OP_SELL,Lot);
       if (ExistOrders( Symbol (), 0 , 888 , 0 )==true) // проверяем наличие ордера buy
        {
         CloseOrder();
        }
     }

   Comment ( "Red line: " ,b0, "Yellow line: " ,b1);
   return ( 0 );
  }
//-------------------------------------------------------------
//расчёт лота

double GetLot( int Risk)
  {
   double Free= AccountFreeMargin ();
   double One_Lot = MarketInfo ( Symbol (),MODE_MARGINREQUIRED);
   double Min_Lot = MarketInfo ( Symbol (),MODE_MINLOT);
   double Max_Lot = MarketInfo ( Symbol (),MODE_MAXLOT);
   double Step= MarketInfo ( Symbol (),MODE_LOTSTEP);
   double Lot = MathFloor (Free*Risk/ 100 /One_Lot/Step)*Step;
   if (Lot<Min_Lot) Lot=Min_Lot;
   if (Lot>Max_Lot) Lot=Max_Lot;
   if (Lot*One_Lot>Free) return ( 0.0 );
   return (Lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ExistOrders( string sy= "" , int op=- 1 , int Magic=- 1 , datetime ot= 0 )
  {
   int i,k= OrdersTotal (),ty;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++)
       //+------------------------------------------------------------------+
       //|                                                                  |
       //+------------------------------------------------------------------+
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         ty= OrderType ();
         if (ty> 1 && ty< 6 )
           {
             if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || ty==op))
              {
               if (Magic< 0 || OrderMagicNumber ()==Magic)
                 {
                   if (ot<= OrderOpenTime ()) return (True);
                 }
              }
           }
        }
     }
   return (False);
  }
//открытие нового ордера
int NewOrder( int Cmd, double Lot)
  {
   double TP= 0 ; //тейкпрофит
   double SL= 0 ; //стоплосс
   double PR= 0 ; //Цена
   while (! IsTradeAllowed ()) Sleep ( 100 );
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if (Cmd==OP_BUY)
     {
      PR=Ask;
       if (TakeProfit> 0 ) TP=Ask+TakeProfit* Point ;
       if (StopLoss> 0 ) SL=Ask-StopLoss* Point ;
     }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if (Cmd==OP_SELL)
     {
      PR=Bid;
       if (TakeProfit> 0 ) TP=Bid-TakeProfit* Point ;
       if (StopLoss> 0 ) SL=Bid+StopLoss* Point ;
     }
   if (GetOrdersCount(Magic,Cmd)> 0 ) return ( 0 );
   int tic= OrderSend ( Symbol (),Cmd,Lot,PR, 3 ,SL,TP, " " , 0 , 0 , Green );
   if (tic< 0 ) Print ( "Ошибка открытия ордера: " , GetLastError ());
   return (tic);
  }
// закрытие ордера
void CloseOrder()
  {
   double PR= 0 ;
   while (! IsTradeAllowed ()) Sleep ( 100 );
   if ( OrderType ()==OP_BUY) PR=Bid;
   if ( OrderType ()==OP_SELL) PR=Ask;
   if (! OrderClose ( OrderTicket (), OrderLots (),PR, 3 , Red ))
       Print ( "Ошибка закрытия ордера: " , GetLastError ());
   return ;
  }
//+------------------------------------------------------------------+
// подсчет кол-ва открытых позиций
int GetOrdersCount( int MagicNumber, int Type)
  {
   int count= 0 ;

   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       // already closed
       if ( OrderSelect (i,SELECT_BY_POS)==false) continue ;
       // not current symbol
       if ( OrderSymbol ()!= Symbol ()) continue ;
       // order was opened in another way
       if ( OrderMagicNumber ()!=MagicNumber) continue ;

       if ( OrderType ()==Type)
        {
         count++;
        }
     }

   return (count);
  }
//-------------------------------------------------------
 
sss2019 :

Eh, kendim her şeyi 20 kez kontrol ettim, 20 kez kontrol etmeden yazmazdım, tüm parametreler göstergede olduğu gibi doğru girilir. Sorun muhtemelen başka bir şeyde yatıyor, böyle bir sorunla karşılaşan var mı?
iCustom'a yanlış parametre girişinden başka bir şey olamaz. Aramak.
Geçen gün akşamı onunla savaşarak geçirdim. Harici göstergeden Expert Advisor'a aktarırken, parametrelerin sırası karıştı. Adeta çıldıracaktım, miktar denk geldi :))
 
granit77 :
iCustom'a yanlış parametre girişinden başka bir şey olamaz. Aramak.
Geçen gün akşamı onunla savaşarak geçirdim. Hariciyi göstergeden Uzman Danışmana aktarırken, parametre sırası karıştı. Adeta çıldıracaktım, miktar denk geldi :))

 iCustom ( Symbol (), 0 , "RMRCS_entry-point" , " " , 5 , 6 , 7 , 62 ,- 62 , 57 ,- 57 , 54 ,- 54 , 0.7 , 1.1 , 1.07 , " " , 1 , 9 , 6 , 1 , 34 , 6 , 0 , 4 , 89 , 1 , 3 , 3.0 , 2.0 , 0.5 , 3.0 , " " , 6 , 6 , 70 , 30 , 0.0 , 6 , 3.0 , " " , 1 , 21 , 1 , 45 , 89 , 1 , 35 , 89 , 1 , 9 , " " , 4 , 2 , 5 , 1 , " " , 49 ,- 49 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , " " , 0 , 34 , 200 , 150 , 1 , 100 , " " , 1 , 3 , 1 , 1 , 2 , " " , 1.4 , 3.7 , 0 , 1 );


Ve işte parametreler

 extern string REI_str = "" ;
extern int REI1_Per= 5 ; 
extern int REI2_Per= 6 ;     
extern int REI3_Per= 7 ;     
extern int REI1_up= 62 ;    
extern int REI1_dn=- 62 ;    
extern int REI2_up= 57 ;     
extern int REI2_dn=- 57 ;            
extern int REI3_up= 54 ;     
extern int REI3_dn=- 54 ;            
extern double REI1_ct= 0.7 ;  
extern double REI2_ct= 1.1 ;  
extern double REI3_ct= 1.07 ;
extern string MACD_str = "" ;
extern int MACD_FastMA_Meth= 1 ;   
extern int MACD_FastMA_Per= 9 ;    
extern int MACD_FastMA_Price= 6 ; 
extern int MACD_SlowMA_Meth= 1 ;   
extern int MACD_SlowMA_Per= 34 ; 
extern int MACD_SlowMA_Price= 6 ; 
extern int MACD_SL_Meth= 0 ;      
extern int MACD_SL_Per= 4 ;       
extern int MACD_Diap_Per= 89 ;    
extern int MACD_Slope_Meth= 1 ;   
extern int MACD_Slope_Per= 3 ;  
extern double MACD_ct_1 = 3.0 ; 
extern double MACD_ct_2 = 2.0 ;  
extern double MACD_ct_3 = 0.5 ;  
extern double MACD_ct_4 = 3.0 ;  
extern string RSI_str = "" ;
extern int RSI_Per = 6 ;     
extern int RSI_Price = 6 ;  
extern int RSI_up = 70 ;      
extern int RSI_dn = 30 ;     
extern double RSI_ct1 = 0.0 ; 
extern int RSI_ct2 = 6 ;      
extern double RSI_ct3 = 3.0 ;
extern string CHO_str = "" ;
extern int   CHO_FastMA_Meth= 1 ;      
extern int   CHO_FastMA_Per= 21 ;      
extern int   CHO_SlowMA_Meth= 1 ;      
extern int   CHO_SlowMA_Per= 45 ;      
extern int   CHO_DiapVal_Per= 89 ;     
extern int   CHO_MADiapVal_Meth= 1 ;   
extern int   CHO_MADiapVal_Per= 35 ;    
extern int   CHO_SlopeDiapVal_Per= 89 ;  
extern int   CHO_MASlope_Meth= 1 ;      
extern int   CHO_MASlope_Per= 9 ;       
extern string Stoch_str = "" ;
extern int Stoch_KPer= 4 ;       
extern int Stoch_DPer= 2 ;        
extern int Stoch_Slow= 5 ;        
extern int Stoch_SL_MA_Meth= 1 ; 
extern string EntryLevel_str = "" ;
extern int REI_SvS_up = 49 ;  
extern int REI_SvS_dn = - 49 ; 
extern int MACD_SvS_up = 0 ; 
extern int MACD_SvS_dn = 0 ;  
extern int RSI_SvS_up = 0 ;  
extern int RSI_SvS_dn = 0 ; 
extern int CHO_SvS_up = 0 ;  
extern int CHO_SvS_dn = 0 ;  
extern int STO_SvS_up = 0 ; 
extern int STO_SvS_dn = 0 ;  
extern string EntryOther_str = "" ;
extern int MALgthBar_Meth= 0 ;
extern int MALgthBar_Per= 34 ;
extern int MAXLgthBar = 200 ;
extern int TtS_MinABS = 150 ; 
extern int Shift_Points = 1 ; 
extern int Start_Calc = 100 ;   
extern string EntryCondition = "" ;
extern bool Ban_InvEntry = true ;    
extern int InvEntry_Bars = 3 ;        
extern bool Ban_TtS_Decline= true ;   
extern bool Ban_Entry_Series = true ; 
extern int MAX_Entry_Series= 2 ;      
extern string Gen_str = "" ; 
extern double DiapBar_CtSl = 1.4 ;
extern double TakeProf_CtSl = 3.7 ;
 
sss2019 :
Söyle bana, iCustom üzerinden bağlanırken standart olmayan bir göstergedeki parametre sayısında bir sınır var mı?

Yaklaşık 8 parametreli bir göstergem var, tüm parametreleri doğru giriyorum, birkaç kez kontrol ettim, ancak derleme sırasında ')' hatası hala görünüyor - yanlış parametre sayısı D:\InstaTrader\experts\Expert_2.mq4 (11, 280 )

"80 civarı" derdim
 

Çok az kullanılan bazı parametrelerden extern'i çıkarın ve karışıklık olmayacak.

Sorularıma dikkat edin:

Mumların altında nesneler neden var, bunun nedeni nedir?

Fiyata nasıl bayrak yapılacağını , cismin özelliğinin ne olduğunu hatırlatmayın.