pomocy - chodzi o dopisanie warunku w kodzie

O jezykach programowania w platformach i nie tylko.
marcin76
Gaduła
Gaduła
Posty: 300
Rejestracja: 14 lis 2012, 12:42

pomocy - chodzi o dopisanie warunku w kodzie

Nieprzeczytany post autor: marcin76 »

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()));
}
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

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

Re: pomocy - chodzi o dopisanie warunku w kodzie

Nieprzeczytany post autor: personov »

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.
Solą życia jest kasa.

paki
Gaduła
Gaduła
Posty: 115
Rejestracja: 12 paź 2011, 05:04

Re: pomocy - chodzi o dopisanie warunku w kodzie

Nieprzeczytany post autor: paki »

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 :)

ODPOWIEDZ