[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 500

 

Ну подскажите дубовому в программировании человеку

этот зверь смотрит в историю при открытии ордера или нет ?

extern int dDay;
//extern bool fl;

int init()
  {
      return(0);
  }

int deinit()
  {
      return(0);
  }

int start()
  {
      double MA2,MA3;
      double Fr,Fr1;
      double SAR;
      double prof;
      int total,cnt;
      
      MA2 = iMA(NULL,0,2,0,MODE_SMA,PRICE_CLOSE,0);
      MA3 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,0);
      Fr = iForce(NULL,0,2,MODE_SMA,PRICE_CLOSE,0);
      Fr1 = iForce(NULL,0,2,MODE_SMA,PRICE_CLOSE,1);
      
      //SAR = iSAR(NULL,0,0.2,2,0);
      
      if((Hour() == 22) && (OrdersTotal() == 0) && (dDay != Day()))
      {
         //if(Open[0] > MA) // BUY
         if(MA3 < MA2)
         //if(SAR < Open[0])
         {
            OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+0.0010,"",2,0,Blue);
            //fl = true;
         }
         //if(Open[0] < MA) // SELL
         if(MA3 > MA2)
         //if(SAR > Open[0])
         {
            OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",1,0,Red);
            //fl = true;
         }
      
         dDay = Day();
      }
      
      /*if((Hour() == 8) && (OrdersTotal() == 1) && fl)
      {
         fl = false;
         if(OrdersTotal() != 0)
         {
            total = OrdersTotal();
            for(cnt=0;cnt<total;cnt++)
            {  
               OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);         
               prof = OrderProfit() / 10;
               if(prof <= -10)
               {
                  if(OrderType()==OP_BUY)
                  {
                     OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);   
                     OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",1,0,Red);
                  }
                  if(OrderType()==OP_SELL)
                  {
                     OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
                     OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+0.0010,"",2,0,Blue);
                  }
               }
            }
         }
      }*/
  
      
      if(OrdersTotal() != 0)
      {
         total = OrdersTotal();
         for(cnt=0;cnt<total;cnt++)
         {  
            OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);                     
            prof = OrderProfit() / 10;
            if(prof >= 4)
            {
               if(OrderType()==OP_BUY)
               {
                  OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);   
               }
               if(OrderType()==OP_SELL)
               {
                  OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
               }
            }
         }
      }

      return(0);
  }
 
baykanur:

Ну подскажите дубовому в программировании человеку

этот зверь смотрит в историю при открытии ордера или нет ?



1) используйте тег SRC при вставке кода

2) удалите то, что закомментировано

3) расскажите что вы хотите видеть и в чем несоответствие

 
ilunga:

1) используйте тег SRC при вставке кода

2) удалите то, что закомментировано

3) расскажите что вы хотите видеть и в чем несоответствие

src вставил

что закоментировано не знаю

несоответствие в количестве прибыльных сделок на тестере по этому и вопрос

 

Хочу научиться рисовать уровни на графике в зависимости от значений индикатора в отдельном окне. Например, если MACD пересекает уровень 0 снизу вверх, то на графике рисуется линия по Low бара, на котором происходит пересечение. При пересечении сверху вниз, соответственно рисуется линия по High. Вот чего-то написал, компилируется без ошибок, но ничего не происходит. Помогите, пожалуйста.

#property  indicator_chart_window
#property  indicator_buffers 1
#property  indicator_color1  Blue

double    Buffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Buffer);

   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double level;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++)
      
      double    macd = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
      double    macd1 = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1);
      
      if (macd > 0 && macd1 < 0)
      {
      level = iLow("EURUSD",PERIOD_M1,i); //Почему выскакивает ощибка если написать просто iLow[i]?
      Buffer[i]=level;
      }
      else if (macd < 0 && macd1 > 0)
      {
      level = iHigh("EURUSD",PERIOD_M1,i); //Почему выскакивает ощибка если написать просто iHigh[i]?
      Buffer[i]=level;
      }
   return(0);
  }
 
baykanur:

src вставил

что закоментировано не знаю

несоответствие в количестве прибыльных сделок на тестере по этому и вопрос

в соответствии всегда 2 объекта, которые сравниваются.

тестер не совпадает с демо на том же периоде? Например потому, что в тестере другой спред

 
Ichimo:

Хочу научиться рисовать уровни на графике в зависимости от значений индикатора в отдельном окне. Например, если MACD пересекает уровень 0 снизу вверх, то на графике рисуется линия по Low бара, на котором происходит пересечение. При пересечении сверху вниз, соответственно рисуется линия по High. Вот чего-то написал, компилируется без ошибок, но ничего не происходит. Помогите, пожалуйста.

линия - это как минимум 2 точки ;)

Buffer[i]=level;

это одна точка, соседние скорее всего равны нулю. потому линию некуда рисовать

 //Почему выскакивает ощибка если написать просто iLow[i]?
потому что Low[i] без "i" в начале
 
Vinin:

Где та корзина?
Могу в твою корзину сразу перенаправлять... :)
 
А можно ли как нибудь имея две цены, разделить расстояние между ними на 3-4 части, не просто разделить, а еще и узнать цену каждой из получившихся частей.?
 
sss2019:
А можно ли как нибудь имея две цены, разделить расстояние между ними на 3-4 части, не просто разделить, а еще и узнать цену каждой из получившихся частей.?
double price1;

double price2;

...

if (price1 > price2)
{
   double delta = price1 - price2;
   double level1 = price2 + delta*0.25;
   double level2 = price2 + delta*0.5;
   double level3 = price2 + delta*0.75;
}
=)
 
ilunga:

линия - это как минимум 2 точки ;)

это одна точка, соседние скорее всего равны нулю. потому линию некуда рисовать

потому что Low[i] без "i" в начале



Выходит, мне нужно либо создать предыдущую точку либо рисовать не линию, а Arrow. Спасибо, буду скрипеть мозгами дальше.
Причина обращения: