新人对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(也附上),分别)是一条线--如果RSI2>RSI3 是红色,如果RSI2<RSI3蓝色

在MT5中,你可以
 
MakarFX #:
在MT5中,你可以

在mt4中也是如此 :)

 
Vitaly Muzichenko #:

在mt4中也是如此 :)

EMPTY_VALUE
 
Ivan Butko #:

给出N个蜡烛的倒数。找到大小>=X点的蜡烛,记住它们的数量和每个蜡烛的大小。
将>=X点的烛台添加到排序的数组中,然后在数组中寻找当前烛台的位置。
 
Vitaly M
MakarFX #:
EMPTY_VALUE
uzichenko #
:

在mt4中也是如此 :)

https://docs.mql4.com/ru/constants/namedconstants/otherconstants 我真的看不出EMPTY_VALUE 能帮助我。我有3个数组,每个数组都给出了rsy,如果我设置EMPTY_VALUE,它就是不给我什么 我的任务是在代码中写上红线和蓝线,而不是同一行 - 如果RSI2>RSI3, 它将是红色,如果RSI2<RSI3,它将蓝色
Прочие константы - Именованные константы - Константы, перечисления и структуры - Справочник MQL4
Прочие константы - Именованные константы - Константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Прочие константы - Именованные константы - Константы, перечисления и структуры - Справочник MQL4
 
Andrey Kipyatkov #:
https://docs.mql4.com/ru/constants/namedconstants/otherconstants 我不太明白EMPTY_VALUE 如何帮助我。我有3个数组,每个数组都给出了rsi,如果我放上EMPTY_VALUE,它就是不给我任何 信息。 我的任务是在代码中写上红线和蓝线,而不是同一行 - 如果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个数组,每个数组都给出了Rsai,如果我设置EMPTY_VALUE,它就是不给我任何东西 我的任务是在代码中写上红线和蓝线,而不是同一行 - 如果RSI2>RSI3, 它将是红色,如果RSI2<RSI3 ,它将 蓝色

根据需要改变颜色以适应你的需要

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

根据需要改变颜色以适应你的需要

真的吗?)

你试过吗?