SL na BE przy odpowiedniej wartości wskaźnika
SL na BE przy odpowiedniej wartości wskaźnika
Witam, czy da się i ktoś uprzejmy byłby w stanie napisać prostą strategię bądź skrypt, który przestawiałby SL na BE w momencie kiedy CCI osiągnie daną wartość? Wartości musiałby być różne dla Buy i Sell.
Re: SL na BE przy odpowiedniej wartości wskaźnika
tu masz skrypt. powinno dzialac ale nie sprawdzalem /kompiluje sie bez bledow/. opisy bledow modyfikacji zlecenia znajdziesz w zakladce strategie w MT4. jak cos bedzie nie tak to pisz tutaj. przeczytaj komentarz w kodzie
PS. napisalem zeby nie zapomniec o co chodzi w mql, a nie mam ciekawych pomyslow i czasu mam troche wiecej. jesli chcesz miec to w EA to bedziesz musial wrzucic to sam.
Kod: Zaznacz cały
#import "stdlib.ex4"
string ErrorDescription(int error_code);
#property show_inputs
extern int Magic = 0;
extern double BuyCCI = 100;
extern double SellCCI = -100;
extern string comment = "CCI_price: 0-close,1-open,2-high,3-low,...";
extern int CCI_period = 12;
extern int CCI_price = 0;
extern int CCI_shift = 0;
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start() {
for(int i=0; i<OrdersTotal(); i++) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
if(iCCI(Symbol(),0,CCI_period,CCI_price,CCI_shift) >= BuyCCI && OrderType() == OP_BUY) {
if(OrderStopLoss() + 20*Point < OrderClosePrice() && OrderTakeProfit() - 20*Point < OrderClosePrice()) //20*Point to odleglosc od ceny, zawsze limitowana przez brokera. sprawdz to bo pisze kod ale bledow logicznych nie sprawdzam
if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,CLR_NONE)) {
PlaySound("ok");
continue;
}
else {
PlaySound("timeout");
Print("Blad modyfikacji pozycji. ",ErrorDescription(GetLastError()));
break;
}
}
if(iCCI(Symbol(),0,CCI_period,CCI_price,CCI_shift) <= SellCCI && OrderType() == OP_SELL) {
if(OrderStopLoss() - 20*Point > OrderClosePrice() && OrderTakeProfit() + 20*Point < OrderClosePrice()) //20*Point to odleglosc od ceny, zawsze limitowana przez brokera. sprawdz to bo pisze kod ale bledow logicznych nie sprawdzam
if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,CLR_NONE)) {
PlaySound("ok");
continue;
}
else {
PlaySound("timeout");
Print("Blad modyfikacji pozycji. ",ErrorDescription(GetLastError()));
break;
}
}
}
}
return(0);
}
oszczedzajmy cykle procesora
Re: SL na BE przy odpowiedniej wartości wskaźnika
Dzięki, niestety nie działa
Dostaję taki komunikat w logu:

Kod: Zaznacz cały
09:42:47 SLonBE EURUSD.arm,M5: loaded successfully
09:42:51 SLonBE EURUSD.arm,M5 inputs: Magic=0; BuyCCI=100; SellCCI=-100; comment="CCI_price: 0-close,1-open,2-high,3-low,..."; CCI_period=7; CCI_price=1; CCI_shift=0;
09:42:51 SLonBE EURUSD.arm,M5: uninit reason 0
09:42:51 SLonBE EURUSD.arm,M5: removed
Re: SL na BE przy odpowiedniej wartości wskaźnika
Pomyśl jeszcze nad tym, czy CCI ma być tam po zamknięciu świecy czy w trakcie jej tworzenia bo to może dużo zmienić.
Powodzenia.
Ja programować nie umiem.
Powodzenia.
Ja programować nie umiem.
Re: SL na BE przy odpowiedniej wartości wskaźnika
Siema polbanda
akurat tutaj, chodzi o chwilową wartość, i nie ma znaczenia czy jest to w trakcie tworzenia czy po zamknięciu 


Re: SL na BE przy odpowiedniej wartości wskaźnika
Siema, siema.
No w sumie tak. Jak będziesz chciał zbadać wyniki historyczne, to przestawisz sobie CCI, żeby reagował na high/low.
Składnik nowego systemu ?
No w sumie tak. Jak będziesz chciał zbadać wyniki historyczne, to przestawisz sobie CCI, żeby reagował na high/low.
Składnik nowego systemu ?
Re: SL na BE przy odpowiedniej wartości wskaźnika
No coś tam rzeźbie, ale długa droga przede mną 

Re: SL na BE przy odpowiedniej wartości wskaźnika
Dzięki, nawzajem 
