Prosba o pomoc w napisaniu prostego if-a
Prosba o pomoc w napisaniu prostego if-a
Witam, próbuje napisać kod, aby zautoamtyzowac swoją strategie na inwestowanie i potrzebuje małej pomocy a mianowicie:
Moja strategia ogranicza mnie do posiadania maksymalnie tylko jednej otwartej pozycji (zabezpiecza mi to funkcja OrdersTotal()). Aby otworzyć kolejną, otwarta pozycja musi zakończyć sie SL albo TP (nigdy nie zamykam ich przez OrderClose())
Moja prośba jest następująca. Podpowie mi ktoś jak poprzez prostego if-a znaleźć moment, w którym otwarta pozycja zamknęła sie SL || TP ?
Za wszelka pomoc z góry pięknie dziękuje.
Moja strategia ogranicza mnie do posiadania maksymalnie tylko jednej otwartej pozycji (zabezpiecza mi to funkcja OrdersTotal()). Aby otworzyć kolejną, otwarta pozycja musi zakończyć sie SL albo TP (nigdy nie zamykam ich przez OrderClose())
Moja prośba jest następująca. Podpowie mi ktoś jak poprzez prostego if-a znaleźć moment, w którym otwarta pozycja zamknęła sie SL || TP ?
Za wszelka pomoc z góry pięknie dziękuje.
Np tak:enjoy_xx pisze:Moja prośba jest następująca. Podpowie mi ktoś jak poprzez prostego if-a znaleźć moment, w którym otwarta pozycja zamknęła sie SL || TP ?
w start:
Kod: Zaznacz cały
static int ostatnioPozycji=0;
int terazPozycji=OrdersTotal();
if(ostatnioPozycji>terazPozycji)
{
//.. zamknieto pozycje
}
ostatnioPozycji=terazPozycji;
http://www.forex.nawigator.biz/dyskusje ... php?t=6208
http://www.forex.nawigator.biz/dyskusje ... 7&start=10
http://www.forex.nawigator.biz/dyskusje ... 5&start=10
======================================================
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ć..
Dziekuje za szybka odpowiedz.
Ale troszke niezrozumiale napisalem. Chodzi mi o takiego ifa zebym wiedzial czy pozycja zakonczyla sie przez SL czy TP. Tzn jak zakonczyla sie tp to nic dalej nie rob ale jak zamknela sie sl to musze otworzyc odrazu nastepna.
Przepraszam za brak polskich znakow, pisze z androida.
Ale troszke niezrozumiale napisalem. Chodzi mi o takiego ifa zebym wiedzial czy pozycja zakonczyla sie przez SL czy TP. Tzn jak zakonczyla sie tp to nic dalej nie rob ale jak zamknela sie sl to musze otworzyc odrazu nastepna.
Przepraszam za brak polskich znakow, pisze z androida.
Jeśli zakładasz że tylko tak zamykasz pozycje (tylko przez TP czy SL - jak podałeś) to powyższa funkcja spełnia to założenie - rozpoznaje moment zamknięcia pozycji.enjoy_xx pisze:Chodzi mi o takiego ifa zebym wiedzial czy pozycja zakonczyla sie przez SL czy TP.
======================================================
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ć..
Ale co chcesz odróżniać jak nie robisz nic na transakcjach? Koncepcji jest kilka jeśli chcesz sprawdzić czy zamknęło się na TP czy na SL.enjoy_xx pisze:A jak odroznic czy zakonczyla sie sl czy tp. Wstawic w warunek && Bid == sl?
Możesz np zapamiętywać wartość kapitały, a najbardziej uniwersalne byłoby przejrzenie historii transakcji, wyszukanie ostatniej i sprawdzenie OrderProfit()
Kod: Zaznacz cały
static int ostatnioPozycji=0;
int terazPozycji=OrdersTotal();
if(ostatnioPozycji>terazPozycji)
{
// zamknieto pozycje sprawdzanie czy TP czy SL
bool first=true;
int lastZysk=0;
for(int i=0;i<OrdersHistoryTotal();i++)
{
if(!OrderSelect(i,SELECT_BY_TICKET,MODE_HISTORY)) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(first)
{
datetime data=OrderCloseTime();
first=false;
lastZysk=OrderProfit();
}
if(OrderCloseTime()>data)
{
data=OrderCloseTime();
lastZysk=OrderProfit();
}
}
}
if(lastZysk>0)
{
// zamknieto na TP
}
if(lastZysk<0)
{
// zamknieto na SL
}
}
ostatnioPozycji=terazPozycji;
======================================================
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ć..
można tak
Ogólnie to nr po którym rozpoznajesz swoje trady (dodajesz do funckji wysyłania zlecenia i sprawdzania. Ale skoro go nie używasz to ustaw go na 0 (taki jest domyślny).
Kod: Zaznacz cały
int MAGICMA =0;
======================================================
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ć..
A może inaczej. W momencie otwierania pozycji zapamiętuj cenę. Jeśli liczba transakcji wyniesie 0, a cena Bid jest powyżej tej zapamietanej to oznacza, że bylo TP, jak poniżej to SL. Dla transakcji SELL odwrotnie.
Kod: Zaznacz cały
double cenaB = 0;
double cenaS = 0;
void start()
if(...warunki dla BUY){Open_BUY;cenaB=Bid;}
if(...warunki dla SELL){Open_SELL;cenaS=Bid;}
if(total(OP_BUY)==0&&Bid>cenaB)...//zaliczył TP
if(total(OP_BUY)==0&&Bid<cenaB)...//zaliczył SL
if(total(OP_SELL)==0&&Bid<cenaS)...//zaliczył TP
if(total(OP_SELL)==0&&Bid>cenaS)...//zaliczył SL
////////////////////////////////////////////////////////////////////////////////////////
int total(int cmd)
{int sum=0;
for(int i=0;i<=OrdersTotal();i++)
{OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&cmd==OrderType()) sum++;
}return(sum);}
Solą życia jest kasa.