Nie działa if
Nie działa if
Witam.
Poznaję tajniki mql i napotkałem taki problem.
Chcę wiedzieć jaka była cena otwarcia świeczki godzinowej. W Helpie i we wskaźniku znalazłem taki fragment kodu:
void CheckForOpen()
{
int res;
int counted_bars=IndicatorCounted();
int limit;
//----
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for (int i=0; i<limit; i++)
{
int BarShift = iBarShift(NULL,PERIOD_H1,Time,true);
double OpenH1 = iOpen(NULL,PERIOD_H1,BarShift);
}
Po tym fragmencie wskaźnik rysuje linie a ja chcę wejść w pozycję więc wprowadzam kod:
if (Bid==OpenH1-5*point)
{ res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+strata*Point,Bid-zysk*Point,"",MAGICMA,0,Blue);
return;
}
I teraz tak. Jak wezmę if (Bid==OpenH1-5*point) w kometnarz to EA otwiera pozycję pa pierwszym barze i zamyka na SL albo TP i natychmiast otwiera następną. Ale jak If jest w kodzie to EA nic nie otwiera.
Dlaczego ten if nie działa??
Poznaję tajniki mql i napotkałem taki problem.
Chcę wiedzieć jaka była cena otwarcia świeczki godzinowej. W Helpie i we wskaźniku znalazłem taki fragment kodu:
void CheckForOpen()
{
int res;
int counted_bars=IndicatorCounted();
int limit;
//----
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for (int i=0; i<limit; i++)
{
int BarShift = iBarShift(NULL,PERIOD_H1,Time,true);
double OpenH1 = iOpen(NULL,PERIOD_H1,BarShift);
}
Po tym fragmencie wskaźnik rysuje linie a ja chcę wejść w pozycję więc wprowadzam kod:
if (Bid==OpenH1-5*point)
{ res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+strata*Point,Bid-zysk*Point,"",MAGICMA,0,Blue);
return;
}
I teraz tak. Jak wezmę if (Bid==OpenH1-5*point) w kometnarz to EA otwiera pozycję pa pierwszym barze i zamyka na SL albo TP i natychmiast otwiera następną. Ale jak If jest w kodzie to EA nic nie otwiera.
Dlaczego ten if nie działa??
No EA nic nie otwiera bo ciężko aby cena była zgodna co do pisa. Z reguły to musi być warunek "oplatający" czyli sprawdzasz czy cena była pod na poprzedniej świecy u czy jest równa lub nad ceną (dla longa) no i czy nie zawiera kolejnej transakcji na świece
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Cena zazwyczaj jest na poziomie zadanym w warunku. Przeglądałem najpierw wykres na żywo i cena jest na poziomie 5 pipsów od otwarcia. Kłopot w tym, że tu chodzi o skalpowanie i ciężko składać zlecenia oczekujące nie mówiąc już o składaniu ich z ręki.
Nawet na próbę zadałem warunek: if(OpenH1>1.0) i też EA nie otwiera pozycji. Coś mi tu nie gra z Tą zmienną OpenH1 ale nie wiem co jej może dolegać.
Nawet na próbę zadałem warunek: if(OpenH1>1.0) i też EA nie otwiera pozycji. Coś mi tu nie gra z Tą zmienną OpenH1 ale nie wiem co jej może dolegać.
witam
mam mały problem z kodem
nie wiem co w nim brakuje?
indyk się nie odświeża, zostaje za świeczkami
może jakiś fachowiec rzuci na to okiem
z góry dziękuję
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 GreenYellow
//----
extern int per=60;
extern int delta=10;
extern int korr=0;
//---- buffers
double Buffer1[];
double Buffer2[];
double TB[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(3);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,indicator_color1);
SetIndexBuffer(0,Buffer1);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,indicator_color2);
SetIndexBuffer(1,Buffer2);
SetIndexBuffer(2,TB);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
//----
int limit=Bars-per-counted_bars;
//----
for(int i=limit; i>=0; i--)
{
Buffer1=iMA(NULL,0,per,0,MODE_EMA,PRICE_HIGH,i) + delta*Point + korr*Point;
Buffer2=iMA(NULL,0,per,0,MODE_EMA,PRICE_LOW,i) - delta*Point + korr*Point;
Comment(limit," ",Close[0]," ",TB[0]," ",delta*Point," ",korr*Point);
}
//----
return(0);
}
//+------------------------------------------------------------------+
mam mały problem z kodem
nie wiem co w nim brakuje?
indyk się nie odświeża, zostaje za świeczkami
może jakiś fachowiec rzuci na to okiem
z góry dziękuję
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 GreenYellow
//----
extern int per=60;
extern int delta=10;
extern int korr=0;
//---- buffers
double Buffer1[];
double Buffer2[];
double TB[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(3);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,indicator_color1);
SetIndexBuffer(0,Buffer1);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,indicator_color2);
SetIndexBuffer(1,Buffer2);
SetIndexBuffer(2,TB);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
//----
int limit=Bars-per-counted_bars;
//----
for(int i=limit; i>=0; i--)
{
Buffer1=iMA(NULL,0,per,0,MODE_EMA,PRICE_HIGH,i) + delta*Point + korr*Point;
Buffer2=iMA(NULL,0,per,0,MODE_EMA,PRICE_LOW,i) - delta*Point + korr*Point;
Comment(limit," ",Close[0]," ",TB[0]," ",delta*Point," ",korr*Point);
}
//----
return(0);
}
//+------------------------------------------------------------------+
Fesiek
Używać znacznikówdo jasnej ciasnej
http://www.forex.nawigator.biz/dyskusje ... 560#222560Kod: Zaznacz cały
if (Bid==OpenH1-5*point)
Używać znaczników
Kod: Zaznacz cały
code
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)
OK. Poradziłem sobie.
W miejscu gdzie do zmiennej OpenH1 chcę przypisać cenę otwarcia nie trzeba tyle kodu. Poprzedzające linijki są nie potrzebne. Wystarczy:
Dziękuję.
Aha. Czasami mimo że są spełnione warunki handlu nie EA nie handluje ale może sobie z tym poradzę.
Pipsów życzę.
Z tym, że EA nie handluje czasami już sobie poradziłem.
W miejscu gdzie do zmiennej OpenH1 chcę przypisać cenę otwarcia nie trzeba tyle kodu. Poprzedzające linijki są nie potrzebne. Wystarczy:
Kod: Zaznacz cały
double OpenH1 = iOpen(NULL,PERIOD_H1,0);
Aha. Czasami mimo że są spełnione warunki handlu nie EA nie handluje ale może sobie z tym poradzę.
Pipsów życzę.
Z tym, że EA nie handluje czasami już sobie poradziłem.
Ostatnio zmieniony 13 wrz 2010, 23:07 przez Fesiek, łącznie zmieniany 1 raz.