wskaźnik przełączany przez EA

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

wskaźnik przełączany przez EA

Nieprzeczytany post autor: personov »

Witam. Chciałbym, aby moje EA, które opiera się głównie na wskaźniku CCI
otwierało tylko jedną transakcję po otrzymaniu sygnału, a po zrealizowaniu go - mimo tego, że warunki pozwalają nadal na otwarcie transakcji - czekało, aż CCI przekroczy lub zahaczy o "0" i dopierao czekało na sygnał i znowu otwierało tylko jedną transakcję i tak cały czas.
Pomyślałem o czymś w rodzaju wskaźnika on/off .
I teraz pytanie :
czy jest możliwe, aby warunek wyglądał w ten sposób:

Kod: Zaznacz cały

if(.....&& wskaźnik=on && CCI>level.....) send(OP_BUY ) && wskaźnik = off; 
a jak CCI przekroczy lub zrówna się z 0 to ustawia wskaźnik na "on".
A może jest na to prostszy sposób ?
Solą życia jest kasa.

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

Nieprzeczytany post autor: Tig3r »

bool lub int X;

gdy X równa zero - zezwala na trade
gdy zawrze transakcję ustawia X na 1
gdy CCI przetnie 0 ustawia X na 0

tak najprościej
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Tig3r pisze:bool lub int X;

gdy X równa zero - zezwala na trade
gdy zawrze transakcję ustawia X na 1
gdy CCI przetnie 0 ustawia X na 0

tak najprościej
Właśnie o to mi chodzi tylko w jaki sposób , jakim poleceniem ma to przełączać ?
Czy można to zapisać po warunku otwarcia ?

Kod: Zaznacz cały

if(.....&& X==0 && CCI>level.....) send(OP_BUY ) && X=1;
Solą życia jest kasa.

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

Nieprzeczytany post autor: Tig3r »

No tak warunkami IF
sprawdzasz 3 zdarzenia
każde osobno

tzn:
1. osobno zerujesz
2. przy zawieraniu transakcji sprawdzasz - jak podałeś powyżej + jeszcze sprawdzanie ile jest otwartych transakcji (jeśli chcesz aby tylko 1 był na raz)
3. po zawarciu transakcji zmieniasz znacznik
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Pierwsze 2 punkty mam. Ale trzeci nie wiem jak określić : jeśli została zawarta transakcja - przestaw X na 1.

Kod: Zaznacz cały

if( send(OP_BUY))X=1;
nie pasuje
Solą życia jest kasa.

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

Nieprzeczytany post autor: Tig3r »

nie po prostu

Kod: Zaznacz cały

int wynik=OrderSend(...
if(wynik>1) X=1;
czyli gdy transakcja zostanie otwarta - można by było od razu po wysłaniu zlecenia ale trzeba mieć pewność że trade się otworzył
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

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

Nieprzeczytany post autor: LowcaG »

w skrocie (improwizuje, ale mam nadzieje, ze cos pomoze)

Kod: Zaznacz cały

bool dzialaj = true;

int start(){

    double cci = iCustom.....
    int  total = OrdersTotal();

   if(!dzialaj){
     if (cci<=0) dzialaj=true;
   }

   if ( (total == 0) && (dzialaj) && (cci > level) ){
      int ticket=OrderSend(... 
      if(ticket>0) dzialaj=false;;

   }

}

Chociaz, nie uwzglednilem tutaj dwoch stron CCI, bo rozumiem, ze oddzielnie bedzie dla buy a odzdielnie do sell?

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

Nieprzeczytany post autor: Tig3r »

LowcaG
Chodziło o przecięcie CCI (bo jak sądze zawierane są też na poziomie niskiego CCI transakcje) czego u Ciebie brak - tak tylko informacyjnie..
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

LowcaG pisze:w skrocie (improwizuje, ale mam nadzieje, ze cos pomoze)

Kod: Zaznacz cały

bool dzialaj = true;

int start(){

    double cci = iCustom.....
    int  total = OrdersTotal();

   if(!dzialaj){
     if (cci<=0) dzialaj=true;
   }

   if ( (total == 0) && (dzialaj) && (cci > level) ){
      int ticket=OrderSend(... 
      if(ticket>0) dzialaj=false;;

   }

}

Chociaz, nie uwzglednilem tutaj dwoch stron CCI, bo rozumiem, ze oddzielnie bedzie dla buy a odzdielnie do sell?
Tak, odzielni dla Sell i Buy.

Kod: Zaznacz cały

if(!dzialaj){
     if (cci<=0) dzialaj=true;
   }
musi być wtedy dla Sell odwrotnie, a to się będzie wykluczało.
Solą życia jest kasa.

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

Nieprzeczytany post autor: LowcaG »

Tig3r pisze:Chodziło o przecięcie CCI (bo jak sądze zawierane są też na poziomie niskiego CCI transakcje) czego u Ciebie brak - tak tylko informacyjnie..
A niedoczytalem ;)

no to poprawione (Dalej improwizacja pseudokod), troche malo optymalnie ale mam 3 minutki:

Kod: Zaznacz cały

int status = 0; 

int start(){ 
    int ticket;
    double cci = iCustom..... 
    int  total = OrdersTotal(); 

   if(status > 0){ 
      if (cci<=0) status=0; 
   }else if(status < 0){
      if (cci>=0) status=0; 
  } 

   if ( (total == 0) && (status==0) && (cci > level_buy) ){ 
      ticket=OrderSend(BUY)..
      if(ticket>0) status = 1; 
   } 

   if ( (total == 0) && (status==0) && (cci < level_sell) ){ 
      ticket=OrderSend(SELL)..
      if(ticket>0) status = -1; 
   } 

} 

Mam nadzieje, ze o to chodzilo ;)

ODPOWIEDZ