Nie działa if

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Fesiek
Pasjonat
Pasjonat
Posty: 579
Rejestracja: 07 lis 2009, 15:32

Nie działa if

Nieprzeczytany post autor: Fesiek »

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??

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

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ć..

Awatar użytkownika
Fesiek
Pasjonat
Pasjonat
Posty: 579
Rejestracja: 07 lis 2009, 15:32

Nieprzeczytany post autor: Fesiek »

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ć.

fx_rambo
Gaduła
Gaduła
Posty: 194
Rejestracja: 19 sty 2010, 17:11

Nieprzeczytany post autor: fx_rambo »

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);
}
//+------------------------------------------------------------------+

Awatar użytkownika
reptile
Maniak
Maniak
Posty: 2799
Rejestracja: 13 gru 2008, 13:48

Nieprzeczytany post autor: reptile »

Fesiek

Kod: Zaznacz cały

if (Bid==OpenH1-5*point)
http://www.forex.nawigator.biz/dyskusje ... 560#222560

Używać znaczników

Kod: Zaznacz cały

code 
do jasnej ciasnej
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Nieprzeczytany post autor: NiceFox »

Rambo u mnie wyświetla się ok. Czy czegoś brakuje na wykresie?
Pieniądze rosną na drzewie cierpliwości.

Awatar użytkownika
Fesiek
Pasjonat
Pasjonat
Posty: 579
Rejestracja: 07 lis 2009, 15:32

Nieprzeczytany post autor: Fesiek »

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:

Kod: Zaznacz cały

double OpenH1 = iOpen(NULL,PERIOD_H1,0); 
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.
Ostatnio zmieniony 13 wrz 2010, 23:07 przez Fesiek, łącznie zmieniany 1 raz.

fx_rambo
Gaduła
Gaduła
Posty: 194
Rejestracja: 19 sty 2010, 17:11

Nieprzeczytany post autor: fx_rambo »

NiceFox pisze:Rambo u mnie wyświetla się ok. Czy czegoś brakuje na wykresie?
niczego nie brakuje zmień tf na m5 albo na m1 i zobaczysz problem
tunel zostaje za wykresem

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Nieprzeczytany post autor: NiceFox »

Ale to przecież oczywiste wskaźnik repaintuje bo taka jest jego konstrukcja.
Jak wrzucisz średnią na to na każdym TF-ie będzie innaczej, bo do liczenia średniej są inne słupki.
Pieniądze rosną na drzewie cierpliwości.

fx_rambo
Gaduła
Gaduła
Posty: 194
Rejestracja: 19 sty 2010, 17:11

Nieprzeczytany post autor: fx_rambo »

czyli nie da się tego poprawić?

ODPOWIEDZ