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 2 of 4 FirstFirst 1234 LastLast
Results 16 to 30 of 49

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

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

    Default Заметка15 - расчёт данных графического объекта "Канал стандартного отклонения"

    Скрипт.

    PHP Code:
    #property copyright "eevviill" 
    #property link      "http://volli7.blogspot.com/"
    #property strict
    #property show_inputs


    extern double deviation 2;



    ///////////////////////////////////////////
    void OnStart()
    {
    int Lb=39;
    int Rb=1;
    double left_cent=4*iMA(Symbol(),PERIOD_CURRENT,Lb-Rb+1,0,MODE_SMA,PRICE_CLOSE,Rb)-3*iMA(Symbol(),PERIOD_CURRENT,Lb-Rb+1,0,MODE_LWMA,PRICE_CLOSE,Rb);
    double right_cent=3*iMA(Symbol(),PERIOD_CURRENT,Lb-Rb+1,0,MODE_LWMA,PRICE_CLOSE,Rb)-2*iMA(Symbol(),PERIOD_CURRENT,Lb-Rb+1,0,MODE_SMA,PRICE_CLOSE,Rb);

    double devi=iStdDev(Symbol(),PERIOD_CURRENT,Lb-Rb+1,0,MODE_SMA,PRICE_CLOSE,Rb);
    double left_up=left_cent+devi*deviation;
    double left_down=left_cent-devi*deviation;
    double right_up=right_cent+devi*deviation;
    double right_down=right_cent-devi*deviation;

    double step=MathAbs(left_cent-right_cent)/(Lb-Rb+1);


    Alert(left_cent," ",left_up," ",step);

    Attached Thumbnails Attached Thumbnails EURNZDH1.png  
    Last edited by eevviill; 11-25-2018 at 07:48 AM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка16 - удаление в индикаторе ZigZag однонаправленных пиков

    В индикаторе ZZ при его расчёте есть лишние пики которые не отображаются.
    Это не проблема, но если например с советника вызывать индикатор для нахождение пиков, то это проблема.
    Прямо в индикаторе нужно очистить лишние данные. Для этого в конце OnCalculate добавляем код.

    PHP Code:
    int OnCalculate(const int rates_total,const int prev_calculated,
    const 
    datetime &time[],const double &open[],const double &high[],
    const 
    double &low[],const double &close[],
    const 
    long &tick_volume[],const long &volume[],const int &spread[])
      {
    ...
    //clean 1 way in a raw
    for(i=0i<=limiti++) 
         { 
         if(
    ExtLowBuffer[i]!=&& ExtZigzagBuffer[i]==0ExtLowBuffer[i]=0;
         if(
    ExtHighBuffer[i]!=0  && ExtZigzagBuffer[i]==0ExtHighBuffer[i]=0;
         } 

    return(
    rates_total);

    Last edited by eevviill; 05-15-2019 at 02:18 PM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка17 - время торговли советника

    В советниках иногда есть необходимость указывать время когда ему не открывать ордера.


    PHP Code:
     extern string emp2 "//////////////Work time settings////////////////////";
    extern bool Use_work_time false;
    extern string start_time_1 "00:00";
    extern string stop_time_1 "24:00";
    extern string start_time_2 "";
    extern string stop_time_2 "";
    extern string start_time_3 "";
    extern string stop_time_3 "";

    ...
     if(
    Use_work_time && !work_time_f()) return;
    //open order

    ...
    //work time function
     
    bool work_time_f() 
    {
    string TC_s=TimeToString(TimeCurrent(),TIME_MINUTES);

      if(
          (
    start_time_1+stop_time_1=="" || ((start_time_1<stop_time_1 && (TC_s<start_time_1 || TC_s>=stop_time_1)) 
    || (
    start_time_1>stop_time_1 && (TC_s<start_time_1 && TC_s>=stop_time_1)))) 
       && (
    start_time_2+stop_time_2=="" || ((start_time_2<stop_time_2 && (TC_s<start_time_2 || TC_s>=stop_time_2)) 
    || (
    start_time_2>stop_time_2 && (TC_s<start_time_2 && TC_s>=stop_time_2))))  
       && (
    start_time_3+stop_time_3=="" || ((start_time_3<stop_time_3 && (TC_s<start_time_3 || TC_s>=stop_time_3)) 
    || (
    start_time_3>stop_time_3 && (TC_s<start_time_3 && TC_s>=stop_time_3))))  
        )  return(
    false);


     
       return (
    true);

    Last edited by eevviill; 11-25-2018 at 08:02 AM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка18 - умножение лота

    Если нужно умножить лот и потом его округлить то простая конструкция типа
    PHP Code:
    double lot=NormalizeDouble(Lot*Lot_multip,2
    поскольку например если коефициент лота=1.4 и старт лот=0.01, то 0.01*1.4(и округлить) будет 0.01. Как бы правильно. НО! При следующем шаге умножения мы получим теже 0.01 лот. Это случится если мы например берём лот последнего открытого ордера.

    Эта конструкция работает так же для расчёта лота первого ордера.
    PHP Code:
    extern double Lot 0.01;
    extern double Lot_multip 2;
    ...
    double Lotss=NormalizeDouble(Lot*MathPow(Lot_multip,OrdersTotal()),2); 
    Last edited by eevviill; 03-16-2019 at 10:09 AM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка19 - формула CCI наложенного на OBV

    Ингода нужно один индикатор наложить на другой.
    Примерного ефекта можно достичь когда в МТ4 перетянуть подвальный индикатор в окно где уже открыт другой подвальный индикатор.

    Что нужно для расчёта CCI?
    1) Количество баров для подсчёта. Например 40
    2) Наименьшее и наибольшее значение OBV за указанный период. Например 190 и 390
    3) Наименьшее и наибольшее значение CCI за указанный период. Например -20 и 50
    4) Пропорция. Нужно поделить разницу Макс_CCI и Мин_CCI на разницу Макс_OBV и Мин_OBV
    (50--20)/(390-190)=0.35
    5) Значение CCI на расчётном баре. Например 10
    6) Финальный расчёт. Допустим мы расчитывали 40 баров начиная с начала графика(правый край). Тогда CCI на баре один будет
    CCI_бар1=190+((10--20)/0.35)
    CCI_бар1=OBV_min+((CCI_curr-CCI_min)/propotion)
    Last edited by eevviill; 04-21-2018 at 02:20 PM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка20 - расчёт пиков(фракталов)

    Ниже представлен алгоритм поиска номер бара где был пик.
    В алгоритме можно выбирать количество баров для сранения до и после текущей свечи.
    Встроенные функции iHighest и iLowest не подходят так как они подсчитывают текущий бар и в случае если есть 2 одинаковых цены, то алгоритм будет не верен.


    PHP Code:
    extern int abc_bars_A_before 2;
    extern int abc_bars_A_after 2;
    ...
    double a_Hi=EMPTY_VALUE;
    double a_Lo=-EMPTY_VALUE;

    for(
    int y=40;y>0;y--)
     {
    a_Hi=EMPTY_VALUE;
    a_Lo=-EMPTY_VALUE;
      if(
    y-abc_bars_A_after>0
      {
      
    a_Hi=highest_f(y,abc_bars_A_before,abc_bars_A_after);
      
    a_Lo=lowest_f(y,abc_bars_A_before,abc_bars_A_after);
      }
     if(
    High[y]>a_HiAlert("Frac up bar:"+string(y));
     if(
    Low[y]<a_LoAlert("Frac down bar:"+string(y));
     }
    ...
    ////////////////////////////////////////
    double highest_f(int y,int bef,int aft)
    {
    double highest=-1;
    for(
    int i=y-aft;i<=y+bef;i++)
    {
    if(
    i==y) continue;
    if(
    High[i]>highesthighest=High[i];
    }

    return(
    highest);
    }

    ////////////////////////////////////////
    double lowest_f(int y,int bef,int aft)
    {
    double lowest=EMPTY_VALUE;
    for(
    int i=y-aft;i<=y+bef;i++)
    {
    if(
    i==y) continue;
    if(
    Low[i]<lowestlowest=Low[i];
    }

    return(
    lowest);

    Last edited by eevviill; 04-21-2018 at 02:16 PM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка21 - стопы по свечам

    Ниже представлены 2 функции для СтопЛоса и ТейкПрофита.
    Особенность заключается в том что есть выбор установки стопов по свечам.
    По текущеим настрокам СЛ будет выставлятся по 3(включая текущую) свечам с ограниченем мин 401 пункт и макс 1001 пункт. ТП фиксированный и равен 901

    PHP Code:
     extern int Magic 689;
     
    extern ENUM_TIMEFRAMES TF PERIOD_H1;
     
    extern int point_multip 10;

     
    extern bool   use_SL true;
     
    extern int SL 1001;
     
    extern bool use_candle_sl true;
     
    extern int candles_sl_bars_chek 3;
     
    extern int candle_sl_indent 11;
     
    extern int candle_sl_min 401;
     
    extern int candle_sl_max 1001;

     
    extern bool   use_TP true;
     
    extern int TP 901;
     
    extern bool use_candle_tp false;
     
    extern int candles_tp_bars_chek 3;
     
    extern int candle_tp_indent 11;
     
    extern int candle_tp_min 401;
     
    extern int candle_tp_max 1001;
    ...
     
    //SL (points)
     
    if(use_SLSL_f();

     
    //TP (points)
     
    if(use_TPTP_f();
    ...
    ////////////////////////////////////////////////////////////////
     
    void SL_f()
     {
     
    int type;
     
    double ord_SL;
     
    double ord_OpPr;
     
    double pip;
     
    int digits;
     
    string ord_symb;
     
    double sl;
     
    double min_sl;
     
    double max_sl;
     
     
      for (
    int i=OrdersTotal()-1i>=0i--) 
      {
       if(!
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
       if(
    OrderMagicNumber()!=Magic) continue;  
       
       
    ord_symb=OrderSymbol();
       
    type=OrderType();
       if(
    type!=OP_BUY && type!=OP_SELL) continue;
      
      while(
    IsTradeContextBusy()) Sleep(500);
      
    RefreshRates();
      
          if (
    type==OP_BUY
          {
      
    ord_SL=OrderStopLoss();
      
    ord_OpPr=OrderOpenPrice();
      
    pip=MarketInfo(ord_symb,MODE_POINT)*Poi_mult;
      
    digits=int(MarketInfo(ord_symb,MODE_DIGITS));
             
    //SL
             
    if(ord_SL==0
             {
             if(!
    use_candle_slsl=NormalizeDouble(ord_OpPr-SL*pip,digits);  
             else
             if(
    use_candle_sl
             {
             
    sl=iLow(ord_symb,TF,iLowest(ord_symb,TF,MODE_LOW,candles_sl_bars_chek,0))-candle_sl_indent*pip;
             
    min_sl=NormalizeDouble(ord_OpPr-candle_sl_min*pip,digits);
             
    max_sl=NormalizeDouble(ord_OpPr-candle_sl_max*pip,digits);
             if(
    sl>min_slsl=min_sl;
             if(
    sl<max_slsl=max_sl;
             }
             if(
    MarketInfo(ord_symb,MODE_BID)<=sl) if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(ord_symb,MODE_BID),Slippage,clrViolet)) continue;
             if(
    OrderModify(OrderTicket(),ord_OpPr,sl,OrderTakeProfit(),0,clrNONE)) continue;
             }
             
    //
          
    }
          else
          if (
    type==OP_SELL
          {
      
    ord_SL=OrderStopLoss();
      
    ord_OpPr=OrderOpenPrice();
      
    pip=MarketInfo(ord_symb,MODE_POINT)*Poi_mult;
      
    digits=int(MarketInfo(ord_symb,MODE_DIGITS));  
            
    //SL
            
    if(ord_SL==0
            {
            if(!
    use_candle_slsl=NormalizeDouble(ord_OpPr+SL*pip,digits);  
            else
            if(
    use_candle_sl)
            { 
            
    sl=iHigh(ord_symb,TF,iHighest(ord_symb,TF,MODE_HIGH,candles_sl_bars_chek,0))+MarketInfo(ord_symb,MODE_SPREAD)*pip+candle_sl_indent*pip;
            
    min_sl=NormalizeDouble(ord_OpPr+candle_sl_min*pip,digits);
            
    max_sl=NormalizeDouble(ord_OpPr+candle_sl_max*pip,digits);
            if(
    sl<min_slsl=min_sl;
            if(
    sl>max_slsl=max_sl;
            }
            if(
    MarketInfo(ord_symb,MODE_ASK)>=sl) if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(ord_symb,MODE_ASK),Slippage,clrViolet)) continue;
            if(
    OrderModify(OrderTicket(),ord_OpPr,sl,OrderTakeProfit(),0,clrNONE)) continue; 
            }
            
    // 
          
    }   

      }
     }


    ////////////////////////////////////////////////////////////////
     
    void TP_f()
     {
     
    int type;
     
    double ord_TP;
     
    double ord_OpPr;
     
    double pip;
     
    int digits;
     
    string ord_symb;
     
    double tp;
     
    double min_tp;
     
    double max_tp;
     
     
      for (
    int i=OrdersTotal()-1i>=0i--) 
      {
       if(!
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
       if(
    OrderMagicNumber()!=Magic) continue;  
       
       
    ord_symb=OrderSymbol();
       
    type=OrderType();
       if(
    type!=OP_BUY && type!=OP_SELL) continue;
      
      while(
    IsTradeContextBusy()) Sleep(500);
      
    RefreshRates();
      
          if (
    type==OP_BUY
          {
      
    ord_TP=OrderTakeProfit();
      
    ord_OpPr=OrderOpenPrice();
      
    pip=MarketInfo(ord_symb,MODE_POINT)*Poi_mult;
      
    digits=int(MarketInfo(ord_symb,MODE_DIGITS));
             
    //TP
             
    if(ord_TP==0
             {
             if(!
    use_candle_tptp=NormalizeDouble(ord_OpPr+TP*pip,digits);  
             else
             if(
    use_candle_tp
             {
             
    tp=iHigh(ord_symb,TF,iHighest(ord_symb,TF,MODE_HIGH,candles_tp_bars_chek,0))+candle_tp_indent*pip;
             
    min_tp=NormalizeDouble(ord_OpPr+candle_tp_min*pip,digits);
             
    max_tp=NormalizeDouble(ord_OpPr+candle_tp_max*pip,digits);
             if(
    tp<min_tptp=min_tp;
             if(
    tp>max_tptp=max_tp;
             }
             if(
    MarketInfo(ord_symb,MODE_BID)>=tp) if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(ord_symb,MODE_BID),Slippage,clrViolet)) continue;
             if(
    OrderModify(OrderTicket(),ord_OpPr,OrderStopLoss(),tp,0,clrNONE)) continue;
             }
             
    //
          
    }
          else
          if (
    type==OP_SELL
          {
      
    ord_TP=OrderTakeProfit();
      
    ord_OpPr=OrderOpenPrice();
      
    pip=MarketInfo(ord_symb,MODE_POINT)*Poi_mult;
      
    digits=int(MarketInfo(ord_symb,MODE_DIGITS));  
            
    //TP
            
    if(ord_TP==0
            {
            if(!
    use_candle_tptp=NormalizeDouble(ord_OpPr+TP*pip,digits);  
            else
            if(
    use_candle_tp)
            { 
            
    tp=iLow(ord_symb,TF,iLowest(ord_symb,TF,MODE_LOW,candles_tp_bars_chek,0))-MarketInfo(ord_symb,MODE_SPREAD)*pip-candle_tp_indent*pip;
            
    min_tp=NormalizeDouble(ord_OpPr-candle_tp_min*pip,digits);
            
    max_tp=NormalizeDouble(ord_OpPr-candle_tp_max*pip,digits);
            if(
    tp>min_tptp=min_tp;
            if(
    tp<max_tptp=max_tp;
            }
            if(
    MarketInfo(ord_symb,MODE_ASK)<=tp) if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(ord_symb,MODE_ASK),Slippage,clrViolet)) continue;
            if(
    OrderModify(OrderTicket(),ord_OpPr,OrderStopLoss(),tp,0,clrNONE)) continue; 
            }
            
    // 
          
    }   

      }
     } 
    Last edited by eevviill; 04-22-2018 at 08:26 AM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка22 - поиск бара

    Есть ситуации когда нужно узнать номер бара. Например первого бара начала недели.

    PHP Code:
    int bar=iBarShift(Symbol(),PERIOD_CURRENT,iTime(Symbol(),PERIOD_W1,0),true); 
    if(
    bar==-1bar=iBarShift(Symbol(),PERIOD_CURRENT,iTime(Symbol(),PERIOD_W1,0),false)-1
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка23 - умножение пункта (перевод на 4х знак...)

    Данная конструкция позволяет умножать пункт на числа от 0.01 до 1000 с шагом 10

    PHP Code:
    enum po_multips
    {
    _001=1,/*0.01*/  _01=10,/*0.1*/ _1=100,/*1*/ _10=1000,/*10*/ _100=10000,/*100*/ _1000=100000,/*1000*/
    };
    ...
    extern po_multips Poi_mult _10;
    double Poi_mult_R=Poi_mult/100.0;
    ...
    double sl=Ask-20*Point*Poi_mult_R
    Last edited by eevviill; 04-28-2018 at 09:52 AM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка24 - библиотека шрифтов

    Моя библиотека шрифтов для текста на графике.
    Windows7

    PHP Code:
    //enum fonts set
    enum Font_e
    {
    font1,/*Aharoni*/ font2,/*Algerian*/ font3,/*Andalus*/ font4,/*Angsana New*/ font5,/*AngsanaUPC*/ font6,/*Aparajita*/ font7,
    /*Arabic Typesetting*/ font8,/*Arial*/ font9,/*Arial Black*/ 
    font10,/*Arial Narrow*/ font11,/*Arial Unicode MS*/ font12,/*Baskenville Old Face*/ font13,/*Batang*/ font14,
    /*BatangChe*/ font15,/*Bauhaus 93*/ font16,/*Bell MT*/ font17,/*Berlin Sans FB*/ font18,/*Berlin Sans FB Demi*/ font19,/*Bernard MT Condensed*/ 
    font20,/*Bodoni MT Poster Compressed*/ font21,
    /*Book Antiqua*/ font22,/*Bookman Old Style*/ font23,/*Bookshelf Symbol 7*/ font24,/*Britannic Bold*/ font25,/*Broadway*/ font26,/*Browallia New*/ font27,/*Browa|liaUPC*/ font28,
    /*Brush Script MT*/ font29,/*Calibri*/ 
    font30,/*Calibri Light*/ font31,/*Californian FB*/ font32,
    /*Cambria*/ font33,/*Cambria Math*/ font34,
    /*Candara*/ font35,
    /*Centaur*/ font36,/*Century*/ font37,/*Century Gothic*/ font38,/*Chiller*/ font39,/*Colonna MT*/ 
    font40,/*Comic Sans MS*/ font41,/*Consolas*/ font42,
    /*Constantia*/ font43,/*Cooper Black*/ font44,/*Corbel*/ font45,/*Cordia New*/ font46,/*CordiaUPC*/ font47,/*Courier*/ font48,/*Courier New*/ font49,
    /*DaunPenh*/ 
    font50,/*David*/ font51,/*DFKai-SB*/ font52,/*DilleniaUPC*/ font53,/*DokChampa*/ font54,/*Dotum*/ font55,/*DotumChe*/ font56,
    /*Ebrima*/ font57,/*Estrangelo Edessa*/ font58,/*EucrosiaUPC*/ font59,/*Euphemia*/ 
    font60,/*FangSong*/ font61,/*Fixedsys*/ font62,/*Footlight MT Light*/ font63,
    /*Franklin Gothic Medium*/ font64,/*FrankRuehl*/ font65,/*FreesiaUPC*/ font66,/*Freestyle Script*/ font67,/*Gabriola*/ font68,/*Garamond*/ font69,/*Gautami*/ 
    font70,
    /*Georgia*/ font71,/*Gisha*/ font72,/*Gulim*/ font73,/*GulimChe*/ font74,/*Gungsuh*/ font75,/*GungsuhChe*/ font76,/*Haettenschweiler*/ font77,
    /*Harlow Solid Italic*/ font78,/*Harrington*/ font79,/*High Tower Text*/ 
    font80,/*Impact*/ font81,/*Informal Roman*/ font82,/*IrisUPC*/ font83,/*Iskoola Pota*/ font84,
    /*JasmineUPC*/ font85,/*Jokerman*/ font86,/*Juice ITC*/ font87,/*KaiTi*/ font88,/*Kalinga*/ font89,/*Kartika*/ 
    font90,/*Khmer UI*/ font91,
    /*KodchiangUPC*/ font92,/*Kokila*/ font93,/*Kristen ITC*/ font94,/*Kunstler Script*/ font95,/*Lao UI*/ font96,/*Latha*/ font97,/*Lato*/ font98,
    /*Lato Light*/ font99,/*Lato Semibold*/ 
    font100,/*Leelawadee*/ font101,/*Levenim MT*/ font102,/*LilyUPC*/ font103,/*Lucida Bright*/ font104,/*Lucida Calligraphy*/ font105,
    /*Lucida Console*/ font106,/*Lucida Fax*/ font107,/*Lucida Handwriting*/ font108,/*Lucida Sans Unicode*/ font109,/*Magneto*/ 
    font110,/*Malgun Gothic*/ font111,/*Mangal*/ font112,
    /*Marlett*/ font113,/*Matura MT Script Capitals*/ font114,/*Meiryo*/ font115,/*Meiryo UI*/ font116,/*Microsoft Himalaya*/ font117,/*Microsoft JhengHei*/ font118,/*Microsoft New Tai Lue*/ font119,
    /*Microsoft PhagsPa*/ 
    font120,/*Microsoft Sans Serif*/ font121,/*Microsoft Tai Le*/ font122,/*Microsoft Uighur*/ font123,/*Microsoft YaHei*/ font124,/*Microsoft Yi Baiti*/ font125,/*MingLiU*/ font126,/*MingLiU_HKSCS*/ font127,/*MingLiU_HKSCS-ExtB*/ font128,
    /*MingLiU-ExtB*/ font129,/*Miriam*/ 
    font130,/*Miriam Fixed*/ font131,/*Mistral*/ font132,/*Modern*/ font133,/*Modern No.20*/ font134,/*Mongolian Baiti*/ font135,
    /*Monotype Corsiva*/ font136,/*MoolBoran*/ font137,/*MS Gothic*/ font138,/*MS Mincho*/ font139,/*MS Outlook*/ 
    font140,/*MS PGothic*/ font141,/*MS PMincho*/ font142,
    /*MS Reference Sans Serif*/ font143,/*MS Reference Specialty*/ font144,/*MS Sans Serifv*/ font145,/*MS Serif*/ font146,/*MS UI Gothic*/ font147,/*MT Extra*/ font148,/*MV Boli*/ font149,
    /*Narkisim*/ 
    font150,/*Niagara Engraved*/ font151,/*Niagara Solid*/ font152,/*NSimSun*/ font153,/*Nyala*/ font154,/*Old English Text MT*/ font155,/*Onyx*/ font156,
    /*Palatino Linotype*/ font157,/*Parchment*/ font158,/*Plantagenet Cherokee*/ font159,/*Playbill*/ 
    font160,/*PMingLiU*/ font161,/*PMingLiU-ExtB*/ font162,/*Poor Richard*/ font163,
    /*Raavi*/ font164,/*Ravie*/ font165,/*Rod*/ font166,/*Roman*/ font167,/*Sakkal Majalla*/ font168,/*Script*/ font169,/*Segoe Print*/ 
    font170,
    /*Segoe Script*/ font171,/*Segoe UI*/ font172,/*Segoe UI Light*/ font173,/*Segoe UI Semibold*/ font174,/*Segoe UI Symbol*/ font175,/*Shonar Bangla*/ font176,/*Showcard Gothic*/ font177,
    /*Shruti*/ font178,/*SimHei*/ font179,/*Simplified Arabic*/ 
    font180,/*Simplified Arabic Fixed*/ font181,/*SimSun*/ font182,/*SimSun-ExtB*/ font183,/*Small Fonts*/ font184,
    /*Snap ITC*/ font185,/*Stencil*/ font186,/*Sylfaen*/ font187,/*Symbol*/ font188,/*System*/ font189,/*Tahoma*/ 
    font190,/*Tempus Sans ITC*/ font191,
    /*Terminal*/ font192,/*Times New Roman*/ font193,/*Traditional Arabic*/ font194,/*Trebuchet MS*/ font195,/*Tunga*/ font196,/*Utsaah*/ font197,/*Vani*/ font198,
    /*Verdana*/ font199,/*Vijaya*/ 
    font200,/*Viner Hand ITC*/ font201,/*Vivaldi*/ font202,/*Vladimir Script*/ font203,/*Vrinda*/ font204,/*Webdings*/ font205,
    /*Wide Latin*/ font206,/*Wingdings*/ font207,/*Wingdings 2*/ font208,/*Wingdings 3*/ 
    };


    //fonts buf
    string fonts_buf[208]=
    {
    "Aharoni","Algerian","Andalus","Angsana New","AngsanaUPC","Aparajita","Arabic Typesetting","Arial","Arial Black","Arial Narrow","Arial Unicode MS",
    "Baskenville Old Face","Batang",
    "BatangChe","Bauhaus 93","Bell MT","Berlin Sans FB","Berlin Sans FB Demi","Bernard MT Condensed",
    "Bodoni MT Poster Compressed","Book Antiqua","Bookman Old Style","Bookshelf Symbol 7",
    "Britannic Bold","Broadway","Browallia New","Browa|liaUPC","Brush Script MT","Calibri","Calibri Light","Californian FB","Cambria","Cambria Math",
    "Candara","Centaur","Century","Century Gothic",
    "Chiller","Colonna MT","Comic Sans MS",
    "Consolas","Constantia","Cooper Black","Corbel","Cordia New","CordiaUPC","Courier","Courier New","DaunPenh","David","DFKai-SB","DilleniaUPC","DokChampa",
    "Dotum","DotumChe","Ebrima","Estrangelo 
    Edessa"
    ,"EucrosiaUPC","Euphemia","FangSong","Fixedsys","Footlight MT Light","Franklin Gothic Medium","FrankRuehl","FreesiaUPC","Freestyle Script","Gabriola",
    "Garamond","Gautami","Georgia","Gisha","Gulim","GulimChe","Gungsuh","GungsuhChe","Haettenschweiler","Harlow Solid Italic","Harrington","High Tower Text","Impact","Informal Roman","IrisUPC",
    "Iskoola Pota","JasmineUPC","Jokerman","Juice 
    ITC"
    ,"KaiTi","Kalinga","Kartika","Khmer UI","KodchiangUPC","Kokila","Kristen ITC","Kunstler Script","Lao UI","Latha","Lato","Lato Light","Lato Semibold",
    "Leelawadee","Levenim MT","LilyUPC","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","Lucida Handwriting","Lucida Sans Unicode","Magneto","Malgun Gothic","Mangal","Marlett",
    "Matura MT Script Capitals","Meiryo","Meiryo UI",
    "Microsoft Himalaya","Microsoft JhengHei","Microsoft New Tai Lue","Microsoft PhagsPa","Microsoft Sans Serif","Microsoft Tai Le","Microsoft Uighur",
    "Microsoft YaHei","Microsoft Yi Baiti","MingLiU","MingLiU_HKSCS","MingLiU_HKSCS-ExtB","MingLiU-ExtB","Miriam","Miriam Fixed","Mistral","Modern",
    "Modern No.20","Mongolian Baiti","Monotype Corsiva",
    "MoolBoran","MS Gothic","MS Mincho","MS Outlook","MS PGothic","MS PMincho","MS Reference Sans Serif","MS Reference Specialty",
    "MS Sans Serifv","MS Serif","MS UI Gothic","MT Extra","MV Boli","Narkisim",
    "Niagara Engraved","Niagara Solid","NSimSun",
    "Nyala","Old English Text MT","Onyx","Palatino Linotype","Parchment","Plantagenet Cherokee","Playbill","PMingLiU","PMingLiU-ExtB","Poor Richard","Raavi",
    "Ravie","Rod","Roman","Sakkal Majalla","Script","Segoe Print","Segoe Script","Segoe UI","Segoe UI Light",
    "Segoe UI Semibold","Segoe UI Symbol","Shonar Bangla","Showcard Gothic","Shruti","SimHei",
    "Simplified Arabic","Simplified Arabic Fixed","SimSun","SimSun-ExtB","Small Fonts","Snap ITC","Stencil","Sylfaen",
    "Symbol","System","Tahoma","Tempus Sans ITC","Terminal","Times New Roman",
    "Traditional Arabic","Trebuchet MS","Tunga","Utsaah","Vani","Verdana","Vijaya","Viner Hand ITC","Vivaldi","Vladimir Script",
    "Vrinda","Webdings","Wide Latin","Wingdings","Wingdings 2","Wingdings 3"
    };


    extern Font_e Font font1;
    string font fonts_buf[Font]; 
    Last edited by eevviill; 11-25-2018 at 08:01 AM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка25 - Пересчёт баров в индикаторе

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

    PHP Code:
     extern int Bars_To_Count 400;
    ...
     
    int bars=Bars;
      
    int ind_counted=IndicatorCounted();
      if(
    bars-ind_counted>1
      {
      
    ArrayInitialize(up_arr,EMPTY_VALUE);
      
    ArrayInitialize(down_arr,EMPTY_VALUE);
      
    ind_counted=0;
      }
      

     for(
    int i=MathMin(bars-(ind_counted-2),Bars_To_Count);i>=0;i--)
     {
     if(
    i>Bars-20i=Bars-20;

     if(
    i==0)
     {
     
    up_arr[i]=EMPTY_VALUE;
     
    down_arr[i]=EMPTY_VALUE;
     }
     
     ...
     } 
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка26 - Итерация кода в точности до секунды

    PHP Code:
    extern string start_time "08:00:01";
     
    int time_shift;
     
    bool first_tick_chaked=false;
    //////////////////////////////////////////////////////////////
     
    int OnInit()
     {  
      
    first_tick_chaked=false;
     return(
    INIT_SUCCEEDED);
     }
     
    ////////////////////////////////////////////////////////////
     
    void OnTick()
     { 
     if(!
    first_tick_chaked)
     {
     
    first_tick_chaked=true;
    EventSetTimer(1);
     
    time_shift=int(TimeLocal()-TimeCurrent());
     }
    }
    ////////////////////////////////////////////////////////////
     
    void OnTimer()
     {
     
    datetime time_loc=TimeLocal();
     
    string TC_s=TimeToString(time_loc-time_shift,TIME_MINUTES);
        
    if(
    TC_s==start_timeAlert("Time!");
     } 
    Last edited by eevviill; 05-16-2018 at 09:21 AM.
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка27 - Обновление графика програмно

    PHP Code:
    ChartSetSymbolPeriod(0,Symbol(),PERIOD_CURRENT); 
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка28 - Размер графика в пикселях

    Например это нужно для снимка графика.

    PHP Code:
    int summ=0;
    for(
    int i=WindowsTotal()-1;i>=0;i--)
    {
    summ+=int(ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,i));
    if(
    i!=0summ+=2;
    }

    ChartScreenShot(0,"Shot1.png",int(ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0)),summ); 
    MQL4 programmer

    Volli Correla lines

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

    Default Заметка29 - Тикет открытого частично закрившегося ордера

    Если знать тикет изначального ордера, который закрывался частями, то можна узнать открыта ли его часть на данный момент.

    PHP Code:
    ...
    int ticket_start=1;
    int TICKET=ticke_search_f(ticket_start);
    if(
    TICKET==-1Alert("No order in market.");
    ...
    ////////////////////////////////////////////////////////////////////////
    int ticke_search_f(int ticke)
    {
    //no order
    if(!OrderSelect(ticke,SELECT_BY_TICKET)) return(-1);

    //if order opened
    if(OrderCloseTime()==0) return(OrderTicket());

    //if order closed
    int str_sta=StringFind(OrderComment(),"to #");
    while(
    str_sta!=-1)
    {
    if(!
    OrderSelect(int(StringSubstr(OrderComment(),str_sta+4)),SELECT_BY_TICKET)) break;
    }

    //if all parts of order closed
    if(OrderCloseTime()>0) return(-1);


    //return ticket of last opened part
    return(OrderTicket());

    Last edited by eevviill; 05-28-2018 at 06:24 AM.
    MQL4 programmer

    Volli Correla lines

Page 2 of 4 FirstFirst 1234 LastLast

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