Wyszukanie max i min w podanym zakresie

O jezykach programowania w platformach i nie tylko.
mboryna
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 17 kwie 2015, 21:51

Wyszukanie max i min w podanym zakresie

Nieprzeczytany post autor: mboryna »

Witam

Prosze o pomoc.
Jak napisac kod, ktory np w godzinie 04:00 zawieralby transakcje SELL oparta na wartosci max i min z godziny 23:00 - 03:00 (jak wyszukac wartosc z wykresu max i min w danych godzinach).

Pozdrawiam

EAForex
Bywalec
Bywalec
Posty: 19
Rejestracja: 10 gru 2014, 15:04

Re: Wyszukanie max i min w podanym zakresie

Nieprzeczytany post autor: EAForex »

Zainteresuj się funkcjami:

Kod: Zaznacz cały

double  iHigh(
   string           symbol,          // symbol
   int              timeframe,       // timeframe
   int              shift            // shift
   );

int  iHighest(
   string           symbol,          // symbol
   int              timeframe,       // timeframe
   int              type,            // timeseries
   int              count,           // cont
   int              start            // start
  );

double  iLow(
   string           symbol,          // symbol
   int              timeframe,       // timeframe
   int              shift            // shift
   );

int  iLowest(
   string           symbol,          // symbol
   int              timeframe,       // timeframe
   int              type,            // timeseries id
   int              count,           // count
   int              start            // starting index
  );

np.

Kod: Zaznacz cały

iHighest(NULL,0,MODE_HIGH,20,4)
zwróci najwyższą wartość z maksymalnych cen świec od świecy 4 do świecy 20 (aktualna liczona jest jako 0).

mboryna
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 17 kwie 2015, 21:51

Re: Wyszukanie max i min w podanym zakresie

Nieprzeczytany post autor: mboryna »

ok sprawdze, a jaka funkcja pozwoli o danej godzinie np. 04:00 zrobic transakcje jednorazowa BUY ?

mboryna
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 17 kwie 2015, 21:51

Re: Wyszukanie max i min w podanym zakresie

Nieprzeczytany post autor: mboryna »

niestety ale te funkcje nie sa w stanie okreslic jaki byl max i min w danym przedziale czasowym :cry:

EAForex
Bywalec
Bywalec
Posty: 19
Rejestracja: 10 gru 2014, 15:04

Re: Wyszukanie max i min w podanym zakresie

Nieprzeczytany post autor: EAForex »

1. sprawdź aktualną godzinę np. funkcjami TimeHour,TimeMinutes,TimeSeconds - jeżeli 4 to działaj dalej.
2. sprawdź high pożądanej godziny, np 23 przy pomocy funkcji iHigh (tu możesz dorobić sprawdzenie czy o takiej godzinie odbywał się handel).
3. wyślij zlecenie oczekujące o zadanych parametrach.

z6yszko
Gaduła
Gaduła
Posty: 266
Rejestracja: 17 sty 2011, 10:09

Re: Wyszukanie max i min w podanym zakresie

Nieprzeczytany post autor: z6yszko »

Dla początkujących to nie jest takie proste.
Trzeba zastosować kombinację kilku rodzajów funkcji. Poprawny kod:

Kod: Zaznacz cały

   datetime t1, t2;
   string d1, d2;
   double hi, lo;
   int shift, count;
   d1 = TimeToString(TimeCurrent(), TIME_DATE);
   d1 = d1+" 00:00";
   d2 = d1+" 03:00";
   t1 = StringToTime(d1);
   t2 = StringToTime(d2);
   shift = iBarShift(NULL, 0, d2, false);
   count = iBarShift(NULL, 0, d1, false)-shift;
   hi = High[iHighest(NULL, 0, MODE_HIGH, count, shift)];
   lo = Low[iLowest(NULL, 0, MODE_LOW, count, shift)];
hi, lo to wartości obliczone dla bieżącej daty

mboryna
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 17 kwie 2015, 21:51

Re: Wyszukanie max i min w podanym zakresie

Nieprzeczytany post autor: mboryna »

Kod: Zaznacz cały

d1 = TimeToString(TimeCurrent(), TIME_DATE);
d2 = d1+" 00:01";
t2 = StringToTime(d2);
val= iHigh(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,t2));
dziekuje za pomoc :)

wartosci juz mam, tylko pytanie jak zrobic zeby po przecinku bylo 5 liczb a nie 4 ? do 4 zrzuca mi iHigh oraz jak zrobic zeby skrypt dzialal online i o godzinie 9:40 wykonywal kod?

skorzystalem z kawalka kodu:

Kod: Zaznacz cały

if (TimeCurrent() >= StrToTime("07:40:00"))
jak zrobic zeby skrypt dzialal caly czas online?

-- Dodano: 01 maja 2015, 13:13 --

ok juz wartosci pokazuje mi po przecinku, prosze o pomoc jak zrobic zeby skrypt dzialal online, zebym nic nie musial przy nim ingerowac i zeby sam o 9:40 wystawil dwie aukcje i potem na nastepny dzien o tej samej porze wykonal ta sama czynnosc

z6yszko
Gaduła
Gaduła
Posty: 266
Rejestracja: 17 sty 2011, 10:09

Re: Wyszukanie max i min w podanym zakresie

Nieprzeczytany post autor: z6yszko »

Trzeba zapętlić kod oraz zadbać o to, żeby w danym dniu wykonały się tylko dwa zlecenia.
Na przykład:

Kod: Zaznacz cały

int thisDay=0;
while (!IsStopped())
{
if (TimeCurrent() >= StrToTime("07:40:00") && thisDay != TimeDay(TimeCurrent()))
{
//--- Otwórz zlecenie 1
//--- Otwórz zlecenie 2
thisDay = TimeDay(TimeCurrent());
}
}

mboryna
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 17 kwie 2015, 21:51

Re: Wyszukanie max i min w podanym zakresie

Nieprzeczytany post autor: mboryna »

ok dzieki za podpowiedz, udalo mi sie uzyskac efekt poprzez zastosowanie zmiennej boolean, gdzie dla godziny 7:40 musi byc ona true i wtedy wykonuje sie kod , w ktorym ustawiam flage na false, a wiec nie odpali mi drugi raz kodu, flage ponownie ustawiam na true jesli godzina jest < 07:00

dodatkowo udalo mi sie zrobic, zeby kod dzialal online poprzez EA, a ja tworzylem jako skrypt, wiec to co chcialem uzyskac mam juz zrobione, dziekuje za pomoc, w razie problemow odezwe sie napewno na tym forum :D

ODPOWIEDZ