Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Trader1
Pasjonat
Pasjonat
Posty: 387
Rejestracja: 19 sty 2013, 10:25

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Trader1 »

No tak dzieki. A ja kombinowalem z MarketInfo :) i tickvalue. A takie proste rozwiazanie jest:)

malek-k
Uczestnik
Uczestnik
Posty: 1
Rejestracja: 24 paź 2015, 18:52

EA wystawiający 2 zlecenia w tym samym czasie + TS code

Nieprzeczytany post autor: malek-k »

Witam

Staram się stworzyć EA, który wystawia 2 zlecenia przeciwstawne o tej samej godzinie, oba uzupełnione o SL, TP i TS. Znalazłam na forum gotowy kod, jednak brakowało w nim trailing stopu. Wycięłam jego formułę z innego kodu i mam pytanie, jak połączyć te 2 kody?

Gdzieś czytałam, że jest możliwość wprowadzenia ograniczenia, żeby system nie wystawił więcej zleceń niż 2. Ktoś wie jak taka formuła powinna wyglądać??

Kod: Zaznacz cały

//--- input parameters
extern int       Godzina=15;
extern int       Minuta=59;
extern int       StopLoss=200;
extern int       TakeProfit=1000;
extern double    Lots   = 0.1;
extern int       TrilingStop= 100;

int      Długa=0;
int      Krótka=0;


int start()
{
  if ( Hour()==Godzina && Minute()==Minuta)
   {
   
       
    if (countOrders(OP_BUY)==0)   OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"My order BUY",16384,0,Green);
       
   if (countOrders(OP_SELL)==0)    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Ask-TakeProfit*Point,"My order SELL",16384,0,Green);
     }
 return(0);

int countOrders(int cmd) {
int count=0;
for(int i=0;i<OrdersTotal();i++)
               {
               if(OrderSelect(i,SELECT_BY_POS))
               {             
                 if(OrderSymbol()==Symbol() && cmd==OrderType())
                 {
                  count++;
               } } }   
              return(count);
   }
   //Trailing stop
if(UseTrailingStop && TrailingStop > 0) { 
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;

}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) { 
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;

Lewykapy
Bywalec
Bywalec
Posty: 5
Rejestracja: 09 cze 2015, 22:02

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Lewykapy »

Witam Witam...

Jak najlepiej pobrać wartość z zewnętrznego wskaźnika.

Chciałbym napisać indicator, który pobiera wartość z innego wskaźnika i daje mi jakiś tam alert...

Wskaźnik był pobrany...

Jest ogóle taka mozliwość ??

Awatar użytkownika
Pablo90
Pasjonat
Pasjonat
Posty: 1215
Rejestracja: 10 cze 2007, 15:36

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Pablo90 »

Należy użyć funkcji iCustom() http://docs.mql4.com/indicators/icustom

irmentruda
Maniak
Maniak
Posty: 1607
Rejestracja: 21 sie 2014, 08:51

Re: EA wystawiający 2 zlecenia w tym samym czasie + TS code

Nieprzeczytany post autor: irmentruda »

malek-k pisze:Witam

Staram się stworzyć EA, który wystawia 2 zlecenia przeciwstawne o tej samej godzinie, oba uzupełnione o SL, TP i TS. Znalazłam na forum gotowy kod, jednak brakowało w nim trailing stopu. Wycięłam jego formułę z innego kodu i mam pytanie, jak połączyć te 2 kody?

Gdzieś czytałam, że jest możliwość wprowadzenia ograniczenia, żeby system nie wystawił więcej zleceń niż 2. Ktoś wie jak taka formuła powinna wyglądać??

Kod: Zaznacz cały

//--- input parameters
extern int       Godzina=15;
extern int       Minuta=59;
extern int       StopLoss=200;
extern int       TakeProfit=1000;
extern double    Lots   = 0.1;
extern int       TrilingStop= 100;

int      Długa=0;
int      Krótka=0;


int start()
{
  if ( Hour()==Godzina && Minute()==Minuta)
   {
   
       
    if (countOrders(OP_BUY)==0)   OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"My order BUY",16384,0,Green);
       
   if (countOrders(OP_SELL)==0)    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Ask-TakeProfit*Point,"My order SELL",16384,0,Green);
     }
 return(0);

int countOrders(int cmd) {
int count=0;
for(int i=0;i<OrdersTotal();i++)
               {
               if(OrderSelect(i,SELECT_BY_POS))
               {             
                 if(OrderSymbol()==Symbol() && cmd==OrderType())
                 {
                  count++;
               } } }   
              return(count);
   }
   //Trailing stop
if(UseTrailingStop && TrailingStop > 0) { 
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;

}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) { 
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;

no ale wystawiasz dwa zlecenia przeciwstawne po cenie market to rozumiem, ze nie chcesz wystawic nastepnych poki te dwa nie zostana zamkniete na TP albo SL?

jesli tak chcesz to musisz zablokowac przed "if (countOrders(OP_BUY)==0) OrderSend....." warunkiem if(!IsTrade) i zmienna bool IsTrade stworzyc i zmieniac wczesniej, ja mam to tak zrobione:

Kod: Zaznacz cały

//
   // Prowadzenie pozycji 
   //
   bool IsTrade = False;

   for (int i = 0; i < Total; i ++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderMagicNumber()==MagicNumber) 
   {
      if(OrderType() <= OP_SELL &&  OrderSymbol() == Symbol()) {
         IsTrade = True;
         if(OrderType() == OP_BUY) {

// trailing stopy i takich tam dla buy

} else {

// trailing stopy i takich tam dla sell
}

Lewykapy
Bywalec
Bywalec
Posty: 5
Rejestracja: 09 cze 2015, 22:02

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Lewykapy »

Witam... Czy ktoś zna jakiś ciekawy system/strategie na godziny popołudniowe ... głównie godziny 16-22 ??

Gizbo
Uczestnik
Uczestnik
Posty: 4
Rejestracja: 02 gru 2015, 16:22

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Gizbo »

Dzień dobry,
Czy da się w MetaTrader4 zrobić aplikacje,która automatycznie ustawia Stop Loss i Take Profit na z góry ustalonym poziomie(wartość w pipsach od ceny rynkowej) przy natychmiastowym otwarciu pozycji?
Sam chce decydować kiedy otworzyć transakcje i robić to ręcznie, ale tak by stop loss i take profit był już automatycznie ustalony i bym nie musiał tego ręcznie robić. Czy to jest możliwe?

Awatar użytkownika
MarcinMC
Stały bywalec
Stały bywalec
Posty: 78
Rejestracja: 01 kwie 2014, 16:56

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: MarcinMC »

Siemka, mam trzy pytania:
1. Stworzyłem kilka przycisków, czy wiecie jak odczytać stan wciśnięcia przycisku ? np jeśli wciśnięty true, jeśli nie wciśnięty false.
2. Jak ustawić dla przycisku żeby kiedy go wciskam na wciśnięty żeby sam odskakiwał na nie wciśnięty.
3. Stworzyłem obiekt Edit nie wiem jak odczytywać w kodzie wartość wpisywaną w to pole.

Mam nadzieje, że zostałem zrozumiany.
Skype marcinmc92

Awatar użytkownika
adamForex
Gaduła
Gaduła
Posty: 117
Rejestracja: 28 gru 2015, 10:24

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: adamForex »

Gizbo pisze:Dzień dobry,
Czy da się w MetaTrader4 zrobić aplikacje,która automatycznie ustawia Stop Loss i Take Profit na z góry ustalonym poziomie(wartość w pipsach od ceny rynkowej) przy natychmiastowym otwarciu pozycji?
Poszukaj aplikacji, które nazywają się One Click Trading, np. https://justforex.com/trading/one-click-trading

Marek_6S
Uczestnik
Uczestnik
Posty: 4
Rejestracja: 25 paź 2015, 09:11

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Marek_6S »

Dzień dobry,

Uczę się MQL-a i mam pytanie kiedy stosujemy init(), deinit(), start(), a kiedy OnInit(), OnDeinit(), OnStart(), a może to zależy do wersji MQL-a ?

ODPOWIEDZ