MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1681

 
void OpenOrder(int db = -1){

  if(db == -1){
    Print("'db' должен иметь корректное значение");
    return;
  }

  Order order;

  //Если бид в границах ДБ (его хай/лоу) то инициализируем ордер для селстопа или байстопа
  if(Bid > db_last.low && Bid < db_last.hight){
    if(db == BEAR) order.InitForSell(SELLSTOP);
    if(db == BULL) order.InitForBuy(BUYSTOP);
  }

 ...

  if(order.is_init == true)
  {
    int order_send = OrderSend(Symbol(), order.cmd, 0.01, order.open_price, 10, 
    order.sl_price, order.tp_price, "", GetMagic(order), 0, order.arrow_color);

    if(order_send == -1){
      Print(order.error_text," | ",GetLastError()," db_last.third ",db_last.third,
        " | db_last.size_open_to_low ",db_last.size_open_to_low," | order.sl_price: ",
        order.sl_price," | order.cmd ",order.cmd);
      ResetLastError();
      return;
    }
  }
}

...

int GetMagic(Order &order)
{
  int magic = 0;
  //Если должен быть открыт стопордер и если есть уже открытые или отложенные 
  //ордера, то возможно некоторые с маджиком, это надо проверить и сгенерировать 
  //для нашего ордера уникальный маджик
  if(order.cmd == OP_SELLSTOP || order.cmd == OP_BUYSTOP)
    if(OrdersTotal() >= 1)
      for(;;){
        magic++;
        for(int i = OrdersTotal(); i > 0 ; i --)
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) != false) //<------------ СЮДА НЕТ ВХОЖДЕНИЯ
            if(magic != OrderMagicNumber())
              return magic;
            
      }
    //Если нет открытых или отложенных ордеров то увеличиваем значение 
    //маджика, чтобы он равнялся единице
    else if (OrdersTotal() == 0)
      return (magic + 1);
  return magic;
}
 
안녕하세요, 저는 무릎에 아주 간단한 표시기를 썼습니다(파일을 첨부하고 있습니다). 빨간색과 파란색 선(그림의 RSI2 및 RSI3 대신)을 코드로 어떻게든 작성할 수 있는지 명확히 하고 싶었습니다. 동일) 각각) 하나의 라인이 있었고 RSI2> RSI3이면 빨간색이고 RSI2< RSI3 이면 파란색입니다.

 #property indicator_color2 Red
#property indicator_color3 Blue 
                                                              
extern int RSIPERIOD= 3 ;
extern double KOEFF1= 2.5 ;
extern double KOEFF2= 1.86 ; 
                                                                                                                                                                  
double Buf0[],Buf1[],Buf2[];
double D10,D11,D12;
                                                                                                                                                                                                                                                                                                                                             
int init()
  {
   IndicatorDigits( 0 );
   string short_name= "RSITEST" ;           
   IndicatorShortName( "RSITEST" );
   
   D10=RSIPERIOD;D11=D10*KOEFF1;D12=D11*KOEFF2;;
 
   SetIndexBuffer ( 0 ,Buf0);
   SetIndexLabel ( 0 , "Stoch " +Ds_0(D10)+ ")\n" );
   SetIndexBuffer ( 1 ,Buf1);
   SetIndexLabel ( 1 , "Stoch (" +Ds_0(D11)+ ")\n" );
   SetIndexBuffer ( 2 ,Buf2);
   SetIndexLabel ( 2 , "Stoch (" +Ds_0(D12)+ ")\n" );
   return ( 0 );
  }
                                                                                                               
int start()
  {
   if ( Bars <=RSIPERIOD) return ( 0 );
   int ExtCountedBars=IndicatorCounted();
   if (ExtCountedBars< 0 ) return (- 1 );
   if (ExtCountedBars> 0 ) ExtCountedBars--;
   for ( int i= 0 ;i< Bars -RSIPERIOD;i++)
      {
       Buf0[i] = iRSI ( NULL , 0 ,D10, 0 ,i);
       Buf1[i] = iRSI ( NULL , 0 ,D11, 0 ,i);
       Buf2[i] = iRSI ( NULL , 0 ,D12, 0 ,i); 
      }
   return ( 0 );
  }
string Ds_0( double DOUBLE) { return (DoubleToStr(DOUBLE, 0 ));}
파일:
RSITEST.mq4  4 kb
 
Andrey Kipyatkov # :
안녕하세요, 저는 무릎에 아주 간단한 표시기를 썼습니다(파일을 첨부하고 있습니다). 빨간색과 파란색 선(그림의 RSI2와 RSI3 대신)을 코드로 어떻게든 쓸 수 있는지 명확히 하고 싶었습니다(I 동일) 각각) 하나의 라인이 있었고 RSI2> RSI3이면 빨간색이고 RSI2< RSI3 이면 파란색입니다.

MT5에서 당신은 할 수 있습니다
 
MakarFX # :
MT5에서 당신은 할 수 있습니다

MT4에서도요 :)

 
Vitaly Muzichenko # :

MT4에서도요 :)

EMPTY_VALUE
 
Ivan Butko # :

N개의 양초를 돌려받았습니다. 양초 >= X 포인트 크기를 찾고, 그 수와 각각의 크기를 기억하십시오.
촛불 >=X 포인트를 정렬된 배열에 추가한 다음 이 배열에서 현재 촛불의 위치를 찾습니다.
 
Vitaly M
MakarFX # :
EMPTY_VALUE
우지첸코 # :

MT4에서도요 :)

https://docs.mql4.com/ru/constants/namedconstants/otherconstants EMPTY_VALUE이(가) 어떻게 도움이 되는지 잘 모르겠습니다. 나는 3 개의 배열을 가지고 있으며 EMPTY_VALUE를 설정하면 하단의 각각이 rsai 를 제공합니다. 아무 것도 제공하지 않습니다. 그리고 내 임무는 빨간색과 파란색 선 대신에 한 줄이 있다는 코드를 작성하는 것입니다.   RSI2 > RSI3 및 파란색인 경우   RSI2<   RSI3
Прочие константы - Именованные константы - Константы, перечисления и структуры - Справочник MQL4
Прочие константы - Именованные константы - Константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Прочие константы - Именованные константы - Константы, перечисления и структуры - Справочник MQL4
 
Andrey Kipyatkov # :
https://docs.mql4.com/ru/constants/namedconstants/otherconstants EMPTY_VALUE이(가) 어떻게 도움이 되는지 잘 모르겠습니다. 나는 3 개의 배열을 가지고 있으며 EMPTY_VALUE를 설정하면 하단의 각각이 rsai 를 제공합니다. 아무 것도 제공하지 않습니다. 그리고 내 임무는 빨간색과 파란색 선 대신에 한 줄이 있다는 코드를 작성하는 것입니다.   RSI2 > RSI3 및 파란색인 경우   RSI2<   RSI3
       Buf0[i] = iRSI ( NULL , 0 ,D10, 0 ,i);
       if ( iRSI ( NULL , 0 ,D11, 0 ,i)> iRSI ( NULL , 0 ,D12, 0 ,i))
       Buf1[i] = Buf0[i];
       else
       Buf1[i] = EMPTY_VALUE ;
파일:
RSITEST-1.mq4  4 kb
 
Andrey Kipyatkov # :
https://docs.mql4.com/ru/constants/namedconstants/otherconstants EMPTY_VALUE이(가) 어떻게 도움이 되는지 잘 모르겠습니다. 나는 3 개의 배열을 가지고 있으며 EMPTY_VALUE를 설정하면 하단의 각각이 rsai 를 제공합니다. 아무 것도 제공하지 않습니다. 그리고 내 임무는 빨간색과 파란색 선 대신에 한 줄이 있다는 코드를 작성하는 것입니다.   RSI2 > RSI3 및 파란색인 경우   RSI2<   RSI3

필요에 따라 색상 변경

 if (Open < Close) {
  SetIndexStyle( 0 , DRAW_LINE , STYLE_SOLID , 1 , clrRed );
  ...
 
Vitaly Muzichenko # :

필요에 따라 색상 변경

너 뭐야?!)))

시험을 마친?