Witam,
Proszę o pomoc. Mam pewną zdefiniowaną zmienną. Chciałbym, aby wartość tej zmiennej po przejściu na nową świecę została przypisana innej zmiennej. W skrócie dla M5:
00:00 - Zmienna1=232, Zmienna2=0, Zmienna3=0
00:05 - Zmienna1=356, Zmienna2=232, Zmienna3=0
00:10 - Zmienna1=596, Zmienna2=356, Zmienna3=232
Wartości Zmiennej1 wpisałem przypadkowe. Jest w ogóle taka możliwość? I jak przypisać zmiennej wartość wyjściową równą 0?
-- Dodano: wt 26-07-2016, 10:28 --
Proszę o jakąś wskazówkę, cokolwiek, od czego mógłbym zacząć
Zmienna równa wartość innej zmiennej z poprzedniej świecy
Re: Zmienna równa wartość innej zmiennej z poprzedniej świec
Czyli co nie da się czy po prostu nie chcecie pomóc?
Re: Zmienna równa wartość innej zmiennej z poprzedniej świec
Zapisujesz czas otwarcia danej świecy i przypisujesz zmienną wtedy, kiedy obecny czas różni się od czasu zapisanego w zmiennej.
Re: Zmienna równa wartość innej zmiennej z poprzedniej świec
Napisałem takie cos ale nie do konca działa:
-- Dodano: czw 28-07-2016, 13:16 --
Napisałem EA, ale w dalszym ciagu nie przypisuje zmiennych. Według mnie powinien działać tak:
Przykładowo, rozpoczynam pracę EA o północy;
00:00:00 - przypisuje wartość do Zmiennej0 (zakładam, że od razu jest spełniony warunek SredniaMinimum0==Minimum1) jednocześnie sprawdza warunki do otwarcia/zamknięcia transakcji (nic się nie dzieje),
00:00:20 - przypisuje wartość Zmiennej2 do Zmiennej3,
00:00:40 - przypisuje wartość Zmiennej1 do Zmiennej2,
00:00:60 - przypisuje wartość Zmiennej0 do Zmiennej1,
00:05:00 - przypisuje nową wartość do Zmiennej0 operując na wartośiach Zmiennych1-3 przypisanych poprzednio, sprawdza warunki i ewentualnie zawiera transakcje,
00:00:20 - przypisuje aktualną wartość Zmiennej2 do zmiennej 3,
itd.
Znajduje może ktoś błąd w moim rozumowaniu lub kodzie?
Kod: Zaznacz cały
if(iTime("EURUSD", PERIOD_M5, Current + 0)!=TimeCurrent()){
Zmienna3=Zmienna2;
Zmienna2=Zmienna1;
}
Napisałem EA, ale w dalszym ciagu nie przypisuje zmiennych. Według mnie powinien działać tak:
Przykładowo, rozpoczynam pracę EA o północy;
00:00:00 - przypisuje wartość do Zmiennej0 (zakładam, że od razu jest spełniony warunek SredniaMinimum0==Minimum1) jednocześnie sprawdza warunki do otwarcia/zamknięcia transakcji (nic się nie dzieje),
00:00:20 - przypisuje wartość Zmiennej2 do Zmiennej3,
00:00:40 - przypisuje wartość Zmiennej1 do Zmiennej2,
00:00:60 - przypisuje wartość Zmiennej0 do Zmiennej1,
00:05:00 - przypisuje nową wartość do Zmiennej0 operując na wartośiach Zmiennych1-3 przypisanych poprzednio, sprawdza warunki i ewentualnie zawiera transakcje,
00:00:20 - przypisuje aktualną wartość Zmiennej2 do zmiennej 3,
itd.
Znajduje może ktoś błąd w moim rozumowaniu lub kodzie?
Kod: Zaznacz cały
int MagicNumber = 847349;
int Current=0;
double Lots = 0.01;
//////////////////////////////////////////////////////
void init(){
}
//////////////////////////////////////////////////////
void deinit(){
}
//////////////////////////////////////////////////////
void start(){
double Otwarcie0 = iOpen("EURUSD", PERIOD_M5, Current + 0);
double Otwarcie1 = iOpen("EURUSD", PERIOD_M5, Current + 1);
double Otwarcie2 = iOpen("EURUSD", PERIOD_M5, Current + 2);
double Otwarcie3 = iOpen("EURUSD", PERIOD_M5, Current + 3);
double Otwarcie4 = iOpen("EURUSD", PERIOD_M5, Current + 4);
double Otwarcie5 = iOpen("EURUSD", PERIOD_M5, Current + 5);
double Maksimum0 = MathMax(Otwarcie0,MathMax(Otwarcie1,Otwarcie2)
double Maksimum1 = MathMax(Otwarcie1,MathMax(Otwarcie2,Otwarcie3)
double Maksimum2 = MathMax(Otwarcie2,MathMax(Otwarcie3,Otwarcie4)
double Maksimum3 = MathMax(Otwarcie3,MathMax(Otwarcie4,Otwarcie5)
double Minimum0 = MathMin(Otwarcie0,MathMin(Otwarcie1,Otwarcie2)
double Minimum1 = MathMin(Otwarcie1,MathMin(Otwarcie2,Otwarcie3)
double Minimum2 = MathMin(Otwarcie2,MathMin(Otwarcie3,Otwarcie4)
double Minimum3 = MathMin(Otwarcie3,MathMin(Otwarcie4,Otwarcie5)
double SumaMaksimum0 = Maksimum1+Maksimum2+Maksimum3;
double SumaMinimum0 = Minimum1+Minimum2+Minimum3;
double SredniaMaksimum0 = SumaMaksimum0/3;
double SredniaMinimum0 = SumaMinimum0/3;
double Zmienna0;
double Zmienna1;
double Zmienna2;
double Zmienna3;
if(TimeCurrent()-iTime("EURUSD", PERIOD_M5, Current + 0)==20){
Zmienna3=Zmienna2;
}
if(TimeCurrent()-iTime("EURUSD", PERIOD_M5, Current + 0)==40){
Zmienna2=Zmienna1;
}
if(TimeCurrent()-iTime("EURUSD", PERIOD_M5, Current + 0)==60){
Zmienna1=Zmienna0;
}
double SumaZmienna0 = Zmienna1+Zmienna2+Zmienna3;
double SredniaZmienna0 = SumaZmienna0/3;
if(IsNewBar()){
if(Zmienna1>0){
if(Zmienna1==Maksimum1){
if(SredniaZmienna0==Zmienna1){
Zmienna0=Minimum0;
} else {
Zmienna0=Maksimum0;
}
} else {
if(SredniaZmienna0==Zmienna1){
Zmienna0=Maksimum0;
} else {
Sygnal0=Minimum0;
}
}
} else {
if(SredniaMinimum0==Minimum1){
Zmienna0=Maksimum0;
} else {
if(SredniaMaksimum0==Maksimum1){
Zmienna=Minimum0;
} else {
Zmienna0=0;
}
}
}
if(Zmienna0==Minimum0){
for (int i=OrdersTotal()-1; i>=0; i--){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if (OrderType() == OP_SELL){
OrderClose(OrderTicket(),OrderLots(),Ask,0,Green);
}
}
}
}
if(Zmienna0==Maksimum0){
for (i=OrdersTotal()-1; i>=0; i--){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if (OrderType() == OP_BUY){
OrderClose(OrderTicket(),OrderLots(),Bid,0,Green);
}
}
}
}
if(Zmienna0==Minimum0){
OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,NULL,MagicNumber,0,Green);
}
if(Zmienna0==Maksimum0){
OrderSend(Symbol(),OP_SELL,Lots,Bid,0,0,0,NULL,MagicNumber,0,Red);
}
}
}
//////////////////////////////////////////////////////
bool IsNewBar(){
static int prevTime;
bool newBar=false;
if(Time[0]!=prevTime){
newBar=true;
prevTime=Time[0];
}
return(newBar);
}
//////////////////////////////////////////////////////