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

 

еще вопрос как индикаторы добавлять в МТ4 ?


спасибо

 
Garifyanov:

еще вопрос как индикаторы добавлять в МТ4 ?


спасибо

А Документация и Учебник не помогают?
 
artmedia70:
А Документация и Учебник не помогают?


спасибо,сейчас проверю
 
Здравствуйте, не могу найти индикатор рисующий горизонтальные линии длинною два дня по хай, лоу известной по времени свечи. Ткните ссылкой или может набросок индюка.
 

Подскажите, пожалуйста, почему советник не торгует. Поставил на демо (улыбается) - не работает. Вроде убрал вначале функцию, которая разрешает торговать только при тестировании.

 

 

 

extern double    Lots=1.0;

extern int       Begin=10;

extern int       Length=4;

extern int       EOD=24;

extern int       Pips=5;

extern int       StopLoss=50;

extern int       BreakEven=30;

extern int       TakeProfit=80;


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

//| expert start function                                            |

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

int start()

  {

   //---- 

   int i,Ticket,LastOrderTime,StartTime,EODTime,Bought=0,Sold=0;

   double EntryLong,EntryShort,SLLong,SLShort,TPLong,TPShort;

   

   //Settings

   

      if (Symbol()=="EURUSD"){

         Begin=10;

         Length=4;

         EOD=24;

         Pips=5;

         StopLoss=50;

         BreakEven=30;

         TakeProfit=80;

      }   

      else if (Symbol()=="GBPUSD"){

         Begin=10;

         Length=4;

         EOD=24;

         Pips=5;

         StopLoss=70;

         BreakEven=40;

         TakeProfit=120;

      }

      else {

         Begin=10;

         Length=4;

         EOD=24;

         Pips=5;

         StopLoss=50;

         BreakEven=30;

         TakeProfit=80;

      }

   

   


   //Count time

   if(Hour()>=Begin-1)

   {

      StartTime= StrToTime(Begin+":00");

      if(DayOfWeek()==5)   EODTime  = MathMin(StrToTime("22:55"),StrToTime(EOD+":00"));

      else                 EODTime  = StartTime+(EOD-Begin)*3600-60;

   }

   

   //Set orders

   if(CurTime()>= StartTime && CurTime()<StartTime+300){

      //Determine range

      EntryLong   =High[Highest(NULL,0,MODE_HIGH,Length*60/Period(),0)]+(Pips+MarketInfo(Symbol(),MODE_SPREAD))*Point;

      EntryShort  =Low [Lowest (NULL,0,MODE_LOW, Length*60/Period(),0)]-Pips*Point;

      SLLong      =MathMax(EntryLong-StopLoss*Point,EntryShort);

      SLShort     =MathMin(EntryShort+StopLoss*Point,EntryLong);

      TPLong      =EntryLong+TakeProfit*Point;

      TPShort     =EntryShort-TakeProfit*Point;

      

      //Check Orders

      for (i=0;i<OrdersTotal();i++){

         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

         if(OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_BUY)) Bought++;

         if(Bought>1){ //more than 1 buy order

            if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

            if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)      OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);

            if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP)  OrderDelete(OrderTicket());

         }


         if(OrderSymbol()==Symbol() && (OrderType()==OP_SELLSTOP || OrderType()==OP_SELL)) Sold++;

         if(Sold>1){ //more than 1 sell order

            if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

            if(OrderSymbol()==Symbol() && OrderType()==OP_SELL)     OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);

            if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());

         }

      }

      

      if(Bought==0){ //no buy order

         if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

         Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,EntryLong,3,SLLong,TPLong,NULL,0,0,Green);

         if(Ticket<0 && GetLastError()==130)

            Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SLLong,TPLong,NULL,0,0,Green);

         GlobalVariableSet("LastOrderTime",OrderOpenTime()); 

      }

      if(Sold==0){ //no sell order

         if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

         Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,EntryShort,3,SLShort,TPShort,NULL,0,0,Green);

         if(Ticket<0 && GetLastError()==130)

            Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SLShort,TPShort,NULL,0,0,Green);

         GlobalVariableSet("LastOrderTime",OrderOpenTime()); 

      }

   }

   

   //Manage opened orders

   for (i=0;i<OrdersTotal();i++){

      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

      if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

      //uzavшenн otevшenэch pozic na konci dne

      if(CurTime()>=EODTime){

         if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)      OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);

         if(OrderSymbol()==Symbol() && OrderType()==OP_SELL)     OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);

         if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP)  OrderDelete(OrderTicket());

         if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());

         GlobalVariableSet("LastOrderTime",CurTime());

      }   

      //move at BE if profit>BE

      else {

         if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){

            if(High[0]-OrderOpenPrice()>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){

               OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);

               GlobalVariableSet("LastOrderTime",CurTime());

            }   

         }   

         if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){

            if(OrderOpenPrice()-Low[0]>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){

               OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);

               GlobalVariableSet("LastOrderTime",CurTime());

            }

         }

      }

   }

   

   //Reset global variables at EOD

   if(CurTime()>=EODTime) GlobalVariablesDeleteAll();

   

   return(0);

  }

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

 
Всем доброго дня.У меня установлен МТ4-ПЯТИЗНАК.Индикатор iMA даёт 4 знака!А как получить 5 знаков?Помогите,пожалуйста,разобраться.
 
MK07:
Всем доброго дня.У меня установлен МТ4-ПЯТИЗНАК.Индикатор iMA даёт 4 знака!А как получить 5 знаков?Помогите,пожалуйста,разобраться.

Он имеет значения с пятью знаками. Для того, чтобы увидеть его значение, используйте

string DoubleToStr( double value, int digits)

Преобразование числового значения в текстовую строку, содержащую символьное представление числа в указанном формате точности.

Параметры:


value   -   Величина с плавающей точкой.

digits   -   Формат точности, число цифр после десятичной точки (0-8).


Пример:
  string value=DoubleToStr(1.28473418, 5);
  // содержимое строки value - "1.28473"
 
laveosa:

Роман ... рад видеть.  Пробывал, не работает, не понимаю в чём дело, визуально есть история за указаный выше период, а вот при тесте отсутствует???  :/

 

Жми F2 и загружай до потери сознательности! ;))
 

Как обозначить программе, что бар касался скользящей средней?  Не нужно максимального или минимального значения, нужно показать касание.

 
Forexman77:

Как обозначить программе, что бар касался скользящей средней?  Не нужно максимального или минимального значения, нужно показать касание.

Максимум (текущий) High[0] выше МА, и, соответственно минимум (текущий) Low[0] ниже МА (как я понимаю, речь идёт о 0-вом баре).
Причина обращения: