Pies na trend

ODPOWIEDZ
no avatar
GoldWolf
Stały Bywalec
Posty: 219
Rejestracja: wtorek 15 gru 2015, 20:48
Lat na Forex: 5
Rodzaj rachunku: Rachunek rzeczywisty
Lokalizacja: Bielsko-Biała

Pies na trend

piątek 23 gru 2016, 10:40

Witam Was serdecznie akurat zakładam temat przed dzień Świąt, to postanowiłem przy okazji zrobić Wam prezent.
Najpierw jednak o strategii - strategie w ramach tematu "Pies na trend", będą skupiały się tylko na grze w trendach wyższego rzędu dzienne - tygodniowe. Myślę, iż można by to spokojnie stosować dla niższych interwałów, ale to zostawiam Wam do roboty.

Główne założenie EA, które mogą powstać dla tych strategii, to podążanie za trendem. Określam EA kierunek i kilka wartości początkowych i tyle. Pierwsze EA, który powstał dla tej strategii został zaprezentowany tutaj - http://forum.comparic.pl/viewtopic.php? ... 334#p63858

Z racji Świąt Bożego narodzenia - przekazuję Wam w prezencie zmodyfikowaną wersję tego skryptu:

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                              Pies_OgarPolski.mq4 |
//|  Copyright 2016,MetaQuotesSoftwareCorp. - GoldWolf - comparic.pl |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016,MetaQuotesSoftwareCorp. - GoldWolf - comparic.pl"
#property link      "http://forum.comparic.pl/viewtopic.php?f=27&t=4697#p64057"
#property version   "1.00"
#property strict
#property description "OgarPolski to nazwa skryptu, który działa automatycznie po wprowadzeniu opowiednich danych."
#property description "Dokładny opis skryptu znajduje się w linku wyżej. (forum - comparic.pl)"

//+---Zmienne globalne -----------------------------------------------+
   //---------------------------      
   extern bool CzyMaDzialac = false;    //Czy ma działać?
   extern datetime CzasStartu = __DATETIME__;  //Od kiedy zacząć grę?
   extern short KorpusSwiecy = 88;  //Odległość min. pozycji
                                 //wartość domyślna powinna być zależna od ruchu na danym walorze 
   extern short LiczbaSwiecBrokera = 5; //Ile świec tygodnia?
   extern short ProcentSL = 31;  //wartość [%] SL na kapitale, nie może być niższa niż brokera
   double Lot_Q = 0.0, //wielkość pozycji
      SL_Kapitalu = 0.48;  // odpowiada 48% obsunięcia kapitału -w lini 48 jest modyfikowana o wartośc podaną z ProcentSL
   
   int Pozycja = 0, //przechowuje informacje o ostatnio otwartej pozycji dla D1
      CzySprawdzilH1 = 0, // zmienna przechowuje informacje czy w danej H1 było już sprawdzane,
                           //by co tik nie sprawdzał - szczególnie, że tylko raz mogę zająć pozycję
      CzySprawdzilPozycjeBezSL = 0;   //przechowuje informacje dla funkcji ZamknijWszystkoCoTraci 
                                    //by w kołko nie sprawdzała jeżeli już zostało sprawdzone
   
   short MagicznaLiczba = 0,  //wprowadziłem by uszeregować zlecenia, by móc lepiej zarządzać SL i pozycjami                        
      Kierunek = 0; //zmienna przechowuje informacje czy grać do góry 1 czy na dół 9          
   double KursZagrania = 0.0;
   
   string walor = Symbol();

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   walor = Symbol();
   
   
   if(ProcentSL < AccountStopoutLevel()){ //jeżeli procent jest za niski przyjmuje procent od brokera
      ProcentSL = (short) AccountStopoutLevel();
      SL_Kapitalu = (double) ProcentSL / 100;
   }else
      SL_Kapitalu = (double) ProcentSL / 100;
   Print("SL kapitalu to ", ProcentSL, "%");
         
   if(IsTesting()){
      FileDelete((string)(Symbol()+"KursZagrania.txt"));
      CzyMaDzialac  = true;
      CzasStartu = 0;
   }
//---
      Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(){

   //--- Sprawdza czy nie zostało przekroczone [%] depozytu początkowego dla salda operacyjnego
         // i zamyka stratne pozycje -------------
   if(AccountBalance() * SL_Kapitalu > AccountEquity() && CzySprawdzilH1 != iBars(NULL, PERIOD_H1) && CzySprawdzilPozycjeBezSL != iBars(NULL,PERIOD_D1)){
      Print("Czyszcze stratne pozycje ...");
      ZamknijWszystkoCoTraci(99);
   }   
   
   if(CzyMaDzialac){
      if(CzasStartu < TimeCurrent()) //zaczyna od wskazanego czasu
      if(DayOfWeek() != 7) //nie zaczynamy handlu w niedziele !!!
      if(Pozycja != iBars(NULL,PERIOD_D1) && CzySprawdzilH1 != iBars(NULL, PERIOD_H1)){
         CzySprawdzilH1 = iBars(NULL, PERIOD_H1);
         string NazwaPliku = walor+"_SlupekPozycji.txt";
         int handle;
         
         if(FileIsExist(NazwaPliku)){                         
            handle=FileOpen(NazwaPliku, FILE_TXT|FILE_READ);
            if(handle!=INVALID_HANDLE){
               FileSeek(handle, 0, SEEK_SET);
               Pozycja = (int) FileReadString(handle);
               FileClose(handle);
            }else Print("Operation FileOpen failed, error ",GetLastError());
            handle = NULL;
            
         }
            //Sprawdza jak ma grać   -------------------------------------------
         NazwaPliku = walor+"Kierunek.txt";   
         if(FileIsExist(NazwaPliku)){
            //int handle;                          
            handle=FileOpen(NazwaPliku, FILE_TXT|FILE_READ);
            if(handle!=INVALID_HANDLE){
               FileSeek(handle, 0, SEEK_SET);
               Kierunek = (short) FileReadString(handle);
               //FileWrite(handle,(string)Pozycja);
               FileClose(handle);
            }else Print("Operation FileOpen failed, error ",GetLastError());
            handle = NULL;
         }else
            Print("Plik ", NazwaPliku, " nie istnieje!!!");
            //sprawdza jaki był ostatni kurs zagrania 
         NazwaPliku = walor+"KursZagrania.txt";
         if(FileIsExist(NazwaPliku)){
            handle=FileOpen(NazwaPliku, FILE_TXT|FILE_READ);
            if(handle!=INVALID_HANDLE){
               FileSeek(handle, 0, SEEK_SET);
               KursZagrania = (double) FileReadString(handle);
               FileClose(handle);
            }else Print("Operation FileOpen failed, error ",GetLastError());
            handle = NULL;
            NazwaPliku = NULL;
         }
         if(Kierunek == 1 || Kierunek == 9){
            SprawdzKursPozycji();
            if(Pozycja != iBars(NULL,PERIOD_D1)) 
               ZajmijPozycje(Kierunek);
         }
      }else
         CzySprawdzilH1 = iBars(NULL, PERIOD_H1);
   }else
      CzySprawdzilH1 = iBars(NULL, PERIOD_H1);
   
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
/*    Funkcja zajmij pozycję /*/
void  ZajmijPozycje(short kierunek){
   double ZamkniecieD1 = iClose(NULL,PERIOD_D1, 1);
   double ZamkniecieH4 = iClose(NULL, PERIOD_H4, 1);
   double MaxD1 = iHigh(NULL, PERIOD_D1, 1),
         MinD1 = iLow(NULL, PERIOD_D1, 1),
         OpenD1 = iOpen(NULL, PERIOD_D1, 0);
   // pamiętać by sprawdzić kto jak maluje świecie 
   if(DayOfWeek() == 1 && LiczbaSwiecBrokera == 6)
      ZamkniecieD1 = iClose(NULL,PERIOD_D1, 2);
      //Print("KursZagrania 1: ", KursZagrania);
   switch((int)kierunek){
      case 9 : {
         WielkoscPozycji();
         if(KursZagrania == 0.0){
            SprawdzKursPozycji();
            if(KursZagrania == 0.0)
               KursZagrania = iHigh(NULL,PERIOD_D1, 1);
         }      
         if(Lot_Q > 0.001) 
            if(ZamkniecieD1 < ZamkniecieH4 && NormalizeDouble(KursZagrania - KorpusSwiecy*Point, Digits) > Bid && MinD1 < OpenD1){
               int ticket = 0;
               MagicznaLiczba = kierunek;
               ticket = OrderSend(Symbol(), OP_SELL, Lot_Q, Bid, 3, NULL,NULL,NULL,MagicznaLiczba);  //zajmowanie pozycji
               double KursPozycji = Bid;
               if(ticket<0)
                  Print("Nie otwarto pozycji Sell - error #",GetLastError());
               else{
                  Print("Otwarto pozycje Sell");
                  Pozycja = iBars(NULL,PERIOD_D1);
                  ZapiszPozycje(KursPozycji);
               } 
            }else
               Print("Nie zajęto pozycji Sell. KursZagrania ", KursZagrania, " ; Bid ", Bid);
      } break;        
      case 1 : {
         WielkoscPozycji();
         if(KursZagrania == 0.0){
            SprawdzKursPozycji();
            if(KursZagrania == 0.0)
               KursZagrania = iLow(NULL,PERIOD_D1, 1);
         }   
         if(Lot_Q > 0.001)
            if(ZamkniecieD1 > ZamkniecieH4 && NormalizeDouble(KursZagrania + KorpusSwiecy*Point, Digits) < Ask && MaxD1 > OpenD1){
               int ticket = 0;
               MagicznaLiczba = kierunek;
               ticket = OrderSend(Symbol(),   OP_BUY,  Lot_Q,  Ask,  3, NULL,NULL,NULL,MagicznaLiczba); //zajmowanie pozycji
               double KursPozycji = Ask;
               if(ticket<0)
                  Print("Nie otwarto pozycji Buy - error #",GetLastError());
               else{
                  Print("Otwarto pozycje Buy");
                  Pozycja = iBars(NULL,PERIOD_D1);
                  ZapiszPozycje(KursPozycji);
               }   
               
            }else
               Print("Nie zajęto pozycji Buy. KursZagrania ", KursZagrania, " ; Ask ", Ask);    
      } break;
   //default :
   
   }
}
//+-----------------------------------------------------------------+
void SprawdzKursPozycji(){

   int total = OrdersTotal();

   if (total >= 0)
      for(int cnt=total; cnt >= 0; cnt--){
         if(OrderSelect(cnt,SELECT_BY_POS)){
            //Print("cnt - ", cnt, "  , Total ", total, "  OrderType()- ", OrderType(), " Kierunek - ", Kierunek);
            //Print("KursZagrania3 - ", KursZagrania);
            if(OrderSymbol() == Symbol())
               switch(Kierunek){
                  case 1:{    
                     if (OrderType() == OP_BUY)
                        if(KursZagrania == 0){
                             KursZagrania = OrderOpenPrice();
                             cnt = 0;
                        }else if(KursZagrania < OrderOpenPrice()){
                             KursZagrania = OrderOpenPrice();
                             cnt = 0;
                        }
                  }break;
                  case 9:{    
                     if (OrderType() == OP_SELL)
                        if(KursZagrania == 0){
                             KursZagrania = OrderOpenPrice();
                             cnt = 0;
                        }else if (KursZagrania > OrderOpenPrice()){
                           KursZagrania = OrderOpenPrice();
                             cnt = 0;                        
                        }
                  }break;
               }
         }
      }
      //Print("KursZagrania3 - ", KursZagrania);   
                       
}   
//+------------------------------------------------------------------+
/*    Funkcja zapisu do pliku informacji o pozycjach */
void ZapiszPozycje(double KursPozycji){
      //zapisywanie kursy pozycji by nie otworzył poniżej ostatniego kursu zajęcia pozycji
      
      string NazwaPliku = walor+"KursZagrania.txt";
      int handle;                          
      handle=FileOpen(NazwaPliku, FILE_WRITE|FILE_TXT|FILE_READ);
      if(handle!=INVALID_HANDLE){
         FileSeek(handle, 0, SEEK_SET);
         FileWrite(handle,(string)KursPozycji);
         FileClose(handle);
      }else Print("Operation FileOpen failed, error ",GetLastError());
      handle = NULL;
      NazwaPliku = NULL;
      
      NazwaPliku = walor+"_SlupekPozycji.txt";
      handle=FileOpen(NazwaPliku, FILE_WRITE|FILE_TXT|FILE_READ);
      if(handle!=INVALID_HANDLE){
         FileSeek(handle, 0, SEEK_SET);
         FileWrite(handle,(string)Pozycja);
         FileClose(handle);
      }else Print("Operation FileOpen failed, error ",GetLastError());
      handle = NULL;
}
/*
Funkcja do zamykania pozycji po nieudanym setapie - zamyka wszystko co nie ma ustawionego SL czyli 
wszystko co straci
*/
void ZamknijWszystkoCoTraci(short CoRobic){
   bool Zaliczone = false;
   int total = OrdersTotal();
   switch(CoRobic){
      case 99 :{
         short LiczStratne = 0;
         if (total >= 0){
            for(int cnt=total; cnt >= 0; cnt--){
               if(OrderSelect(cnt,SELECT_BY_POS)){
                  if(OrderSymbol() == Symbol()){
                     if(OrderStopLoss() == 0){
                        Zaliczone=OrderClose(OrderTicket(),OrderLots(),Bid,3);
                        if(!Zaliczone)
                           Print("OrderSend failed with error #",GetLastError());
                        else{
                           Print("Zamknięto pozycję ", OrderSymbol(), " : ", OrderOpenTime());
                           if(AccountBalance() * SL_Kapitalu > AccountEquity()){
                              Print("Przekroczono SL na kapitale. Zamykam dalej zostało do analizy ", cnt, " pozycji.");
                              LiczStratne++;
                           }else{
                              Print("Przekroczono SL na kapitale. Na razie przerywam - być może zamknięto wystarczającą liczbę pozycji");
                              cnt = -1;
                           }      
                        }   
                     }   
                  }
               }
            }
         }
         if(LiczStratne > 1){ //sprowadziłem prosty mechanizm by mnie informował czy zamknąłem więcej pozycji stratnych
                                 // jeżeli zamknie więcej niż 1 pozycji to być może straty były już zbyt duże i dlatego
                                 //zatrzymuje EA by sprawdzić co się stało
            Alert(TimeCurrent(), Symbol(), " Przekroczono SL na kapitale. Czyszcze stratne pozycje i zatrzymuje EA");
            CzyMaDzialac = false;
         }   
      }break;
   }   
 }
/*    Funkcja obliczająca jaką pozycję można otworzyć w zależności od
      dostępnego kapitału i depozytu zabezpieczajacego wartości dla PLN
*/
void WielkoscPozycji(){
   if(AccountBalance() <= 1000){
         Lot_Q = 0.01;
   }else if (AccountBalance() > 1000 && AccountBalance() < 2000){
         Lot_Q = 0.02;
   }else if (AccountBalance() >= 2000 && AccountBalance() < 3000){
         Lot_Q = 0.04;
   }else if (AccountBalance() >= 3000 && AccountBalance() < 4000){
         Lot_Q = 0.08;
   }else if (AccountBalance() >= 4000 && AccountBalance() < 5000){
         Lot_Q = 0.1;
   }else if (AccountBalance() >= 5000 && AccountBalance() < 8000){
         Lot_Q = 0.15;         
   }else if (AccountBalance() >= 8000){
         Lot_Q = 0.2;
   }
}
Automat został zaktualizowany. Głównie poprawiłem znalezione błędy oraz zmodyfikowałem pewne funkcje.
By EA mogło ruszyć należy w folderze profilu użytkownika/MQL4/Files/ umieścić plik o nazwie Symbol(zależy od brokera)+kierunek.txt (np. w XTB - EURJPY+Kierunek.txt, a AdmiralMarkets - EURJPYKierunek.txt) - w pliku tym umieszczamy tylko wartość 1 (Buy) lub 9 (Sell). Gdy mamy tak przygotowany plik możemy uruchomić EA na danym walorze. O tym pisałem już wcześniej w linku wyżej.
Napisałem również Skrypt - http://forum.comparic.pl/viewtopic.php? ... 058#p64058, który przygotowuje pliki niezbędne do działania EA. Automatycznie tworzy pliki Kierunek i SL_Sys(plik ten nie jest wymagany dla tego EA), oraz ew. je nadpisuje.

EA będzie zajmował pozycje tylko gdy cena jest wyższa od ostatniej transakcji (nie griduje) oraz tylko gdy

Kod: Zaznacz cały

ZamkniecieD1 < ZamkniecieH4
cena zamknięcie dnia poprzedniego będzie wyższa (dla buy) i niższa (dla sell) od zamknięcia obecnej H4 - czyli będzie zajmować pozycje na hipotetycznym cieniu budującej się obecnie świecy D1). Dodatkowo sami określamy jaka ma być odległość między poszczególnymi zajętymi pozycjami.

EA ma następujące parametry wejścia:

Kod: Zaznacz cały

 extern bool CzyMaDzialac = false;    //Czy ma działać?
   extern datetime CzasStartu = __DATETIME__;  //Od kiedy zacząć grę?
   extern short OdlegloscOdOstatniejPozycji = 88;  //Odległość min. pozycji
                                 //wartość domyślna powinna być zależna od ruchu na danym walorze 
   extern short LiczbaSwiecBrokera = 5; //Ile świec tygodnia?
   extern short ProcentSL = 31;  //wartość [%] SL na kapitale, nie może być niższa niż brokera
Nie wymagają one komentarza, ale by nie było:
CzyMaDzialac - gdy true zaczyna działać
CzasStartu - konkretna data od której EA ma zacząć pracować
OdlegloscOdOstatniejPozycji - jest to minimalna wartość [w punktach] od ostatniej pozycji (jest to dość kluczowy czynnik wpływający na to ile pozycji będziemy zajmować)
LiczbaSwiecBrokera - domyślnie 5 (Admiral ma 5, XTB ma 6 świec) - warto wprowadzić odpowiednią wartość zależną od tego ile broker ma świeczek dla danego tygodnia 5 czy 6
ProcentSL - jedyne zabezpieczenie jakie wprowadziłem, jeżeli wartości będzie niższa niż brokera, EA przyjmie wartość od brokera

EA zajmuje tylko jedną pozycję w danym dniu i nie ustawia SL dla poszczególnych transakcji.

W ramach strategii napisałem jeszcze jedno EA - Pies_GonczyPolski (zostanę przy nazewnictwie zaciągniętym z polskich ras psów). EA działa w ten sam sposób co poprzednie, tylko operuje na samych H4 i zawiera kilka zabezpieczeń - jak SL_Systemowy czy SL_Kapitalu, oraz zamyka stratne pozycje. Również co piątek redukuje cześć pozycji otwartych w danym tygodniu, a dla reszt ustawia SL (czyli zawiera to wszystko o czym pisałem w poprzednim wątku).

Sama koncepcja strategii opiera się na pewnym założeniu, nazwałbym je świętym gralem czyli - trend jest naszym przyjacielem. Na tym założeniu bazowała jedna z lepszych obiektywnych strategii, która była wykorzystywana przez ludzi biorących udział w eksperymencie Żółwia.

Rezultaty EA Pies_OgarPolski dla EURJPY Obrazek Obrazek
By jednak nie było tak różowo, to zobaczy jak wygląda to dla GBPJPY Obrazek

To jeszcze rzućmy okiem jak się zachowuje moja obecnie dopieszczane EA - Pies_GonczyPolski, dla tych samych sytuacji rynkowych - EURJPY Obrazek Obrazek Obrazek Obrazek
i GBPJPY Obrazek Obrazek

Życzę Wesołych Świąt i udanego odpoczynku od wykresów i innej maść ..kresów.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

no avatar
GoldWolf
Stały Bywalec
Posty: 219
Rejestracja: wtorek 15 gru 2015, 20:48
Lat na Forex: 5
Rodzaj rachunku: Rachunek rzeczywisty
Lokalizacja: Bielsko-Biała

Re: Pies na trend

wtorek 03 sty 2017, 14:35

Trochę biłem się z myślami odnośnie kierunku rozwoju i budowy kolejnych strategii. Na dzień dzisiejszy zostanę przy dwóch rozwiązaniach - czyli zaprezentowanym OgarPolski i jego pewnej modyfikacji GonczyPolski.
Postanowiłem zrezygnować ze klasycznego SL opartego na cenie waloru. Biję się z myślami, bo jakiś czas temu Spekulant mocno krytykował podejście nie stosowania SL, a stosowania SL na kapitale - wskazując iż rozwiązanie RUN Fx prezentowane przez R. Zaorskiego (a przynajmniej ja to tak zrozumiałem) jest nie właściwie, a wręcz karygodne. Stąd moje wahanie i pewnie dopóki sam nie przetestuje tego odpowiednio, to nie będę miał wyrobionego zdania.

Zarządzenie kapitałem rozbiłem na fragmenty (czerpiąc z rozwiązania Run i książki Uniwersalne Zasady Spekulacji).
1. Będę posiadał ok. 8 k (nie jest to potwierdzone - zależy jak ostatecznie zakończy się wynik na obecnym koncie).
2. Dzielę to na 10 części - w terminologii TJS 10 Ranów - a książkowej 1 Run będzie odpowiadać 1 kontraktowy. Jednak przez kontrakt rozumiem nie wielkość pozycji, a wielkość dostępnego kapitału - 1 kontrakt to 10% kapitału czyli 800zł. W ramach jednego kontraktu będą otwierał rożne pozycje.
3. Stosuje 48% SL na 1 kontrakcie czyli 384 zł - gdy taka kwota zostanie stracona oznacza to iż pomyliłem się co do określenia trendu na danym walorze lub grupie walorów
4. Wielkość pozycji zależy od wielkości dostępnego kapitału - jest to zaszyte w EA w funkcji - void WielkoscPozycji()
Mam nadzieje, że to skutecznie ochroni mój kapitał i pozwoli nie stosować tradycyjnego SL cenowego.

Jeśli chodzi o same EA, to są już testowane na kontach demo, oraz jak pisałem w analizie EURJPY - http://forum.comparic.pl/viewtopic.php? ... 106#p64106 postanowiłem uruchomić Ogara na S dla tej pary.
Gdy będę miał więcej danych to się nimi podzielę. Oba EA ciągle są korygowane więc różnią się już trochę od tego co pisałem wyżej.

Aha zapomniałbym o najważniejszym wykupiłem sobie usługę VPS - skonfigurowałem na Linuksie bo daje on pewną elastyczność w pracy z MT4 i MT5. Usługę wykupiłem bo nie mam odpowiedniego miejsca na to by mi chodził komputer 24 h non-stop (Cena 30zł - miesiąc). W XTB dostęp do platformy MT4 wynosi 70zł, chyba, że robi się odpowiedni obrót. Na Linuksie mogę odpalić kilka MT4 do tego samego konta.

W przyszłości o ile wszystko będzie szło ku dobremu, będę przepisywać Ogara na MQL5 - myślałem iż da się to zrobić Kopiuj - Wklej, ale jednak składnia jest inna.

no avatar
GoldWolf
Stały Bywalec
Posty: 219
Rejestracja: wtorek 15 gru 2015, 20:48
Lat na Forex: 5
Rodzaj rachunku: Rachunek rzeczywisty
Lokalizacja: Bielsko-Biała

Re: Pies na trend

środa 18 sty 2017, 11:19

Po miesiącu badań rozwiązań, które zaproponowałem musiałem zmodyfikować kilka kwestii.
Po pierwsze na razie skupię się na rozwijaniu, a raczej już chyba poprawianiu skryptu Ogar. Drugi skrypt był po prostu jego wariacją i po za (pewnie wynikającą z chciwości) funkcją zajmowania częściej pozycji nic nie dawał. To lepiej jest otworzyć większą pozycję niż 2 - 3 mniejsze - w obu przypadkach gdy się pomylimy otrzymamy taką samą stratę, z tym, że w drugim przypadku będzie ona szybciej osiągnięta, bo jak kupię na max D1 i zacznie spadać, to otrzymam gorsza cenę niż jak dla tej samej sytuacji kupię na zamknięciu świecy poprzedniej.

Druga sprawa, to SL - miałem nadzieje iż jakoś uda mi się inaczej do tego podjeść, ale się myliłem. Dlatego muszę mieć dla swojego system SL - bo gdy setup nie wejðzie, to jak to ładnie określił Rafał z TJS - ciągnie cię za jaja pozycja. Mnie tak ciągnął GBP, który zgodnie z reguła przeciwności losu właśnie zawraca i może można by wyjść na plus z tych pozycji.

Trzecią sprawą jest zmiana momentu zajmowania pozycji. Bardzo fajnie wymyśliłem sobie by kupować po cieniach świec D1 - czyli gdy jakaś H4 skończy się powyżej zamknięcia D1 to zajmują, sęk w tym iż są walory gdzie mimo występowania cieniu może nie znaleźć żadna H4 spełniająca taki warunek - ja zauważyłem to dla złota, gdzie kurs rósł, a EA nie miało jak zajmować pozycji - dlatego teraz zajmuję pozycje tylko "na zamknięciu" - bo gwarantuje zajęcie pozycji, a w trendzie szkoda marnować ruch.

Jedno konto demo straciło -582.67 z 999zł. Drugie jest poniżej zera -72. ale ma 2 pozycje Gold i UJ - trzeba czekać na rozstrzygnięcie.

Same przemyślenia i o strategii będę jednak pisał w dzienniki bo trochę bym się pogubił - http://forum.comparic.pl/viewtopic.php? ... 282#p64282
A ew. korekty samego skryptu, będę opisywał tutaj.

ODPOWIEDZ

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości