FXOpen Broker

10+ years’
experience in FX

VISIT WEBSITE

Trading Accounts

ECN, STP,
Micro, Crypto

START TRADING

Free Demo

Practice Forex trading
risk free

OPEN DEMO ACCOUNT

PAMM Technology

Become a Master
or a Follower

JOIN PAMM SERVICE
Page 6 of 6 FirstFirst ... 23456
Results 76 to 89 of 89

Thread: MQL4 заметки от eevviill

  1. #76
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 75 - значение объявленых не инициализированных переменных

    Нужно учитывать момент что при объявлении глобальных перменных без указания их значения они имеют 0 значение или пустое если это string.
    Но если объявлять локальные переменные и не инициализировать их, то они могут иметь любое значение.
    Last edited by eevviill; 04-15-2020 at 07:50 PM.
    MQL4 programmer

  2. The Following User Says Thank You to eevviill For This Useful Post:

    kukul3 (06-08-2020)

  3. #77
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 76 - размер части свечи в %

    Размер тела свечи в % это 100%. (High-Low)
    А как проверить условие например Если Close свечи выше 40%?


    Сначало узнаём в пунктах сколько весит 1%
    PHP Code:
    double perc1=(High[1]-Low[1])/100.0
    Потом проверяем выше ли Close за Low+величина одного процента*40
    PHP Code:
    if(Close[1]>Low[1]+perc1*40Alert("ok"); 
    Last edited by eevviill; 04-17-2020 at 06:34 PM.
    MQL4 programmer

  4. #78
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 77 - старт советника после достижения цены(линии)

    Код, после прописания которого советник будет рисовать линию и только после достижения ценой этой линии советник стрёт её и начнёт торговать.

    PHP Code:
    extern bool start_H_line false;
    extern double start_H_line_price 1.0000;
    string identif "Khas H line";
    int way=Bid>start_H_line_price?-1:1;

     
    /////////////////////////
     
    int OnInit()
     {  
     if(
    start_H_linedrawHline();
     ...
     return(
    INIT_SUCCEEDED);
     }
     
     
    //////////////////////////
     
    void OnDeinit(const int reason)
     {
     if(
    start_H_lineObjectDelete(0,identif);
     ...
     }

     
    /////////////////////////
     
    void OnTick()
     {
     if(
    start_H_line)
     {
     if((
    way==&& Bid>=start_H_line_price) || (way==-&& Bid<=start_H_line_price)) {way=0;ObjectDelete(0,identif);}
     if(
    way!=0) return;
     }
     ...
     } 
    Last edited by eevviill; 04-17-2020 at 06:47 PM.
    MQL4 programmer

  5. #79
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 78 - перебор ордеров в MQL5

    PHP Code:
    input int Magic 334;
    ...
      
    //hist
      
    int ticke;
      
    HistorySelect(0,TimeCurrent());
      
    for(
    int i=HistoryDealsTotal()-1;i>=0;i--)

    ticke=int(HistoryDealGetTicket(i));
    if(!
    ticke) continue;
    if(
    HistoryDealGetInteger(ticke,DEAL_MAGIC)!=Magic) continue; 
    if(
    HistoryDealGetString(ticke,DEAL_SYMBOL)!=_Symbol) continue;
    if(
    HistoryDealGetInteger(ticke,DEAL_ENTRY)==DEAL_ENTRY_IN) continue; //opos closed order data

    Alert(HistoryDealGetInteger(ticke,DEAL_TIME));
    }
    ...   
       
    //mark
       
    string symb;
         
    for(
    int i=PositionsTotal()-1;i>=0;i--)

    symb=PositionGetSymbol(i);
    if(
    symb=="" || symb!=_Symbol) continue;
    if(
    PositionGetInteger(POSITION_MAGIC)!=Magic) continue; 

    Alert(PositionGetInteger(POSITION_TIME));

    MQL4 programmer

  6. #80
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 79 - нажатие кнопки и графика-открытие ордера

    PHP Code:
    string buyP_ButName="buyP button_";
    string sparam_prev;


    //////////////////////////////////////////////////////////////
     
    int OnInit()
     {  

    string Name=buyP_ButName;
    if(
    ObjectFind(0,Name)==-1)
    {
       
    ObjectCreate(Name,OBJ_BUTTON,0,0,0);
       
    ObjectSetString(0,Name,OBJPROP_TEXT,"press"); 
       
    ObjectSetInteger(0,Name,OBJPROP_BACK,false);
       
    ObjectSetInteger(0,Name,OBJPROP_ZORDER,false);
       
    ObjectSetInteger(0,Name,OBJPROP_SELECTABLE,false);
       
    ObjectSetInteger(0,Name,OBJPROP_SELECTED,false);
       
    ObjectSetInteger(0,Name,OBJPROP_HIDDEN,true);
       
    ObjectSetInteger(0,Name,OBJPROP_XSIZE,100);
       
    ObjectSetInteger(0,Name,OBJPROP_YSIZE,30);
       
    ObjectSetInteger(0,Name,OBJPROP_FONTSIZE,14);
       
    ObjectSetInteger(0,Name,OBJPROP_CORNER,CORNER_RIGHT_UPPER);
       
    ObjectSetInteger(0,Name,OBJPROP_ANCHOR,ANCHOR_RIGHT);
       
    ObjectSetInteger(0,NameOBJPROP_XDISTANCE,120);
       
    ObjectSetInteger(0,NameOBJPROP_YDISTANCE20);
       
    ObjectSetInteger(0,Name,OBJPROP_COLOR,clrBlue);
       
    ObjectSetInteger(0,Name,OBJPROP_BGCOLOR,clrYellow);


     return(
    INIT_SUCCEEDED);
    }


    ///////////////////////////////////////////////////////////////
    void OnChartEvent(const int id,         // Event ID 
                      
    const longlparam,   // Parameter of type long event 
                      
    const doubledparam// Parameter of type double event 
                      
    const stringsparam  // Parameter of type string events 
      
    )
      {  
      
    double price=0;
      
    datetime time=0;
      
    int wind=0;
      
    ChartXYToTimePrice(0,int(lparam),int(dparam),wind,time,price);
      
       
    /////////////////////BUYSTOP 
    if(ObjectGetInteger(0,buyP_ButName,OBJPROP_STATE) && id==CHARTEVENT_CLICK && sparam_prev!=buyP_ButName)
    {
    ObjectSetInteger(0,buyP_ButName,OBJPROP_STATE,false);
    OrderSend(_Symbol,OP_BUYSTOP,0.1,NormalizeDouble(price,_Digits),0,0,0,"prob",123,0,clrNONE);
     }

    sparam_prev=sparam;

    Last edited by eevviill; 05-27-2020 at 10:21 AM.
    MQL4 programmer

  7. #81
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 80 - iMAOnArray (MA на MA)

    В коде накладывается одна МА на другую. Это равноценно если в настройках МА на графике выбрать пункт PreviousIndicatorData в выборе к какой цене применять. Можно в буфер где МА1 расчитать данные скажем RSI. Тогда выйдет расчёт МА2 по RSI.

    PHP Code:
    input string ind1_name "MA1";
    input int ma_period 5;
    input int ma_shift 0;
    input ENUM_MA_METHOD ma_method MODE_EMA;
    input ENUM_APPLIED_PRICE applied_price PRICE_CLOSE;
    input string ind2_name "MA2";
    input int ma_period2 5;
    input int ma_shift2 0;
    input ENUM_MA_METHOD ma_method2 MODE_EMA;
    ...
    //ma1
    double ma_buf[]; ArrayResize(ma_buf,MathMax(ma_period,ma_period2)+1); ArraySetAsSeries(ma_buf,true); 

    for(
    int i=1;i<1+MathMax(ma_period,ma_period2);i++)

    ma_buf[i]=iMA(_Symbol,PERIOD_CURRENT,ma_period,ma_shift,ma_method,applied_price,i); 
    }
    //ma2
    double ma2=iMAOnArray(ma_buf,0,ma_period2,ma_shift2,ma_method2,1);

    Alert(ma2
    Last edited by eevviill; 09-15-2020 at 10:21 AM.
    MQL4 programmer

  8. #82
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 81 - Вилы Эндрюса,цена линий+стрелки

    Код для того чтобы узнать цену линий если известны цены и время 3 точек по которым фигура построена.
    Здесь цены записаны в буфера swingprice[] swingdate[]
    swingprice[i+2] swingdate[i+2] = координаты левой точки
    swingprice[i+1] swingdate[i+1] = координаты стредней точки
    swingprice[i+0] swingdate[i+0] = координаты правой точки


    PHP Code:
    //main arrows
     //swingprice+swingdate +0=right +1middle +2left
     
    int cc=Pitchfork_number;
     
    double prC=(swingprice[cc]+swingprice[cc+1])/2;
     
    datetime tiC=(swingdate[cc]+swingdate[cc+1])/2;
     
    int barC=iBarShift(_Symbol,PERIOD_CURRENT,tiC,true); if(barC==-1barC=iBarShift(_Symbol,PERIOD_CURRENT,tiC,false)-1;
     
    double prL=swingprice[cc+2];
     
    int bar1=iBarShift(_Symbol,PERIOD_CURRENT,swingdate[cc+2]);
     
    int way=prC>prL?1:-1;
     
    double pr1b=way==1?(prC-prL)/(bar1-barC):(prL-prC)/(bar1-barC);
     
    int bar2=iBarShift(_Symbol,PERIOD_CURRENT,swingdate[cc+1]);
     
    int bar3=iBarShift(_Symbol,PERIOD_CURRENT,swingdate[cc]);
     
    double plus2=pr1b;
     
    double plus3=pr1b;
     
    double price2=0;
     
    double price3=0;
     for(
    int x=bar2-1;x>0;x--)
     {
     if(
    way==1)
     {
     if(
    swingprice[cc+1]>=swingprice[cc])
     {
     
    price2=swingprice[cc+1]+plus2;  if(Close[x+1]<=price2-pr1b && Close[x]>price2down_arr[x]=High[x]+arrow_indent*Pointplus2+=pr1b;
     if(
    x<bar3) {price3=swingprice[cc]+plus3; if(Close[x+1]>=price3-pr1b && Close[x]<price3up_arr[x]=Low[x]-arrow_indent*Pointplus3+=pr1b;}
     }
     else
     {
     
    price2=swingprice[cc+1]+plus2;  if(Close[x+1]>=price2-pr1b && Close[x]<price2up_arr[x]=Low[x]-arrow_indent*Pointplus2+=pr1b;
     if(
    x<bar3) {price3=swingprice[cc]+plus3; if(Close[x+1]<=price3-pr1b && Close[x]>price3down_arr[x]=High[x]+arrow_indent*Pointplus3+=pr1b;}
     }
     }

      if(
    way==-1)
     {
     if(
    swingprice[cc+1]<=swingprice[cc])
     {
     
    price2=swingprice[cc+1]-plus2;  if(Close[x+1]>=price2+pr1b && Close[x]<price2up_arr[x]=Low[x]-arrow_indent*Pointplus2+=pr1b;
     if(
    x<bar3) {price3=swingprice[cc]-plus3; if(Close[x+1]<=price3+pr1b && Close[x]>price3down_arr[x]=High[x]+arrow_indent*Pointplus3+=pr1b;}
     }
     else
     {
     
    price2=swingprice[cc+1]-plus2;  if(Close[x+1]<=price2+pr1b && Close[x]>price2down_arr[x]=High[x]+arrow_indent*Pointplus2+=pr1b;
     if(
    x<bar3) {price3=swingprice[cc]-plus3; if(Close[x+1]>=price3+pr1b && Close[x]<price3up_arr[x]=Low[x]-arrow_indent*Pointplus3+=pr1b;}
     }
     }
     } 
    MQL4 programmer

  9. #83
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 82 - МТФ индикатора в подокне одновременно несколькихТФ с разделением подокна

    В данном примере используются дополнительно 3 буфера.
    TFs[] в нём хранятся ТаймФреймы
    none[] в него записываются расчёты на расчтываемом ТаймФрейме
    rsi[] в него записывается то что будет выводится на график

    Click image for larger version. 

Name:	Без імені.png 
Views:	27 
Size:	35.2 KB 
ID:	65480



    PHP Code:
    input int bars_in_window 25;
    ...


    int tf=TFs[0];
    int period_cou=0;
    int BAR=bars_in_window;
     
    int CC=0;
    CalculateRSI_none(tf);

       for(
    0limiti++)
         { 
         if(
    i>Bars-20) break;
         
    if(
    i>BAR
    {
    period_cou++;
    if(
    period_cou>=ArraySize(TFs)) break;
    tf=TFs[period_cou];
    CalculateRSI_none(tf);
    BAR+=bars_in_window;
    CC=bars_in_window*period_cou+2;
    continue;
    }
      
        
    rsi[i]=none[i-CC];
            
         }
          
            
    ...
    //////////////////////////////////////////////////////////////////////
      
    void CalculateRSI_none(int tf)
    {
       for(
    int i 0<=bars_in_windowi++)
         { 
        
    none[i] = iRSI(_Symbol,tf,period,RSI_applied_price,i);   
        }
              

    Last edited by eevviill; 01-07-2021 at 03:34 PM.
    MQL4 programmer

  10. The Following User Says Thank You to eevviill For This Useful Post:

    Prezident (11-03-2020)

  11. #84
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 83 - вертикальная линия при пересечении линий индикатора

    PHP Code:
    input string emp0 "///////////Vlines settings/////////////";
    input bool draw_V_line false;
    input bool v_line_only2 true;
    input color v_line_up_color clrBlue;
    input color v_line_down_color clrRed;
    input ENUM_LINE_STYLE v_line_style STYLE_DOT;
    string identif="zam83";
    ...

       if(
    draw_V_line
       {
       
    ObjectsDeleteAll(0,identif);
       
    bool up=false;
       
    bool down=false;
       for(
    int i=1;i<Bars-20;i++)
       {
       if(
    B1[i]>B1[i] && B1[i+1]<=B1[i+1]) {v_line_f(i,1);up=true;}
       if(
    B1[i]<B1[i] && B1[i+1]>=B1[i+1]) {v_line_f(i,-1);down=true;}

       if(
    v_line_only2 && up && down) break;
       }
       }
    ...
    ///////////////////////////////////////////////////////////////////////
    void v_line_f(int i,int way)
    {
    string name=identif+string(Time[i]);
    color colo=way==1?v_line_up_color:v_line_down_color;

    if(
    ObjectFind(0,name)==-1ObjectCreate(0,name,OBJ_VLINE,0,Time[i],0);
             
    ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
             
    ObjectSetInteger(0,name,OBJPROP_COLOR,colo);
             
    ObjectSetInteger(0,name,OBJPROP_STYLE,v_line_style);
             
    ObjectSetInteger(0,name,OBJPROP_BACK,true);
             
    ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); 
             
    ObjectSetInteger(0,name,OBJPROP_SELECTED,false); 
             
    ObjectSetInteger(0,name,OBJPROP_HIDDEN,true); 
             
    ObjectSetInteger(0,name,OBJPROP_ZORDER,false);



    Last edited by eevviill; 01-27-2021 at 02:01 PM.
    MQL4 programmer

  12. #85
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 84 - секунды в наибольшее время

    Например 61 секунду функция вернёт как 1минуту

    PHP Code:
    ///////////////////////////////////////////////
    string GetTimeDiffNice(int t) {
      
      if (
    60) return(string(t)+"_seconds");
      
      
    /= 60;
      if (
    60) return(string(t)+"_minutes");
      
      
    /= 60;
      if (
    24) return(string(t)+"_hours");
      
      
    /= 24;
      if (
    30) return(string(t)+"_days");
      
      
    /= 30;
      if (
    12) return(string(t)+"_month");
      
      
      return(
    string(t)+"_years");

    MQL4 programmer

  13. #86
    Bullish
    Join Date
    Jan 2021
    Posts
    40
    Thanks
    9
    Thanked 3 Times in 3 Posts

    Default

    ПРиветсвую Эвил Хочу обратится с вопросом / надо исправить параболик Первое 1. оставить только первые сигналы - точки , а второе надо оставить только те сигналы которые были строго на опене бара если на опене бара сигнала нет то его не должно быть на графике ! с уважением !

  14. #87
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default

    Quote Originally Posted by Yaroslavikov View Post
    ПРиветсвую Эвил Хочу обратится с вопросом / надо исправить параболик Первое 1. оставить только первые сигналы - точки , а второе надо оставить только те сигналы которые были строго на опене бара если на опене бара сигнала нет то его не должно быть на графике ! с уважением !
    Добрый день.
    Сюда.
    https://forum.fxopen.ru.com/threads/...F%D1%82%D1%8B)
    И пример прикрепите.
    Первое понял.
    MQL4 programmer

  15. #88
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 85 - enum типа буфера

    Если нужно внешней переменной выбрать тип рисования буфера.

    PHP Code:
    enum styles_e
    {
    DRAW_LINE_=0,DRAW_SECTION_=1,DRAW_HISTOGRAM_=2,DRAW_ARROW_=3,DRAW_ZIGZAG_=4,DRAW_NONE_=12
    };

    input styles_e styles DRAW_LINE_;

    ...
    SetIndexStyle(0,styles); 
    Last edited by eevviill; 04-28-2021 at 10:03 AM.
    MQL4 programmer

  16. #89
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    4,901
    Thanks
    1,548
    Thanked 1,756 Times in 1,616 Posts

    Default Заметка 86 - урезанное название ТФ enum

    Если нужен текст только с ТФ.

    PHP Code:
    input ENUM_TIMEFRAMES TF PERIOD_H1;
    ...
    Alert(StringSubstr(EnumToString(TF),7)); 
    Алерт выдаст "H1".
    Last edited by eevviill; 04-28-2021 at 10:04 AM.
    MQL4 programmer

Page 6 of 6 FirstFirst ... 23456

Tags for this Thread

Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Disclaimer
2005-2021 © FXOpen All rights reserved. Various trademarks held by their respective owners.

Risk Warning: Trading on the Forex market involves substantial risks, including complete possible loss of funds and other losses and is not suitable for all members. Clients should make an independent judgment as to whether trading is appropriate for them in the light of their financial condition, investment experience, risk tolerance and other factors.

FXOpen Markets Limited, a company duly registered in Nevis under the company No. C 42235. FXOpen is a member of The Financial Commission.

FXOpen AU Pty Ltd., a company authorised and regulated by the Australian Securities & Investments Commission (ASIC). AFSL 412871ABN 61 143 678 719.

FXOpen Ltd. a company registered in England and Wales under company number 07273392 and is authorised and regulated by the Financial Conduct Authority (previously, the Financial Services Authority) under FCA firm reference number 579202.

FXOpen EU is a trading name of FXOpen EU Ltd. FXOpen EU Ltd is authorized and regulated by the Cyprus Securities and Exchange Commission (CySEC) under license number 194/13.

FXOpen does not provide services for United States residents.

Join us