Wszystkie pytania dozwolone początkujących programistów
Re: Wszystkie pytania dozwolone początkujących programistów
Jest weekend, więc może broker ma kosmiczne limity na takie rzeczy.
Solą życia jest kasa.
Re: Wszystkie pytania dozwolone początkujących programistów
Skrypt, ostatnia pozycja pokazuje, jaki odstęp broker dopuszcza od ceny.
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.
Re: Wszystkie pytania dozwolone początkujących programistów
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?
Re: Wszystkie pytania dozwolone początkujących programistów
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
mike, ciekawy skrypt, ale ostatnie rzeczy to spread 80 pkt i poziom SL/TP: 1. więc nie bardzo rozumiem
Mql minimal techno remix
Re: Wszystkie pytania dozwolone początkujących programistów
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
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.
Re: Wszystkie pytania dozwolone początkujących programistów
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...
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.
Re: Wszystkie pytania dozwolone początkujących programistów
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?
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?
Re: Wszystkie pytania dozwolone początkujących programistów
Ulepszony.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...
Powinno działać
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: Wszystkie pytania dozwolone początkujących programistów
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ć")
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ć")
Re: Wszystkie pytania dozwolone początkujących programistów
Hej,
w jaki sposób ograniczyć liczenie wskaźnika do załóżmy 500-2000 świeczek wstecz, bo zamrożenia już mnie powoli...
Widziałem że w niektórych jest do wyboru ile wstecz jest pokazywany, a nie mam teraz żadengo takiego
thx.
w jaki sposób ograniczyć liczenie wskaźnika do załóżmy 500-2000 świeczek wstecz, bo zamrożenia już mnie powoli...

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.
Real - poziom zakucia.