Problem z warunkami otwarcia pozycji

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
RafalT
Stały bywalec
Stały bywalec
Posty: 77
Rejestracja: 25 wrz 2010, 00:24

Problem z warunkami otwarcia pozycji

Nieprzeczytany post autor: RafalT »

Witam. Mam taki problem: mam jakieś tam warunki otwacia pozycji i

dla long jeden z warunków:

Kod: Zaznacz cały

Close[1]>Open[1]
i jest wszystko ok, jednak dla short warunek:

Kod: Zaznacz cały

Close[1]<Open[1]
powoduje że robot nie otwiera żadnych pozycji. Zakomentowanie tego jednego warunku i wszystko ok. Sprawdzałem kilka razy, warunki się wzajemnie nie zaprzeczają. W czym tkwi problem?

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

moze w samym wysylaniu zlecen OP_SELL??

pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

za malo infa, albo jest tak jak napisal Andrzej, albo po prosu w zlym miejscu postawiles ten warunek. Mozliwosci jest pare, ale ciezko tak zgadnac ;)

Awatar użytkownika
RafalT
Stały bywalec
Stały bywalec
Posty: 77
Rejestracja: 25 wrz 2010, 00:24

Nieprzeczytany post autor: RafalT »

Wrzucam całe funkcje odpowiedzialne za otwieranie pozycji. Czy problem tkwi w samej operacji OP SELL jak napisał Andrzej nie wydaje mi się, po zakomentowaniu tylko Close[1]<Open[1] zlecenie otwiera się poprawnie.

Kod: Zaznacz cały

if(inne warunki && MathAbs(Close[2]-Open[2])<MathAbs(Open[1]-Close[1])  && Close[1]>Open[1]             && opoznienie(delay)    && countOrders()<1    )
     {   {
        
         ticket=OrderSend(Symbol(),OP_BUY, Lots ,Ask,3,(Ask-(MathAbs(High[1]-Low[1]))),Ask+MathAbs(Open[1]-Close[1]),"RSI_EMA",16000,0,Green);
         // return(0); 
        }
      // check for short position (SELL) possibility
if(     inne warunki && MathAbs(Close[2]-Open[2])<MathAbs(Open[1]-Close[1])   &&  Close[1]<Open[1]               && opoznienie(delay)    && countOrders()<1    )
        {
         ticket=OrderSend(Symbol(),OP_SELL, Lots ,Bid,3,(Bid+((MathAbs(High[1]-Low[1])))),(Bid-(MathAbs(Open[1]-Close[1]))),"RSI_EMA",16000,0,Red);
       //  return(0); 
        }

PS: Jeśli w funkcji sell podam warunek Close[1]>Open[1] to działa, jeślizmienię znak z > na < to przestaje.Wynikało by z tego że gdzieś w if są warunki przeciwstawne ale ja tam niczego takiego nie widzę niestety.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

a gdzie jest zamkniecie pierwszej { ? (tego z 3 linijki) bo cos mi tu nie pasuje

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

jestes pewien ze funkcja

Kod: Zaznacz cały

countOrders()
jest mniejsza od 1 ??

i ze

Kod: Zaznacz cały

MathAbs(High[1]-Low[1])
jest na tyle duze zeby mozna bylo otworzyc transakcje ??

pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
RafalT
Stały bywalec
Stały bywalec
Posty: 77
Rejestracja: 25 wrz 2010, 00:24

Nieprzeczytany post autor: RafalT »

Pierz Andrzej pisze:jestes pewien ze funkcja

Kod: Zaznacz cały

countOrders()
jest mniejsza od 1 ??

i ze

Kod: Zaznacz cały

MathAbs(High[1]-Low[1])
jest na tyle duze zeby mozna bylo otworzyc transakcje ??

pzdr Andrzej
Co do pierwszego tak, ea ma otwierać pozycje tylko wtedy jeśli nie ma aktualnie otwartych.

Co do drugiego testując na historii nie otwiera tam gdzie świeca spełnia warunek, nie mówiąc już o tym, że bez linijki
Close[1]<Open[1]
ea otwiera poprawnie sell, więc warunek MathAbs(High[1]-Low[1] jest ok.

W jaki inny sposób można zdefiniować warunek równoznaczny

Close[1]<Open[1]===świeca malejąca?

Wszelkie kombinacje close-open<0 również nie działają.



LowcaG pisze:a gdzie jest zamkniecie pierwszej { ? (tego z 3 linijki) bo cos mi tu nie pasuje
EA zamyka pozycję SL lub TP, do tego czasu nie otwiera żadnych nowych pozycji.




PS: Nie otwiera pozycji nawet z takim warunkiem

Kod: Zaznacz cały

if(       Close[1]<Open[1]) 
Czy może to ktoś sprawdzić u siebie, może coś z softwarem mam nie tak.

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

wrzuc

Kod: Zaznacz cały

Comment(Close[1]-Open[1]);
na visualu i zobacz co Ci pokazuje jak jest swieca spadkowa ??

bo moze faktycznie cos nie teges z mt4 ;)

pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
RafalT
Stały bywalec
Stały bywalec
Posty: 77
Rejestracja: 25 wrz 2010, 00:24

Nieprzeczytany post autor: RafalT »

LowcaG rozwiązał problem:

zauważył że drugi if siedzi w pierwszym.

Dzięki wielkie za pomoc!

ODPOWIEDZ