Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 198

 
-Aleks-:

 

Вы точно посмотрели, последний код, что опубликовали? Если да, то мне нужен отдых... спасибо.
Переменную "с" отследите.
 
Artyom Trishkin:
Переменную "с" отследите.

 

Да, спасибо! Я вижу - но пока не могу этот код осмыслить до конца - буду эксперементировать!

Victor Nikolaev - спасибо за помощь!

 

Всем доброго времени суток!

Подскажите пожалуйста можно ли изменить значение МАДЖИК НОМЕР у ордера , который уже закрылся и появился в списке закрытых ордеров.

То есть изменить значение МАДЖИК НОМЕР после закрытия ордера.

Если можно - то при помощи какой функции. У Кима я такой функции не нашел.

Спасибо.
 
ANDREY:

Всем доброго времени суток!

Подскажите пожалуйста можно ли изменить значение МАДЖИК НОМЕР у ордера , который уже закрылся и появился в списке закрытых ордеров.

То есть изменить значение МАДЖИК НОМЕР после закрытия ордера.

Если можно - то при помощи какой функции. У Кима я такой функции не нашел.

Спасибо.

Нельзя. А зачем Вам вообще это надо - может есть иное решение задачи?
 
-Aleks-:

Нельзя. А зачем Вам вообще это надо - может есть иное решение задачи?

Спасибо за подсказку.

Пока ждал ответа кое что пришло в голову. Если не получится - напишу что мне нужно.

Подскажите пожалуйста

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()==OP_SELL)                                                // СЕЛ

X = OrderProfit( );                                                               // запомнить величину тейкпрофита

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()==OP_SELL)                                                 // СЕЛ

if(X < 0)                                                                                // и если этот сел закрылся по стопу 

ОТКРЫТЬ ЕЩЕ ОДИН ОРДЕР

ВОПРОС

Как закодировать дополнение к этим условиям.

Нужно что бы не только последний но и  предпоследний и предпредпоследний ордера были закрыты по стопу

и только тогда

ОТКРЫТЬ ЕЩЕ ОДИН ОРДЕР

Спасибо.


                                               

 
geratdc:  Я  внёс рекомендованные изменения в код пока в Блокноте. Посмотрите пожалуйста,  правильно я скорректировал код?

Посмотрел. Поправил. В тестере за 3 месяца такой результат

     Просадка большая

 
Подскажите пожалуйста как найти номера баров пересечения Машек в количестве допустим 5 последних пересечений за текущий день
 
missha32:   найти номера баров пересечения Машек в количестве допустим 5 последних пересечений за текущий день

Если в 4 часа утра - еще мало баров за сегодняшний день. На H4 за сутки всего 6 баров. надо задать количество баров для поиска или количество пересечений.

//+-------------------------------------------------------+
//| Подсчет пересечений MA                    PROBA_MA.mq4|
//+-------------------------------------------------------+
#property strict

extern int Баров = 500;  // Баров для подсчета пересечений МА
extern int MA_1  =10;
extern int MA_2  =100;

void OnStart()
{
  int Бар, Счетчик;
  double MA_1_Предыдущая, MA_2_Предыдущая,
         MA_1_Следующая,  MA_2_Следующая;

  ObjectsDeleteAll(); // Удалить вертикальные линии

  for(Счетчик=0, Бар=0; Бар<Баров; Бар++) // Начинаем с послнего бара
  {
    MA_1_Предыдущая = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар+1);
    MA_1_Следующая  = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар);
    MA_2_Предыдущая = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар+1);
    MA_2_Следующая  = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар);

    if((MA_1_Предыдущая>=MA_2_Предыдущая && MA_1_Следующая<=MA_2_Следующая) ||
       (MA_1_Предыдущая<=MA_2_Предыдущая && MA_1_Следующая>=MA_2_Следующая))
    {
      Счетчик++;
      Alert(Счетчик, "  Бар = ", Бар, "  T = ",Time[Бар]);

      // Создать вертикальную линию
      ObjectCreate( (string)Счетчик+"_"+(string)Бар,OBJ_VLINE,0,Time[Бар],0);

      if(Счетчик == 5) break;  // 5 линий есть - выход
    }
  }
}

 

Расстояния большие = тренд

 

Подскажите пожалуйста

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()==OP_SELL)                                                // СЕЛ

X = OrderProfit( );                                                               // запомнить величину тейкпрофита

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()==OP_SELL)                                                 // СЕЛ

if(X < 0)                                                                                // и если этот сел закрылся по стопу 

ОТКРЫТЬ ЕЩЕ ОДИН ОРДЕР

ВОПРОС

Как закодировать дополнение к этим условиям.

Нужно что бы не только последний но и  предпоследний и предпредпоследний ордера были закрыты по стопу

и только тогда

ОТКРЫТЬ ЕЩЕ ОДИН ОРДЕР

Спасибо.
 

Посоветуйте пожалуйста какой нибудь индикатор может на переделку,интересует на часовом графике каждые сутки отрисовывалась линия от хая до лоу, и возможность получить данные о длинне линии и уголу наклона и можно было поработать с этими данными в коде, я не большой знаток mql4 если самому писать c нуля,большая проблема? помогите пожалуйста  

вот индюк ,линия натянута по двум координатам,как не крутил бред получается,прошу помогите,может зря я с этим индюком связался

#property indicator_chart_window
//---- input parameters
extern int   CountDays     =22;
extern int   GMT           =0;
extern color pivot         =Gold;
extern color day           =Yellow;
extern color metka         =MidnightBlue;

//---- indicator buffers
double range[];
double ny_close[];
double low[];
double high[];
datetime time1;
datetime time2;
datetime ny_time[];

int shift, num;
int ny_shift[];
datetime prevDay=0;
bool fTime;
// ----
void ObjDel()
{
   if (ObjectsTotal() > 0)
   for (num=0;num<=CountDays;num++)
   {
   ObjectDelete("PPw["+num+"]");   
          
   }
   ObjectDelete("mPw");           
}
// ----
void PlotLine(string name,double value,double value1,double line_color,double style)
{
   double valueN=NormalizeDouble(value,Digits);
   double valueN1=NormalizeDouble(value1,Digits);
   bool res = ObjectCreate(name,OBJ_TREND,0,time1,valueN,time2,valueN1);
   ObjectSet(name, OBJPROP_WIDTH, 1);
   ObjectSet(name, OBJPROP_STYLE, style);
   ObjectSet(name, OBJPROP_RAY, false);
   ObjectSet(name, OBJPROP_BACK, true);
   ObjectSet(name, OBJPROP_COLOR, line_color);
} 
//***********
void PlotVLine(string name,double tm,double line_color)
{
   bool res = ObjectCreate(name,OBJ_VLINE,0,tm,0);
   ObjectSet(name, OBJPROP_WIDTH, 0);
   ObjectSet(name, OBJPROP_STYLE, 2);
   ObjectSet(name, OBJPROP_COLOR, line_color);
} 
//***********
void PlotPrice(string name, double value, double line_color)
{
    double valueN=NormalizeDouble(value,Digits);
    bool res = ObjectCreate(name, OBJ_ARROW, 0, time2,valueN);
    ObjectSet(name, OBJPROP_COLOR, line_color);
    ObjectSet(name, OBJPROP_WIDTH, 1);
    ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
}       
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   fTime = true;
   IndicatorBuffers(2);
   SetIndexBuffer(0,range);
   SetIndexBuffer(1,ny_close);
   return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+   
int deinit()
{
   ObjDel();
   Comment("");
   return(0);
}
//+------------------------------------------------------------------+
//| LNX_Pivots_v3.1                                                    |
//+------------------------------------------------------------------+
int start()
{
   int i;
   double P;
  
   datetime cDay = iTime(NULL,PERIOD_D1,0) + (GMT-Period()/60.0)*3600;
   if (cDay != prevDay || fTime)  
   {
   ObjDel();
   ArrayResize(ny_time,CountDays+1);
   ArrayResize(ny_shift,CountDays+1);
   ArrayResize(high,CountDays+1);
   ArrayResize(low,CountDays+1); 
   ArrayResize(range,CountDays+1);    
      for (shift=0;shift<=CountDays;shift++)
      {
      ny_time[shift]  = iTime(NULL,PERIOD_D1,shift) + (GMT-Period()/60.0)*3600;
      ny_shift[shift] = iBarShift(NULL,0,ny_time[shift]);
      ny_close[shift] = iClose(NULL,0,ny_shift[shift]);        
      }
     
 for (shift=0;shift<=CountDays-1;shift++)
      {
      int length = ny_shift[shift+1]-ny_shift[shift];
   
      high[shift] = High[iHighest(NULL,0,MODE_HIGH,length,ny_shift[shift])];
      low[shift]  = Low[iLowest(NULL,0,MODE_LOW,length,ny_shift[shift])];
      range[shift] = high[shift] - low[shift]; 
      }
  
  for (shift=0;shift<=CountDays-1;shift++)
      {
  
           
      P  = (ny_close[shift]+high[shift]+low[shift])/3;
      

      time1 = ny_time[shift]+Period()*60;    
         
         if (shift==0) 
         {
         time2 = ny_time[shift] + 24*3600+Period()*60 ;
         PlotVLine("pV0",time2,day);
         PlotPrice("mPw",P,metka);
                 
         }
         else
         time2 = ny_time[shift-1]+Period()*60;
         PlotVLine("pV["+shift+"]",time1,day);
            
      int pstyle=0;
   PlotLine("PPw["+shift+"]",P,P,pivot,pstyle); // *********две координаты*******

}
   fTime = false;
   prevDay = cDay;
   }           
   return(0);
}
//+------------------------------------------------------------------+
Причина обращения: