Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Japco
Stały bywalec
Stały bywalec
Posty: 76
Rejestracja: 24 lip 2010, 20:42

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Japco »

geminiraf pisze:witam
udało mi się w końcu stworzyć pierwszy działający EA - w sensie nie ma błędów przy kompilacji i da się go testować :)
Działa na zasadzie RSI - jezeli RSI > 51 kup
Jednakże mam klejmy "laicki" kłopocie.
Bez SL i TP otwiera się jedno zlecenie i Idze aż do końca (pomijam na tym etapie brak zabezpieczń przed małą ilością kasy)
A z nimi zlecenia działają.Tylko jak osiągnie TP to przy RSI > 51 otwiera się następne zlecenia i ciągnie az do SL.
jak osiągnie SL a warunek RSI jest spełniony to otwiera się następujące zlecenie i znów ciągnie do SL i tak może być ich parę
Chciałbym, aby zlecenie kończyło się jak zostanie spełniony warunek RSI < 50.
Próbowałem z OrderClose - ale cos mi nie wyszło.

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                                   1 kierunek.mq4 |
//|                                                        geminiraf |
//+------------------------------------------------------------------+
#property copyright "geminiraf"

extern int MagicNumberBUY = 77777;

double Lots = 0.1;        //loty
//int ST = 1000;             //stoploss
//int TP = 1000;            //takeprofit   Ask-ST*Point,Ask+TP*Point


int start()
{
double irs1 = iRSI(NULL, 0, 10, PRICE_OPEN, 0);

 if (irs1 > 51)
 {
 if(OrdersTotal()==0)         
  {
   OrderSend(Symbol(),OP_BUY,Lots,Ask,3,"KUPNO",MagicNumberBUY,0,Green);
   if (irs1 < 50)
   {
   OrderClose(MagicNumberBUY,Lots,Ask,3,Yellow); 
   }
  }
 }
}
Masz tu niezły bałagan. Napisałem Ci ten EA w Twoim wątku. Z drugiej strony pozycje długie powinno się otwierać gdy linia przebija poziom 50 a nie 51. Pozycję długą można zamykać gdy linia od góry przebija poziom 70 a krótką gdy od dołu przebija 30 ale tego nie zawarłem.
"Szaleństwem jest robić wciąż to samo i oczekiwać rożnych rezultatów".

Albert Einstein

geminiraf
Bywalec
Bywalec
Posty: 8
Rejestracja: 23 lis 2012, 21:31

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: geminiraf »

no dzięki - będę to przegryzał.
Musze tylko dobrego testera na necie wyczaić.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

Czy funkcja iBarShift() ma ograniczenie wartości do 1000 ?
Próbuję jej używać do wskazywania większej ilości świec wstecz niż 1000 i zwraca mi liczbę 1000. To normalne ?
Solą życia jest kasa.

luktom.biz
Uczestnik
Uczestnik
Posty: 2
Rejestracja: 05 sty 2012, 14:38

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: luktom.biz »

Ogólnie z funkcją iBarShift jest problem, na przykład gdy używasz jej na innym timeframie niż na ktorym chodzi strategia, to czasami pokazuje złe wartości.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

A jest na to jakiś sposób zastępczy ?
Chciałbym na wykresie D1 wskazać świecę na M1, która rozpoczęła się mniej więcej 24 godziny wcześniej.
Solą życia jest kasa.

Awatar użytkownika
bfx
Pasjonat
Pasjonat
Posty: 1260
Rejestracja: 11 sty 2013, 15:49

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: bfx »

personov pisze: Chciałbym na wykresie D1 wskazać świecę na M1, która rozpoczęła się mniej więcej 24 godziny wcześniej.
Moze tak:

Kod: Zaznacz cały

iClose(NULL,PERIOD_M1,24*60);
Pobierze cenę close z 1440 słupka na M1, czyli 24h temu. Możesz oczywiście zamiast iClose użyc funkcji iLow, iHigh lub iOpen. Jeśli wyjdzie ci 0 tzn że masz za krótką historie M1 lub nie była aktualizowana.
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

Tak właśnie robię, tylko, że szwankuje funkcja iBarShift(), bo wskazuje tylko do 1000 świec.
Solą życia jest kasa.

Awatar użytkownika
bfx
Pasjonat
Pasjonat
Posty: 1260
Rejestracja: 11 sty 2013, 15:49

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: bfx »

Kod: Zaznacz cały

cena = iTime(NULL,PERIOD_M1,24*60);
cena = iBarShift(NULL,PERIOD_M1,cena);
U mnie taki kod zwraca 1440, czyli prawidłowo. Jeśli u Ciebie coś innego to spróbuj na innej platformie. Zdarzyło mi się, że na jednej platformie funkcje błędnie obliczały..
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

Awatar użytkownika
rh-fx
Gaduła
Gaduła
Posty: 191
Rejestracja: 12 lis 2007, 21:39

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: rh-fx »

Mam takie pytanko - jestem początkujący w programowaniu :)

Napisałem EA , umieściłem je na VPS-ie i chodzi.

Czy istnieje możliwość zdalnej aktywacji/deaktywacji przycisku w MT "Włącz strategie" ?
Czy mozna to jakoś wyłączyć/wyłaczyć mailem,smsem itp ?
Tak,żeby nie wchodzic przez zdalny pulpit.
- Co ja tutaj robię ?
- Gdzie są ci co powinni tu być ?
- Co robią ci , których nie powinno tutaj być ?

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

Czy istnieje jakaś ogólna przyczyna, że wskaźnik w backteście zamula całe MT4, a w dzienniku pojawia sie komunikat, co tick, że wskaźnik się włącza i wyłącza ?
Co to może być ?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Solą życia jest kasa.

ODPOWIEDZ