MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 569

 
YanSay :

Danışmana nasıl hariç tutulacağını/belirli bir tarihi nasıl ekleyeceğinizi söyler misiniz?

Örneğin 2 Mart 2018'de işlem yapmayın. Farklı seçenekler denedim, tarihlerle kafam karıştı.

En basit seçenek şu şekildedir:

 input datetime i_dtSkipTheDay = D'2018.03.02' ;


...
datetime dtDayStartTime = TimeCurrent () / ( 60 * 60 * 24 ); 
if (dtDayStartTime == i_dtSkipTheDay)
{
   // не торговать
}
 

İyi günler, diye yazdı danışman , her şey yolunda gidiyor. Onu tamamlamaya ve karşıt sinyallerde kapatma emirleri vermeye karar verdim ... ama nedense tepki vermiyor .... hiç açmıyor veya açılıyor ama zıt sinyallerde kapanmıyor .... sadece TP ve SL

 if (CCILong < Level0 && CountBuy() == 0 )
       {   for ( int i= OrdersTotal ()- 1 ; i >= 0 ; i--)
          {
             if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) == true )
             {
                 if ( OrderMagicNumber () == Magic && OrderType () == OP_BUY )
                   bool close1 = OrderClose ( OrderTicket (), OrderLots (), Bid , Slippage, clrNONE );
             }
          }
       }   
           if (CCILong > Level0 && CountSell() == 0 )
       {   for ( int i= OrdersTotal ()- 1 ; i >= 0 ; i--)
          {
             if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) == true )
             {
                 if ( OrderMagicNumber () == Magic && OrderType () == OP_SELL )
                   bool close1 = OrderClose ( OrderTicket (), OrderLots (), Ask , Slippage, clrNONE );
             }
          }
       }
 
baksik99 :

İyi günler, diye yazdı danışman , her şey yolunda gidiyor. Onu tamamlamaya ve karşıt sinyallerde kapatma emirleri vermeye karar verdim ... ama nedense tepki vermiyor .... hiç açmıyor veya açılıyor ama zıt sinyallerde kapanmıyor .... sadece TP ve SL

Yazdın:

 if (CCILong < Level0 && CountBuy() == 0 )

Satın Alma emri yoksa, Satın Al'ı kapatmanız gerekir. Benzer şekilde Sat.

 
Ihor Herasko :

Yazdın:

Satın Alma emri yoksa, Satın Al'ı kapatmanız gerekir. Benzer şekilde Sat.

CountSell ve CountBuy kaldırılmalı mı?

Her şey ortaya çıktı .... durum düzeltildi! teşekkür ederim!!!++++
 
Ihor Herasko :

En basit seçenek şu şekildedir:

Maalesef işe yaramadı (

Her şey senin yaptığın gibi ama aynı değil:

 input datetime i_dtSkipTheDay = D'2018.03.02' ;

datetime dtDayStartTime = TimeCurrent () / ( 60 * 60 * 24 );
if (dtDayStartTime != i_dtSkipTheDay)
{
//Открытие ордера
}

Aynı şekilde, o gün test cihazında bir işlem açar.

 
YanSay :

Maalesef işe yaramadı (

Her şey senin yaptığın gibi ama aynı değil:

Aynı şekilde, o gün test cihazında bir işlem açar.

ve bu yüzden?

 input datetime i_dtSkipTheDay = D'2018.03.02' ;

if ( TimeToStr ( TimeCurrent (), TIME_DATE ) != TimeToStr (i_dtSkipTheDay, TIME_DATE ))
{
//Открытие ордера
}
 
Taras Slobodyanik :

ve bu yüzden?

Yani işe yaradı! Çok teşekkürler!

 
YanSay :

Maalesef işe yaramadı (

Her şey senin yaptığın gibi ama aynı değil:

Aynı şekilde, o gün test cihazında bir işlem açar.

Üzgünüm, orada çarpmanız gerekiyor:

 input datetime i_dtSkipTheDay = D'2018.03.02' ;

datetime dtDayStartTime = ( TimeCurrent () / ( 60 * 60 * 24 )) * ( 60 * 60 * 24 );
if (dtDayStartTime != i_dtSkipTheDay)
{
//Открытие ордера
}

Bu nedenle, işe yaramadı.

 
Ihor Herasko :

Üzgünüm, orada çarpmanız gerekiyor:

Bu nedenle, işe yaramadı.

Teşekkür ederim!

 

Standart olana göre kendi fraktal hindimi yapmaya çalışıyorum, işe yarıyor ama nedense hala fraktalları bazen tamamen yanlış yerlere koyuyor, yardımcı olabilecek var mı?

 //+------------------------------------------------------------------+
//|                                                     Fractals.mq5 |
//|                   Copyright 2009-2017, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009-2017, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots    2
#property indicator_type1    DRAW_ARROW
#property indicator_type2    DRAW_ARROW
#property indicator_color1   Gray
#property indicator_color2   Gray
#property indicator_label1    "Fractal Up"
#property indicator_label2    "Fractal Down"
bool high_f, low_f;
//---- input data
input int period = 5 ;
int per = period;
//---- indicator buffers
double ExtUpperBuffer[];
double ExtLowerBuffer[];
//--- 10 pixels upper from high price
int     ExtArrowShift=- 10 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
   if (per % 2 == 0 ) per++;
//---- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtUpperBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,ExtLowerBuffer, INDICATOR_DATA );
   IndicatorSetInteger ( INDICATOR_DIGITS , _Digits );
//---- sets first bar from what index will be drawn
   PlotIndexSetInteger ( 0 , PLOT_ARROW , 217 );
   PlotIndexSetInteger ( 1 , PLOT_ARROW , 218 );
//---- arrow shifts when drawing
   PlotIndexSetInteger ( 0 , PLOT_ARROW_SHIFT ,ExtArrowShift);
   PlotIndexSetInteger ( 1 , PLOT_ARROW_SHIFT ,-ExtArrowShift);
//---- sets drawing line empty value--
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   PlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   int i,limit;
//---
   if (rates_total<per)
       return ( 0 );
//---
   if (prev_calculated<per+(per- 1 )/ 2 )
     {
      limit=(per- 1 )/ 2 ;
       //--- clean up arrays
       ArrayInitialize (ExtUpperBuffer, EMPTY_VALUE );
       ArrayInitialize (ExtLowerBuffer, EMPTY_VALUE );
     }
   else limit=rates_total-per;

   for (i=limit;i<rates_total-(per+ 1 )/ 2 && ! IsStopped ();i++)
     {
      
       for ( int g = 1 ; g < (per+ 1 )/ 2 ; g++){
         high_f = true ; low_f = true ;
         
         //---- Upper Fractal
         if (high[i-g] > high[i] || high[i+g] > high[i]){
            ExtUpperBuffer[i] = EMPTY_VALUE ;
            high_f = false ;  
            
         } else {            
             if (high_f) ExtUpperBuffer[i] = high[i];  
         }
         //---- Lower Fractal
         if (low[i-g] < low[i] || low[i+g] < low[i]){           
            ExtLowerBuffer[i] = EMPTY_VALUE ;
            low_f = false ;   
         } else {            
             if (low_f) ExtLowerBuffer[i] = low[i];     
         }
      
      }
     }
//--- OnCalculate done. Return new prev_calculated.
   return (rates_total);
  }

//+------------------------------------------------------------------+