Zazwyczaj żeby otrzymać zmienna 10 czy 100 razy mniejsza stosuje się dzielenie przez 10 lub 100.Płaski pisze: ↑14 cze 2012, 16:38Mam taki oto problem - robot mi usrednia pozycję o od 0,1 lub 0,01 i leci 0,2-0,3-0,6-0,9-1,4-2,2-4,8 itd. a chcę żeby uśredniał od mikro lotów czyli pierwsza pozycja 0,1 lub 0,01 a dalej 0,02-0,03-0,06-0,09-0,14-0,22-0,48 itd
jak mam to zmienić?
bo w skrypcie wyglada to tak:Kod: Zaznacz cały
double ll(int dan){ int lo[15]; lo[0]=1; lo[1]=1; lo[2]=2; lo[3]=3; lo[4]=6; lo[5]=9; lo[6]=14; lo[7]=22; lo[8]=33; lo[9]=48; lo[10]=82; lo[11]=111; lo[12]=122; lo[13]=164; lo[14]=185; int lt=0; if(OrdersTotal()>0){ for(int m=0;m < OrdersTotal();m++){ if(OrderSelect(m,SELECT_BY_POS,MODE_TRADES)==false) break; if ((OrderMagicNumber() == Magic)&&OrderSymbol()==Symbol()&&OrderType()==dan){ lt++; } }// maxtimeend } //total end
i teraz jeżeli zmienie w wartościach "lo" z 1 na 0,1 dalej 2 na 0,2 dalej 22 na 2,2 i tak dalej to on mi uśrednia ale tylko 0,1 - 0,1 -0,1 itd. czyli cały czas na 0,1 co mija się z celem...
jak mam zmienic te wartosci żeby mi uśredniał jak napisałem na wstepie czyli od mikrolotów?
Wszystkie pytania dozwolone początkujących programistów
Re:
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
To się w ogóle inaczej robi.
Kod: Zaznacz cały
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
int norm = 0;
if (step==1) norm = 0;
if (step==0.1) norm = 1;
if (step==0.01) norm = 2;
double lots= Wyliczenie_Wolumenu();
lots = NormalizeDouble(lots,norm);
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
Re: Wszystkie pytania dozwolone początkujących programistów
Byłby ktoś w stanie podpowiedzieć co zmienić w tym kodzie aby pokazywał on wartości też dla poprzednich świec, a nie tylko dla obecnej jak to jest teraz:
https://www.mql5.com/en/code/29592/234626#!tab=code
https://www.mql5.com/en/code/29592/234626#!tab=code
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
Twój link wyrzuca error 404.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
Re: Wszystkie pytania dozwolone początkujących programistów
Tutaj jest ten skrypt:
Kod: Zaznacz cały
input int Period1 = 14; // RSI Period
input bool Reverse = false; // Reverse
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
string IndicatorName;
string IndicatorObjPrefix;
string GenerateIndicatorName(const string target)
{
string name = target;
int try = 2;
while (WindowFind(name) != -1)
{
name = target + " #" + IntegerToString(try++);
}
return name;
}
double Oscillator[];
int init()
{
IndicatorName = GenerateIndicatorName("Ratio");
IndicatorObjPrefix = "__" + IndicatorName + "__";
IndicatorShortName(IndicatorName);
IndicatorBuffers(1);
SetIndexStyle(0, DRAW_HISTOGRAM);
SetIndexBuffer(0, Oscillator);
SetIndexLabel(0, "Oscillator");
return 0;
}
int deinit()
{
ObjectsDeleteAll(ChartID(), IndicatorObjPrefix);
return 0;
}
int start()
{
int counted_bars = IndicatorCounted();
int minBars = 1;
int limit = MathMin(Bars - 1 - minBars, Bars - counted_bars - 1);
for (int i = limit; i >= 0; i--)
{
double rsiValue = iRSI(_Symbol, _Period, Period1, PRICE_CLOSE, i);
double volumeValue = iCustom(NULL,0,"ClusterDelta_PremiumVolume_4.1","","FDAX","AUTO",0,0);
if (Reverse)
{
if (volumeValue != 0)
{
Oscillator[i] = rsiValue / volumeValue;
}
}
else
{
if (rsiValue)
{
Oscillator[i] = volumeValue / rsiValue;
}
}
}
return 0;
}
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
Pierwsza rzecz, to trzeba mieć abonament Premium w ClusterDelta i mieć wskaźnik "ClusterDelta_PremiumVolume_4.1", i być zalogowany.
Druga rzecz, to trzeba czytać volumeValue dla danej świecy, a nie tylko dla bieżącej:
Druga rzecz, to trzeba czytać volumeValue dla danej świecy, a nie tylko dla bieżącej:
Kod: Zaznacz cały
double volumeValue = iCustom(NULL,0,"ClusterDelta_PremiumVolume_4.1","","FDAX","AUTO",0,i);
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
Zrobiłem wybór źródła danych wolumenu, tick, albo ClusterDelta.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
Re: Wszystkie pytania dozwolone początkujących programistów
Dzięki wielkie