Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

Jest weekend, więc może broker ma kosmiczne limity na takie rzeczy.
Solą życia jest kasa.

Awatar użytkownika
mike_05
Maniak
Maniak
Posty: 1668
Rejestracja: 02 wrz 2010, 11:55

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: mike_05 »

Skrypt, ostatnia pozycja pokazuje, jaki odstęp broker dopuszcza od ceny.
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.

Wojtek06
Uczestnik
Uczestnik
Posty: 3
Rejestracja: 03 cze 2013, 19:04

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Wojtek06 »

Czy jest możliwe napisanie programu który zwraca cenę najwyższą/najniższą z np obiektu trójkąt/kwadrat wyświetlonego na wykresie? Jeżeli tak to jakiej funkcji się do tego używa?

Fiku
Stały bywalec
Stały bywalec
Posty: 23
Rejestracja: 14 lut 2009, 16:14

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Fiku »

personov, ok thx, sprawdze jutro
mike, ciekawy skrypt, ale ostatnie rzeczy to spread 80 pkt i poziom SL/TP: 1. więc nie bardzo rozumiem
Mql minimal techno remix

pr7emo
Fanatyk
Fanatyk
Posty: 7578
Rejestracja: 24 lis 2010, 22:32

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: pr7emo »

mam pytanie i jednocześnie prośbę
używam wskaźnik luktom pipsometer
niestety nie jest on dopasowany do brokera z 5 digit i nie robi przecinka pomiędzy liczbą a cyframi dziesiętnymi
czy mógłby ktoś zmodyfikować ten wskaźnik aby pokazywał liczbę i jego część dziesiętną?
zamieszczam kod i fotke stanu wejściowego

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                            luktom pipsometer.mq4 |
//|                                   luktom :: Łukasz Tomaszkiewicz |
//|                                               http://luktom.biz/ |
//+------------------------------------------------------------------+
#property copyright "luktom :: Łukasz Tomaszkiewicz"
#property link      "http://luktom.biz/"

#property indicator_chart_window

extern color color1=White;
extern color color2=Yellow;
extern bool allSymbols=false;

int init() {
   ObjectCreate("lpm_pips",OBJ_LABEL,0,0,0);
   ObjectSet("lpm_pips",OBJPROP_CORNER,2);
   ObjectSetText("lpm_pips","pips",12);
   ObjectSet("lpm_pips",OBJPROP_COLOR,color1);
   ObjectSet("lpm_pips",OBJPROP_XDISTANCE,10);
   ObjectSet("lpm_pips",OBJPROP_YDISTANCE,20);
   
   ObjectCreate("lpm_pips_tosl",OBJ_LABEL,0,0,0);
   ObjectSet("lpm_pips_tosl",OBJPROP_CORNER,2);
   ObjectSetText("lpm_pips_tosl","S",10);
   ObjectSet("lpm_pips_tosl",OBJPROP_COLOR,color1);
   ObjectSet("lpm_pips_tosl",OBJPROP_XDISTANCE,10);
   ObjectSet("lpm_pips_tosl",OBJPROP_YDISTANCE,5);

   ObjectCreate("lpm_pips_realized",OBJ_LABEL,0,0,0);
   ObjectSet("lpm_pips_realized",OBJPROP_CORNER,2);
   ObjectSetText("lpm_pips_realized","R",10);
   ObjectSet("lpm_pips_realized",OBJPROP_COLOR,color1);
   ObjectSet("lpm_pips_realized",OBJPROP_XDISTANCE,35);
   ObjectSet("lpm_pips_realized",OBJPROP_YDISTANCE,5); 

   ObjectCreate("lpm_longlabel",OBJ_LABEL,0,0,0);
   ObjectSet("lpm_longlabel",OBJPROP_CORNER,2);
   ObjectSetText("lpm_longlabel","L",9);
   ObjectSet("lpm_longlabel",OBJPROP_COLOR,color1);
   ObjectSet("lpm_longlabel",OBJPROP_XDISTANCE,10);
   ObjectSet("lpm_longlabel",OBJPROP_YDISTANCE,70);

   ObjectCreate("lpm_shortlabel",OBJ_LABEL,0,0,0);
   ObjectSet("lpm_shortlabel",OBJPROP_CORNER,2);
   ObjectSetText("lpm_shortlabel","S",9);
   ObjectSet("lpm_shortlabel",OBJPROP_COLOR,color1);
   ObjectSet("lpm_shortlabel",OBJPROP_XDISTANCE,10);
   ObjectSet("lpm_shortlabel",OBJPROP_YDISTANCE,50);

   ObjectCreate("lpm_long",OBJ_LABEL,0,0,0);
   ObjectSet("lpm_long",OBJPROP_CORNER,2);
   ObjectSetText("lpm_long","L",9);
   ObjectSet("lpm_long",OBJPROP_COLOR,color2);
   ObjectSet("lpm_long",OBJPROP_XDISTANCE,30);
   ObjectSet("lpm_long",OBJPROP_YDISTANCE,70);

   ObjectCreate("lpm_short",OBJ_LABEL,0,0,0);
   ObjectSet("lpm_short",OBJPROP_CORNER,2);
   ObjectSetText("lpm_short","S",9);
   ObjectSet("lpm_short",OBJPROP_COLOR,color2);
   ObjectSet("lpm_short",OBJPROP_XDISTANCE,30);
   ObjectSet("lpm_short",OBJPROP_YDISTANCE,50);

   start();
   
   return(0);
}

int deinit() {
   ObjectDelete("lpm_pips");
   ObjectDelete("lpm_pips_tosl");
   ObjectDelete("lpm_pips_realized");
   ObjectDelete("lpm_long");
   ObjectDelete("lpm_short");   
   ObjectDelete("lpm_longlabel");
   ObjectDelete("lpm_shortlabel");
   return(0);
}

int start() {

   ObjectSetText("lpm_short",DoubleToStr(countOrders(OP_SELL,allSymbols),0));
   ObjectSetText("lpm_long",DoubleToStr(countOrders(OP_BUY,allSymbols),0));
   
   double profit;
   double sl;
   calcProfit(profit,sl,allSymbols);
   
   ObjectSetText("lpm_pips",sign(profit)+DoubleToStr(MathAbs(profit),0));
   ObjectSetText("lpm_pips_tosl",sign(sl)+DoubleToStr(MathAbs(sl),0));

   double realized;
   calcRealized(realized,allSymbols);
   
   ObjectSetText("lpm_pips_realized",sign(realized)+DoubleToStr(MathAbs(realized),0));


   return(0);
}

void calcRealized(double& out, bool allSymbols=false) {

   double profit=0;
   double p=0;   
      
   for(int i=0;i<OrdersHistoryTotal();i++) {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
     
     if(allSymbols || OrderSymbol()==Symbol()) {
     
      if(OrderCloseTime()<StrToTime("0:00")) {
       continue;
      }
      
      p=0;
      
      if(OrderType()==OP_BUY) {
       p=(OrderClosePrice()-OrderOpenPrice())/Point;
      }
      
      if(OrderType()==OP_SELL) {
       p=(OrderOpenPrice()-OrderClosePrice())/Point;
      }
      
      profit+=p;
     
     }
    }
   }

   out=profit;

}

double calcProfit(double& out, double& outsl,bool allSymbols=false) {

   double profit=0;
   double p=0;
   double sl=0;
   double s=0;
      
   for(int i=0;i<OrdersTotal();i++) {
    if(OrderSelect(i,SELECT_BY_POS)) {
     
     if(allSymbols || OrderSymbol()==Symbol()) {
      
      p=0;
      s=0;
      
      if(OrderType()==OP_BUY) {
       p=(Bid-OrderOpenPrice())/Point;
       if(OrderStopLoss()>0) {
        s=(OrderStopLoss()-OrderOpenPrice())/Point;
       }
      }
      
      if(OrderType()==OP_SELL) {
       p=(OrderOpenPrice()-Ask)/Point;
       if(OrderStopLoss()>0) {
        s=(OrderOpenPrice()-OrderStopLoss())/Point;
       }
      }
      
      sl+=s;
      profit+=p;
     
     }
    }
   }
   
   out=profit;
   outsl=sl;

}

int countOrders(int oType,bool allSymbols=false) {

   int count=0;
 
   for(int i=0;i<OrdersTotal();i++) {
    if(OrderSelect(i,SELECT_BY_POS)) {
     if(allSymbols || OrderSymbol()==Symbol()) {
      if(OrderType()==oType || oType<0) {
       count++;
      }
     }
    }
   }
   
   return(count);
 
}

string sign(double value) {
 
   if(value>0) {
    return("+");
   }
 
   if(value<0) {
    return("-");
   }

}
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Płaski
Gaduła
Gaduła
Posty: 131
Rejestracja: 05 cze 2008, 23:16

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Płaski »

Witam,
Chciałbym żeby pojawienie się strzałek buy i sell było sygnalizowane alertem.
Czy ktoś może podać formułę i gdzie ją wbić?
Podaję kod wskaźnika i sam wskaźnik...

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//| ReversalFractals.mq4
//| Copyright © Pointzero-indicator.com
//+------------------------------------------------------------------+
#property copyright "Copyright © Pointzero-indicator.com"
#property link      "http://www.pointzero-indicator.com"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue                
#property indicator_color2 Red                 
#define IName              "ReversalFractals"

//-------------------------------
// Input parameters
//-------------------------------
extern bool CalculateOnBarClose    = false;

//-------------------------------
// Buffers
//-------------------------------
double ExtMapBuffer1[];                         
double ExtMapBuffer2[];                         

//-------------------------------
// Internal variables
//-------------------------------

double last_signal = 0;
double last_action = OP_BUY;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
    // ZigZag signals
    SetIndexStyle(0, DRAW_ARROW, STYLE_DOT, 1);
    SetIndexArrow(0, 233);
    SetIndexBuffer(0, ExtMapBuffer1);
    SetIndexStyle(1, DRAW_ARROW, STYLE_DOT, 1);
    SetIndexArrow(1, 234);
    SetIndexBuffer(1, ExtMapBuffer2);
   
    // Data window
    IndicatorShortName("Reversal Fractals");
    SetIndexLabel(0, "Bullish reversal");
    SetIndexLabel(1, "Bearish reversal"); 
    
    // Copyright
    Comment("Copyright © http://www.pointzero-indicator.com");
    return(0);
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
    return(0);
  }
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    // Start, limit, etc..
    int start = 0;
    int limit;
    int counted_bars = IndicatorCounted();

    // nothing else to do?
    if(counted_bars < 0) 
        return(-1);

    // do not check repeated bars
    limit = Bars - 1 - counted_bars;
    
    // Check if ignore bar 0
    if(CalculateOnBarClose == true) start = 1;
    
    // Check the signal foreach bar from past to present
    for(int i = limit; i >= start; i--)
    {
        // Grab all fractals
        double upper_fractal_5b = upper_fractal_5b(i, true);
        double upper_fractal_7b = upper_fractal_7b(i, true);
        double lower_fractal_5b = lower_fractal_5b(i, true);
        double lower_fractal_7b = lower_fractal_7b(i, true);
            
        // Long 5bar reversal
        if(lower_fractal_5b != 0 && lower_fractal_5b != last_signal && last_action == OP_SELL)
        {
            ExtMapBuffer1[i+2] = lower_fractal_5b;
            last_signal = lower_fractal_5b;
            last_action = OP_BUY;
        } else 
        
        // Long 7bar reversal
        if(lower_fractal_7b != 0&& lower_fractal_7b != last_signal && last_action == OP_SELL)
        {
            ExtMapBuffer1[i+3] = lower_fractal_7b;
            last_signal = lower_fractal_7b;
            last_action = OP_BUY;
        } else 
         
        // Short 5bar reversal
        if(upper_fractal_5b != 0 && upper_fractal_5b != last_signal && last_action == OP_BUY)
        {
            ExtMapBuffer2[i+2] = upper_fractal_5b;
            last_signal = upper_fractal_5b;
            last_action = OP_SELL;
        } else 
        
        // Short 7bar reversal
        if(upper_fractal_7b != 0&& upper_fractal_7b != last_signal && last_action == OP_BUY)
        {
            ExtMapBuffer2[i+3] = upper_fractal_7b;
            last_signal = upper_fractal_7b;
            last_action = OP_SELL;
        }
        // Is in only a slow zigzag signal?
        // ExtMapBuffer2[i+2] = fr_t;
    
    }
    return(0);
}

//+------------------------------------------------------------------+
//| Custom code ahead
//+------------------------------------------------------------------+

/**
* Returns fractal resistance
* @param int shift
*/
double upper_fractal_7b(int shift = 1, bool bk = false)
{
   double middle = iHigh(Symbol(), 0, shift + 3);
   double v1 = iHigh(Symbol(), 0, shift);
   double v2 = iHigh(Symbol(), 0, shift+1);
   double v3 = iHigh(Symbol(), 0, shift+2);
   double v5 = iHigh(Symbol(), 0, shift + 4);
   double v6 = iHigh(Symbol(), 0, shift + 5);
   double v7 = iHigh(Symbol(), 0, shift + 6);
   double v1_c = iLow(Symbol(), 0, shift);
   double v7_c = iLow(Symbol(), 0, shift + 5);
   if((middle > v1 && 
      middle > v2 &&
      middle > v3 &&
      middle > v5 &&
      middle > v6 &&
      middle > v7) && (bk == false || v1_c < v7_c))
   {
      return(middle);
   } else {
      return(0);
   }
}

/**
* Returns fractal support and stores wether it has changed or not
* @param int shift
*/
double lower_fractal_7b(int shift = 1, bool bk = false)
{
   double middle = iLow(Symbol(), 0, shift + 3);
   double v1 = iLow(Symbol(), 0, shift);
   double v2 = iLow(Symbol(), 0, shift+1);
   double v3 = iLow(Symbol(), 0, shift+2);
   double v5 = iLow(Symbol(), 0, shift + 4);
   double v6 = iLow(Symbol(), 0, shift + 5);
   double v7 = iLow(Symbol(), 0, shift + 6);
   double v1_c = iHigh(Symbol(), 0, shift);
   double v7_c = iHigh(Symbol(), 0, shift + 5);
   if((middle < v1 && 
      middle < v2 &&
      middle < v3 &&
      middle < v5 &&
      middle < v6 &&
      middle < v7) && (bk == false || v1_c > v7_c))
   {
      return(middle);
   } else {
      return(0);
   }
}


/**
* Returns fractal resistance
* @param int shift
*/
double upper_fractal_5b(int shift = 1, bool bk = false)
{
   double middle = iHigh(Symbol(), 0, shift + 2);
   double v1 = iHigh(Symbol(), 0, shift);
   double v2 = iHigh(Symbol(), 0, shift+1);
   double v3 = iHigh(Symbol(), 0, shift + 3);
   double v4 = iHigh(Symbol(), 0, shift + 4);
   double v1_c = iLow(Symbol(), 0, shift);
   double v4_c = iLow(Symbol(), 0, shift + 3);
   if((middle > v1 && middle > v2 && middle > v3 && middle > v4) && (bk == false || v1_c < v4_c))
   {
      return(middle);
   } else {
      return(0);
   }
}

/**
* Returns fractal support and stores wether it has changed or not
* @param int shift
*/
double lower_fractal_5b(int shift = 1, bool bk = false)
{
   double middle = iLow(Symbol(), 0, shift + 2);
   double v1 = iLow(Symbol(), 0, shift);
   double v2 = iLow(Symbol(), 0, shift+1);
   double v3 = iLow(Symbol(), 0, shift + 3);
   double v4 = iLow(Symbol(), 0, shift + 4);
   double v1_c = iHigh(Symbol(), 0, shift);
   double v4_c = iHigh(Symbol(), 0, shift + 3);
   if((middle < v1 && middle < v2 && middle < v3 && middle < v4)  && (bk == false || v1_c > v4_c))
   {
      return(middle);
   } else {
      return(0);
   }
}
//+------------------------------------------------------------------+
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Arphenon
Uczestnik
Uczestnik
Posty: 2
Rejestracja: 11 sty 2013, 14:00

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Arphenon »

Witam wszystkich,
mam takie małe pytanie, czy w mt4 jest coś takiego jak zaznaczenie świecy? Precyzując, chciałbym sobie napisać mały skrypt który rysowałby na wykresie 4 linie (cenę otwarcia, zamknięcia, max, min) zaznaczonej świecy tylko zastanawiam się czy w mt4 coś takiego jak zaznaczanie świecy w ogóle występuje?

z6yszko
Gaduła
Gaduła
Posty: 266
Rejestracja: 17 sty 2011, 10:09

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: z6yszko »

Płaski pisze:Witam,
Chciałbym żeby pojawienie się strzałek buy i sell było sygnalizowane alertem.
Czy ktoś może podać formułę i gdzie ją wbić?
Podaję kod wskaźnika i sam wskaźnik...
Ulepszony.
Powinno działać
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Tsubasa
Bywalec
Bywalec
Posty: 10
Rejestracja: 26 gru 2011, 11:52

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Tsubasa »

Witam,
Jak zmienić zakładkę z nazwą waluty na dole platformy.

Np z "GBRUSD,H4" na "GU,H4"

Jest jakaś komenda do zmiany nazw wykresów??
Mam otwarte dużo wykresów i nie mieszczą mi się ich nazwy, muszę przewijać")

Awatar użytkownika
nemezzis
Gaduła
Gaduła
Posty: 152
Rejestracja: 12 lip 2010, 01:39

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: nemezzis »

Hej,
w jaki sposób ograniczyć liczenie wskaźnika do załóżmy 500-2000 świeczek wstecz, bo zamrożenia już mnie powoli... :evil:
Widziałem że w niektórych jest do wyboru ile wstecz jest pokazywany, a nie mam teraz żadengo takiego :(

thx.
Demo obrazuje mozliwosci Twego Umyslu.
Real - poziom zakucia.

ODPOWIEDZ