Jak zamknąć zlecenia o ustalonej wartości zysków (Profit)?

O jezykach programowania w platformach i nie tylko.
STORNO
Stały bywalec
Stały bywalec
Posty: 34
Rejestracja: 27 sty 2008, 11:09

Nieprzeczytany post autor: STORNO »

Przepraszam już zamyka.
Pozdrawiam.
Jesteś Gośc.

Dodano po 2 minutach:

Zastosowałem ten ostatni.
Jeszcze mam pytanie.
Czy mogę ustawić Profit ujemny np: -5

Godot
Stały bywalec
Stały bywalec
Posty: 32
Rejestracja: 09 kwie 2008, 17:46

Nieprzeczytany post autor: Godot »

Ten kod zamyka mi nawet okna w pokoju :) Może problem leży gdzieindziej...
Nie sądzę, by ktokolwiek był na tyle mądry, aby ocenić, co jest możliwe, a co nie.

STORNO
Stały bywalec
Stały bywalec
Posty: 34
Rejestracja: 27 sty 2008, 11:09

Nieprzeczytany post autor: STORNO »

To dla bezpieczeństwa, żeby nie wypaść przez okno.

Hej, dzięki bardzo.

Godot
Stały bywalec
Stały bywalec
Posty: 32
Rejestracja: 09 kwie 2008, 17:46

Nieprzeczytany post autor: Godot »

STORNO pisze:Czy mogę ustawić Profit ujemny np: -5
tak... nawet -5.22

STORNO
Stały bywalec
Stały bywalec
Posty: 34
Rejestracja: 27 sty 2008, 11:09

Nieprzeczytany post autor: STORNO »

Jeszcze jedno. Ten skrypt bardzo zapycha loga w katalogu: c:\Program Files\MetaTrader 4\logs\2008.12.12.log
Zobacz u siebie. U mnie nabiło na 9GB.

Dodano po 2 minutach:

Nabija przy każdym uruchomieniu.

Dodano po 3 minutach:

Ale, to nie problem.

Dodano po 4 minutach:

Jescze raz wielkie dzięki.
Jesteś Ok!!!

Godot
Stały bywalec
Stały bywalec
Posty: 32
Rejestracja: 09 kwie 2008, 17:46

Nieprzeczytany post autor: Godot »

poprawię to bo ten kod nie bierze pod uwage zlaceń oczekujących

sprawdź teraz...

Kod: Zaznacz cały

extern double closeProfit=10; 

int start() 
  { 
//---- 
  bool   result, ord2close; 
  int i, cmd; 
  double price, profit = 0; 

//---- 
  for(i=0; i<OrdersTotal(); i++) { 
    OrderSelect(i, SELECT_BY_POS); 
    profit += OrderProfit(); 
  } 
  if(profit >= closeProfit) {
    for(i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS);
      cmd = OrderType(); 
      if(cmd < 2) { 
        i--;
        result = false;
        while(result != true) { 
          if(cmd == OP_BUY) price = Bid; 
          else              price = Ask; 
          result = OrderClose(OrderTicket(), OrderLots(), price, 3, CLR_NONE); 
          RefreshRates();
        }
      }
    } 
  }
//---- 
   return(0); 
  }

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

a ja mam pytanie co zmienic zeby nie bral pod uwage Profitu tylko zysk/strate w pipsach ??


prosze o pomoc
http://www.forex.nawigator.biz/dyskusje ... 8792#88792
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Godot
Stały bywalec
Stały bywalec
Posty: 32
Rejestracja: 09 kwie 2008, 17:46

Nieprzeczytany post autor: Godot »

powinno działać z pipsami...

Kod: Zaznacz cały

extern double closeProfit=10; 

int start() 
  { 
//---- 
  bool   result, ord2close; 
  int i, cmd; 
  double price, profit = 0; 

//---- 
  for(i=0; i<OrdersTotal(); i++) { 
    OrderSelect(i, SELECT_BY_POS); 
    cmd = OrderType();     
    if(cmd < 2) { 
      if(cmd == OP_BUY)
        profit += (Bid - OrderOpenPrice()) / MarketInfo(OrderSymbol(), MODE_POINT); 
      if(cmd == OP_SELL)
        profit += (OrderOpenPrice() - Ask) / MarketInfo(OrderSymbol(), MODE_POINT); 
    }
  } 
  if(profit >= closeProfit) { 
    for(i=0; i<OrdersTotal(); i++) { 
      OrderSelect(i, SELECT_BY_POS); 
      cmd = OrderType(); 
      if(cmd < 2) { 
        i--; 
        result = false; 
        while(result != true) { 
          if(cmd == OP_BUY) price = Bid; 
          else              price = Ask; 
          result = OrderClose(OrderTicket(), OrderLots(), price, 3, CLR_NONE); 
          RefreshRates(); 
        } 
      } 
    } 
  } 
//---- 
   return(0); 
  }

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

Godot pisze: if(cmd == OP_BUY)
profit += (Bid - OrderOpenPrice()) / MarketInfo(OrderSymbol(), MODE_POINT);
if(cmd == OP_SELL)
profit += (OrderOpenPrice() - Ask) / MarketInfo(OrderSymbol(), MODE_POINT);

moze zle mysle ale nie powinno byc * zamiast /
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Godot
Stały bywalec
Stały bywalec
Posty: 32
Rejestracja: 09 kwie 2008, 17:46

Nieprzeczytany post autor: Godot »

przelicz w excelu dla EURUSD

(Bid - OrderOpenPrice()) / MarketInfo(OrderSymbol(), MODE_POINT)
czyli np:
(1.3370 - 1.3300) / 0.0001
Nie sądzę, by ktokolwiek był na tyle mądry, aby ocenić, co jest możliwe, a co nie.

ODPOWIEDZ