witam serdecznie mam mały problem , chodzi o to , że nie wiem jak powinien być napisany warunek odpowiadający za otwarcie pozycji, mam odp wskaźnik niestandardowy wywołany z funkcji icustom , jest 1 wskaźnik , ale wykorzystywany jest on dwukrotnie , jedne parametry są traktowane jako filtr , a drugie jako wejście w pozycje
pokazane to jest zdjęciu. - bardzo proszę o pomoc
wkleiłem fragment kodu dla otwarcia pozycji BUY
chodzi o ten pierwszy zapis jak on powinien wyglądać
void f0_0() {
if (iCustom(NULL, NULL, "Format",16,200,3,5,0,0) ) f0_5();
}
void f0_5() {
bool Li_0 = FALSE;
for (int pos_4 = OrdersTotal() - 1; pos_4 >= 0; pos_4--) {
if (OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES)) {
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) Li_0 = TRUE;
} else Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (Li_0 == FALSE) f0_21();
}
void f0_21() {
int cmd_0 = -1;
int magic_4 = -1;
int datetime_8 = 0;
int hist_total_12 = OrdersHistoryTotal();
for (int pos_16 = 0; pos_16 < hist_total_12; pos_16++) {
if (OrderSelect(pos_16, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol() == Symbol() && datetime_8 < OrderCloseTime() && OrderMagicNumber() == MagicNumber) {
datetime_8 = OrderCloseTime();
cmd_0 = OrderType();
magic_4 = OrderMagicNumber();
}
}
}
if (cmd_0 == OP_SELL || Gi_188) {
Gi_188 = FALSE;
f0_1();
}
}
void f0_1() {
bool bool_20;
double price_0 = Ask - Stoploss * Gd_148 * Point;
if (Stoploss == 0) price_0 = 0;
double price_8 = Ask + Takeprofit * Gd_148 * Point;
if (Takeprofit == 0) price_8 = 0;
int ticket_16 = -1;
if (Broker) ticket_16 = OrderSend(Symbol(), OP_BUY, Loty_Buy, Ask, 90, 0, 0, "BUY", MagicNumber, 0, Blue);
else ticket_16 = OrderSend(Symbol(), OP_BUY, Loty_Buy, Ask, 90, price_0, price_8, "BUY", MagicNumber, 0, Blue);
if (ticket_16 > -1) {
if (Broker) {
OrderSelect(ticket_16, SELECT_BY_TICKET);
bool_20 = OrderModify(OrderTicket(), OrderOpenPrice(), price_0, price_8, 0, Blue);
if (bool_20 == FALSE) Print("OrderModify() error - ", ErrorDescription(GetLastError()));
}
} else Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
pomocy - chodzi o dopisanie warunku w kodzie
pomocy - chodzi o dopisanie warunku w kodzie
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: pomocy - chodzi o dopisanie warunku w kodzie
A sprawdzałeś, czy dobrze jest zdefiniowane iCustom ?
Ten wskaźnik ma tylko jeden bufor ?
Ja bym zrobił tak :
w start() zdefiniowałbym :
double wskaznik = iCustom(....parametry wskaźnika...);
double filtr = iCustom(.....parametry wksaźnika filtra...);
I najpierw wyprowadziłbym te wartości do Comment() i sprawdziłbym, czy pokazuje na żywo prawidłowe wartości tych wskaźników.
A później w kodzie tylko definiujesz warunek :
if(wskaznik==coś tam&&filtr==coś tam)OrderSend....
PS. Dodatkowo widzę, że nazwa wskaźnika na wykresie to "FORMAT", a nie Format. W iCustom to ma raczej znaczenie.
Ten wskaźnik ma tylko jeden bufor ?
Ja bym zrobił tak :
w start() zdefiniowałbym :
double wskaznik = iCustom(....parametry wskaźnika...);
double filtr = iCustom(.....parametry wksaźnika filtra...);
I najpierw wyprowadziłbym te wartości do Comment() i sprawdziłbym, czy pokazuje na żywo prawidłowe wartości tych wskaźników.
A później w kodzie tylko definiujesz warunek :
if(wskaznik==coś tam&&filtr==coś tam)OrderSend....
PS. Dodatkowo widzę, że nazwa wskaźnika na wykresie to "FORMAT", a nie Format. W iCustom to ma raczej znaczenie.
Solą życia jest kasa.
Re: pomocy - chodzi o dopisanie warunku w kodzie
Na 99% wskaźnik nie ma jednego bufora. Musisz sprawdzić poprzez okno danych, który bufor (mode) działa dla odpowiedniego koloru kropek. A potem to zakodzić. 5 minut pracy 
