progresja

O jezykach programowania w platformach i nie tylko.
swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

progresja

Nieprzeczytany post autor: swer »

Witam!
Chcialem sobie takiego martyngala zrobic ktory po zlapaniu SL bedzie ustawial zlecenie n-razy wieksze.

Kod: Zaznacz cały

if(OrdersTotal()<1)
  {
  if (equity <= AccountEquity())
     {
      if(stan == 1  && Bid>banda1 && stoch>80 )
      {
       OrderSend(Symbol(),OP_SELL,lot,Bid,3,SL,TP,"",3,0,Red);
      } 
  if(stan == 1 && Ask<banda2 && stoch<20 ) 
      {
       OrderSend(Symbol(),OP_BUY,lot,Ask,3,SL,TP,"",1,0,Blue); 
      } 
   }
  
if (equity > AccountEquity())
  	{   
     if(stan == 1  && Bid>banda1 && stoch>80 )
     {
         OrderSend(Symbol(),OP_SELL,lot2,Bid,3,SL,TP,"",3,0,Red);
     }
     if(stan == 1 && Ask<banda2 && stoch<20 ) 
      {
         OrderSend(Symbol(),OP_BUY,lot2,Ask,3SL,TP,"",1,0,Blue);
      }
    }
 }
W init() mam equity = AccountEquity()
Chcialbym zeby po TP byla pierwsza czesc spelniana z wielkoscia lota "lot"
a po SL druga czesc z wielkoscia lota "lot2"

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Re: progresja

Nieprzeczytany post autor: CoVal »

swer pisze:Witam!
Chcialem sobie takiego martyngala zrobic ktory po zlapaniu SL bedzie ustawial zlecenie n-razy wieksze.

Kod: Zaznacz cały

if(OrdersTotal()<1)
  {
  if (equity <= AccountEquity())
     {
      if(stan == 1  && Bid>banda1 && stoch>80 )
      {
       OrderSend(Symbol(),OP_SELL,lot,Bid,3,SL,TP,"",3,0,Red);
      } 
  if(stan == 1 && Ask<banda2 && stoch<20 ) 
      {
       OrderSend(Symbol(),OP_BUY,lot,Ask,3,SL,TP,"",1,0,Blue); 
      } 
   }
  
if (equity > AccountEquity())
  	{   
     if(stan == 1  && Bid>banda1 && stoch>80 )
     {
         OrderSend(Symbol(),OP_SELL,lot2,Bid,3,SL,TP,"",3,0,Red);
     }
     if(stan == 1 && Ask<banda2 && stoch<20 ) 
      {
         OrderSend(Symbol(),OP_BUY,lot2,Ask,3SL,TP,"",1,0,Blue);
      }
    }
 }
W init() mam equity = AccountEquity()
Chcialbym zeby po TP byla pierwsza czesc spelniana z wielkoscia lota "lot"
a po SL druga czesc z wielkoscia lota "lot2"

jesli chcesz uzaleznic wielkosc pozycji od wyniku ostatniej transakcji, to musisz wiedziec czy byla ona zyskowna, czy stratna.
mozesz to zrobic albo poprzez wyselekcjonowanie ostatniej transakcji przy pomocy OrderSelect() z MODE_HISTORY i wtedy sprawdzic OrderProfit(),

albo latwiej i szybciej wprowadzic zmienna ktora bedzie zawsze przechowywala biezacy zysk; w chwili zamkniecia pozycji zmienna ta bedzie miala ostatnia wartosc ujemna i w taki sposob sobie mozesz sprawdzic czy ostatnia pozycja zamknela sie ze strata czy z zyskiem:
czyli np.:

Kod: Zaznacz cały

if(OrdersTotal>0) lastProfit=AccountProfit();
i potem przed otwarciem nowej pozycji ustalasz wielkosc lota:

Kod: Zaznacz cały

if(lastProfit<0) lotSize*=2;

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Nieprzeczytany post autor: swer »

thx CoVal dziala jak nalezy

Dodano po 17 godzinach 21 minutach:

Mam jeszcze jedno pytanie,
jak by to zrobic zeby po drugiej stracie otworzyla sie pozycja tak samo wieksza jak druga czyli

np.
kazda pozycja ma tp 10 sl 20
1) lot - 0.1 padlo sl
2) lot - 0.1 * 2
3) lot - 0.1 * 4
i ewentualnie
4) lot - 0.1 * 8

myslalem zeby dodac jakas zmienna licznik ktora zliczalaby ile padlo stratnych pozycji tylko nie wiem jak to ogarnac, jakas wskazowki?

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

Nieprzeczytany post autor: Tig3r »

swer pisze:jak by to zrobic zeby po drugiej stracie otworzyla sie pozycja tak samo wieksza jak druga czyli
albo zapamiętujesz wartość ostatniego LOT'a z jakim ślesz tranakcje albo szukasz w historii transakcji tej ostatniej i jej wartość LOT'a
pierwszy wariant szybszy, drugi odporny na "ponowne uruchamianie EA"
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

ODPOWIEDZ