Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Szymon_P
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 31 paź 2015, 22:35

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

Nieprzeczytany post autor: Szymon_P »

Niestety to już próbowałem i nie pomaga.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 3292
Rejestracja: 30 lip 2019, 13:15

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

Nieprzeczytany post autor: ninjaproject »

Szymon_P pisze:
22 lis 2021, 20:49
Niestety to już próbowałem i nie pomaga.
A to nie powinno być tak, przypadkiem?

Kod: Zaznacz cały

double PoziomMAX =High[iHighest(NULL,0,MODE_HIGH,iBarEnd-iBarBegin+1,iBarBegin)];
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Szymon_P
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 31 paź 2015, 22:35

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

Nieprzeczytany post autor: Szymon_P »

ninjaproject pisze:
22 lis 2021, 20:54
Szymon_P pisze:
22 lis 2021, 20:49
Niestety to już próbowałem i nie pomaga.
A to nie powinno być tak, przypadkiem?

Kod: Zaznacz cały

double PoziomMAX =High[iHighest(NULL,0,MODE_HIGH,iBarEnd-iBarBegin+1,iBarBegin)];
To nie to. Obliczenie samo w sobie działa poprawnie. Zarówno na testerze jak i na koncie rzeczywistym. Problem pojawia się tylko w momencie, gdy chcę na sztywno zmienić w kodzie zamiast 0 na PERIOD_M1.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 3292
Rejestracja: 30 lip 2019, 13:15

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

Nieprzeczytany post autor: ninjaproject »

Szymon_P pisze:
22 lis 2021, 21:32
ninjaproject pisze:
22 lis 2021, 20:54
Szymon_P pisze:
22 lis 2021, 20:49
Niestety to już próbowałem i nie pomaga.
A to nie powinno być tak, przypadkiem?

Kod: Zaznacz cały

double PoziomMAX =High[iHighest(NULL,0,MODE_HIGH,iBarEnd-iBarBegin+1,iBarBegin)];
To nie to. Obliczenie samo w sobie działa poprawnie. Zarówno na testerze jak i na koncie rzeczywistym. Problem pojawia się tylko w momencie, gdy chcę na sztywno zmienić w kodzie zamiast 0 na PERIOD_M1.
A, to chyba wiem!
No bo gdy chcesz stosować sztywny TF, to nie możesz szukać High[iHighest()], tylko iHigh(_Symbol,PERIOD_M1,iHighest());
High[] jest odnośnie tego interwału, na którym jest wykres obecnie.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Szymon_P
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 31 paź 2015, 22:35

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

Nieprzeczytany post autor: Szymon_P »

ninjaproject pisze:
22 lis 2021, 20:54

A, to chyba wiem!
No bo gdy chcesz stosować sztywny TF, to nie możesz szukać High[iHighest()], tylko iHigh(_Symbol,PERIOD_M1,iHighest());
High[] jest odnośnie tego interwału, na którym jest wykres obecnie.
To jest to!!! Działa prawidłowo. Dzięki!!!

sob-forex
Bywalec
Bywalec
Posty: 6
Rejestracja: 28 mar 2014, 09:04

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

Nieprzeczytany post autor: sob-forex »

Cześć coderzy :D
A ja mam taki mały problemik. Chcę ustawić sobie stoploss na 10 pipsów, ale wyskakuje mi OrderSend error 130.. wiadomo o co chodzi, przy podwojeniu wartości sl wszystko działa jak należy.
Jednak sprawdzam wartość minimalną jaką mogę ustawić dzięki funkcji i argumentom MarketInfo(Symbol(), MODE_FREEZELEVEL);
Wartość wynosi 0.0, czyli na mój tok rozumowania wychodzi na to, że żaden limit tu nie obowiązuje. Można to w jakiś inny sposób rozwiązać i ominąć te śmieszne restrykcje ? Próbowałem z OrderModify(), oraz OrderClose() i błąd ten sam.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 3292
Rejestracja: 30 lip 2019, 13:15

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

Nieprzeczytany post autor: ninjaproject »

sob-forex pisze:
27 lis 2021, 00:16
Cześć coderzy :D
A ja mam taki mały problemik. Chcę ustawić sobie stoploss na 10 pipsów, ale wyskakuje mi OrderSend error 130.. wiadomo o co chodzi, przy podwojeniu wartości sl wszystko działa jak należy.
Jednak sprawdzam wartość minimalną jaką mogę ustawić dzięki funkcji i argumentom MarketInfo(Symbol(), MODE_FREEZELEVEL);
Wartość wynosi 0.0, czyli na mój tok rozumowania wychodzi na to, że żaden limit tu nie obowiązuje. Można to w jakiś inny sposób rozwiązać i ominąć te śmieszne restrykcje ? Próbowałem z OrderModify(), oraz OrderClose() i błąd ten sam.
Ten error nie wynika z powodu restrykcji, skoro broker ma STOPLEVEL = 0.
Ty masz jakiś błąd w kodzie.
Stawiam na to, że masz błędnie obliczone punkty/pipsy.
10 pipsów dla Forex = 100 points.
Ale już dla CFD_Index może być inaczej, i nie ma na to reguły.
Może występować przypadek, kiedy EA ci wysyła zlecenie z SL = 1 pips, albo nawet 0.1 pips, a cena się poruszy na tyle, że wyskoczy error 130. Albo, dla zlecenia OP_SELL, spread > SL.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

sob-forex
Bywalec
Bywalec
Posty: 6
Rejestracja: 28 mar 2014, 09:04

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

Nieprzeczytany post autor: sob-forex »

Głównym instrumentem na którym EA będzie pracować to para walutowa GBP/USD i z reguły SL i TP obliczam w ten sposób, przyjmując, że instrument ma system kwotowania na 5 miejsc po przecinku.

Kod: Zaznacz cały

 int stops = 100; 
          
          double LongStopLoss = Ask - (stops * _Point);
          LongStopLoss = NormalizeDouble(LongStopLoss, _Digits);

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 3292
Rejestracja: 30 lip 2019, 13:15

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

Nieprzeczytany post autor: ninjaproject »

sob-forex pisze:
28 lis 2021, 19:25
Głównym instrumentem na którym EA będzie pracować to para walutowa GBP/USD i z reguły SL i TP obliczam w ten sposób, przyjmując, że instrument ma system kwotowania na 5 miejsc po przecinku.

Kod: Zaznacz cały

 int stops = 100; 
          
          double LongStopLoss = Ask - (stops * _Point);
          LongStopLoss = NormalizeDouble(LongStopLoss, _Digits);
I tu masz problem.
Kupujemy po cenie Ask, ale sprzedajemy po cenie Bid.
Czyli, StopLoss dla transakcji Long to transakcja sprzedaży po cenie Bid.
Czyli, jest tak jak pisałem - spread.
A więc:

Kod: Zaznacz cały

 int stops = 100; 
          
          double LongStopLoss = Bid - (stops * _Point);
          LongStopLoss = NormalizeDouble(LongStopLoss, _Digits);
                              
          double ShortStopLoss = Ask + (stops * _Point);
          ShortStopLoss = NormalizeDouble(ShortStopLoss, _Digits);
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

ODPOWIEDZ