SL na BE przy odpowiedniej wartości wskaźnika

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
xspojlerx
Pasjonat
Pasjonat
Posty: 411
Rejestracja: 06 sty 2010, 15:54

SL na BE przy odpowiedniej wartości wskaźnika

Nieprzeczytany post autor: xspojlerx »

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.

bialy
Stały bywalec
Stały bywalec
Posty: 54
Rejestracja: 16 maja 2011, 20:41

Re: SL na BE przy odpowiedniej wartości wskaźnika

Nieprzeczytany post autor: bialy »

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

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);
}
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.
oszczedzajmy cykle procesora

Awatar użytkownika
xspojlerx
Pasjonat
Pasjonat
Posty: 411
Rejestracja: 06 sty 2010, 15:54

Re: SL na BE przy odpowiedniej wartości wskaźnika

Nieprzeczytany post autor: xspojlerx »

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

expedient warzywniaka

Re: SL na BE przy odpowiedniej wartości wskaźnika

Nieprzeczytany post autor: expedient warzywniaka »

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.

Awatar użytkownika
xspojlerx
Pasjonat
Pasjonat
Posty: 411
Rejestracja: 06 sty 2010, 15:54

Re: SL na BE przy odpowiedniej wartości wskaźnika

Nieprzeczytany post autor: xspojlerx »

Siema polbanda :) akurat tutaj, chodzi o chwilową wartość, i nie ma znaczenia czy jest to w trakcie tworzenia czy po zamknięciu ;)

expedient warzywniaka

Re: SL na BE przy odpowiedniej wartości wskaźnika

Nieprzeczytany post autor: expedient warzywniaka »

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 ?

Awatar użytkownika
xspojlerx
Pasjonat
Pasjonat
Posty: 411
Rejestracja: 06 sty 2010, 15:54

Re: SL na BE przy odpowiedniej wartości wskaźnika

Nieprzeczytany post autor: xspojlerx »

No coś tam rzeźbie, ale długa droga przede mną ;)

expedient warzywniaka

Re: SL na BE przy odpowiedniej wartości wskaźnika

Nieprzeczytany post autor: expedient warzywniaka »

powodziska :)

Awatar użytkownika
xspojlerx
Pasjonat
Pasjonat
Posty: 411
Rejestracja: 06 sty 2010, 15:54

Re: SL na BE przy odpowiedniej wartości wskaźnika

Nieprzeczytany post autor: xspojlerx »

Dzięki, nawzajem :)

ODPOWIEDZ