FXOpen Broker

10+ years’
experience in FX

VISIT WEBSITE

Trading Accounts

ECN, STP,
Micro, Crypto

START TRADING

Try Free Demo

Practice Forex trading
risk free

OPEN DEMO ACCOUNT

PAMM Technology

Become a Master
or a Follower

JOIN PAMM SERVICE
Page 4 of 4 FirstFirst 1234
Results 46 to 49 of 49

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

  1. #46
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    2,994
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    1,324
    Thanked 1,158 Times in 1,040 Posts

    Default Заметка 45 - трендовые линии по 2-ум последним фракталам

    Рисовать можна не только по цене на основном графике.
    В примере будет использован буфер в который предварительно записаны данные индикатора RSI.


    PHP Code:
      extern string emp4 "///////////Frac lines settings/////////////";
      
    extern bool draw_Frac_lines true;
      
    extern color Frac_color_up clrLime;
      
    extern color Frac_color_down clrMagenta;
      
    extern ENUM_LINE_STYLE Frac_style STYLE_SOLID;
      
    extern int Frac_width 1;
      
    extern bool Frac_ray true;
      
    extern int Frac_bef_bars 2;
      
    extern int Frac_aft_bars 2;

    ...
     
    //frac lines
      
    if(draw_Frac_lines)
      {
      
    datetime time1,time2;
      
    double price1,price2;
      
      
    frac_data_f(time1,time2,price1,price2,1);
      
    draw_Frac_f(time2,time1,price2,price1,1);
      
    frac_data_f(time1,time2,price1,price2,-1);
      
    draw_Frac_f(time2,time1,price2,price1,-1);
      }
      
      
      
        
      ...    
    //////////////////////////////////////////////////////////
    void draw_Frac_f(datetime tim1,datetime tim2,double prac1,double prac2,int way)
    {
    string name=identif+"Frli"+string(way);

    color colo=way==1?Frac_color_up:Frac_color_down


    if(
    ObjectFind(name)==-1
    {
       
    ObjectCreate(0,nameOBJ_TREND,WindowFind(ind_name),tim1,prac1,tim2,prac2);
       
    ObjectSetInteger(0,nameOBJPROP_COLORcolo);
       
    ObjectSetInteger(0,nameOBJPROP_STYLEFrac_style);
       
    ObjectSetInteger(0,nameOBJPROP_WIDTHFrac_width);
       
    ObjectSetInteger(0,name,OBJPROP_RAY,Frac_ray);
       
    ObjectSetInteger(0,name,OBJPROP_BACK,false); 
       
    ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); 
       
    ObjectSetInteger(0,name,OBJPROP_SELECTED,false); 
       
    ObjectSetInteger(0,name,OBJPROP_HIDDEN,true); 
       
    ObjectSetInteger(0,name,OBJPROP_ZORDER,false);
    }
    else
    {
    ObjectSetInteger(0,nameOBJPROP_TIME1,tim1);
    ObjectSetDouble(0,nameOBJPROP_PRICE1,prac1);
    ObjectSetInteger(0,nameOBJPROP_TIME2,tim2);
    ObjectSetDouble(0,nameOBJPROP_PRICE2,prac2);
    }

    }

    ////////////////////////////////////////////////////////////
    void frac_data_f(datetime &time1,datetime &time2,double &price1,double &price2,int way)
    {
    int cou=0;

    double dat=way==1?0:EMPTY_VALUE;

    for(
    int i=1+Frac_aft_bars;i<Bars-20;i++)
    {
    dat=way==1?0:EMPTY_VALUE;
    for(
    int x=i-Frac_aft_bars;x<=i+Frac_bef_bars;x++)
    {
    if(
    x==i) continue;
    if((
    way==&& RSIBuffer[x]>dat) || (way==-&& RSIBuffer[x]<dat)) dat=RSIBuffer[x];
    }
    if((
    way==&& RSIBuffer[i]>dat) || (way==-&& RSIBuffer[i]<dat)) 
    {
    cou++;
    if(
    cou==1) {time1=Time[i];price1=RSIBuffer[i];}
    if(
    cou==2) {time2=Time[i];price2=RSIBuffer[i];}
    if(
    cou>=2) break;
    }
    }

       

    Last edited by eevviill; 11-27-2018 at 09:15 AM.
    MQL4 programmer

    Volli Correla lines

  2. #47
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    2,994
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    1,324
    Thanked 1,158 Times in 1,040 Posts

    Default Заметка 46 - минимальное ограничение лота

    В советнике можно открывать ордер с фиксированным лотом, а можно в % от депозита или частью от депозита. Но! После уменьшения депозита лот будет уменьшатся. Данный код будет делать так чтобы новый лот был не меньше предыдущего.

    PHP Code:
    extern bool Lot_only_bigger true;
     
    double prev_lot;
    ...
    double Lotss=Lot_perc_f();
    if(
    Lot_only_bigger
    {
    if(
    Lotss<prev_lot)Lotss=prev_lot
    else 
    prev_lot=Lotss;

    Last edited by eevviill; 01-01-2019 at 12:39 PM.
    MQL4 programmer

    Volli Correla lines

  3. #48
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    2,994
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    1,324
    Thanked 1,158 Times in 1,040 Posts

    Default Заметка 47 - сортировка массива (с индексами)

    Иногда нужно отсортировать массив-буфер с данными. НО! После сортировки мы не будем знать какое значение принадлежит какому индексу.
    Например у нас есть 4 цены валютных пар. И нужно узнать какая пара имеет наибольшую цену. Функция сортировки сортирует только по первому измерению массива. Туда мы запишем цены, а во второе измерение индексы.

    PHP Code:
    double buf[4][4]; 

    buf[0][0]=MarketInfo("EURUSD",MODE_BID);
    buf[1][0]=MarketInfo("AUDUSD",MODE_BID);
    buf[2][0]=MarketInfo("GBPUSD",MODE_BID);
    buf[3][0]=MarketInfo("NZDUSD",MODE_BID);
    buf[0][1]=0;
    buf[1][1]=1;
    buf[2][1]=2;
    buf[3][1]=3;
    ArraySort(buf);

    Alert("PriceMax:",buf[3][0]," IndexMax",buf[3][1]); 

    или более практично
    PHP Code:
    double buf[4][4];  
    string names[4]={"EURUSD","AUDUSD","GBPUSD","NZDUSD"};

    buf[0][0]=MarketInfo(names[0],MODE_BID); 
    buf[1][0]=MarketInfo(names[1],MODE_BID); 
    buf[2][0]=MarketInfo(names[2],MODE_BID); 
    buf[3][0]=MarketInfo(names[3],MODE_BID); 
    buf[0][1]=0;
    buf[1][1]=1;
    buf[2][1]=2;
    buf[3][1]=3
    ArraySort(buf); 

    Alert("PriceMax:",buf[3][0]," IndexMax:",names[int(buf[3][1])]); 
    Last edited by eevviill; 02-01-2019 at 09:56 AM.
    MQL4 programmer

    Volli Correla lines

  4. #49
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    2,994
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    1,324
    Thanked 1,158 Times in 1,040 Posts

    Default Заметка 48 - Сумма цифр цены котировки

    Функция суммирует(справа налево) цифры в цене котировки или дате. Можно выбрать количество цифр.

    PHP Code:
    extern int Digits_plus 7;
    ...
    Alert(summ_f(Bid));
    ...
    /////////////////////////////////////////////////////////////////////
    int summ_f(double price)
    {
    StringReplace(price,".","0");
                           
    string cha;
    int cou=0;
    int pric=0

    for(
    int i=StringLen(price)-1;i>=0;i--)
    {
    cha=StringSubstr(price,i,1);
    {
    pric+=int(StringToInteger(cha));cou++;}
    if(
    cou>=Digits_plus) break;
    }


    return(
    pric);

    Last edited by eevviill; 05-17-2019 at 01:34 PM.
    MQL4 programmer

    Volli Correla lines

Page 4 of 4 FirstFirst 1234

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-2019 © 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 does not provide services for United States residents.

Join us