Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Nieśmiertelny Trader

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

Nieprzeczytany post autor: Nieśmiertelny Trader »

Witam, chodzi o luktom visual order.

Robię wszystko jak na filmiku. Wrzucam plik do experts w bossafx i niestety go nie wykrywa. W mforex bez problemu. Ktoś coś?

Dzięki

dobra, dalem rade :)

damian1301
Stały bywalec
Stały bywalec
Posty: 21
Rejestracja: 16 wrz 2010, 13:59

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

Nieprzeczytany post autor: damian1301 »

Hej. Wie ktoś jak zmienić kod, który działa jak zlecenie oczekujące, tylko nie otwiera od razu pozycji a czeka aż się zamknie jakaś świeczka powyżej przebitej wcześniej ceny kupna. Modyfikacja miałaby polegać na tym, że jeśli pojawi się więcej niż zadana ilość świeczek to nie otwiera pozycji. Np. wykres przebił daną cenę i po godzinie się cofnął. Ale ustawione jest, że tylko 2 świeczki ma na otwarcie pozycji, więc jej nie otworzył.

Kod: Zaznacz cały

 
    double close1 = iClose(NULL,0,1);
    double close2 = iClose(NULL,0,2);
    
    if(CountOrders(MagicNumber,OP_BUY) == 0 && close1 > ObjectGetDouble(0,"Wsp",OBJPROP_PRICE) && close2 < ObjectGetDouble(0,"Wsp",OBJPROP_PRICE))
    {                                            
    OrderSend(Symbol(),OP_BUY, Lots,Ask,Slippage,Ask-Stoploss*Point,Ask+ProfitTarget*Point," buy",MagicNumber,0,Blue);
    }
-- Dodano: wt 04-04-2017, 11:41 --

Jest jeszcze

Kod: Zaznacz cały

int CountOrders(int MagicNumber,int type) 
{  
   int count = 0; 
   int cnt;  
   for(cnt = 0 ; cnt < OrdersTotal() ; cnt++)   
   {      
      OrderSelect(cnt, SELECT_BY_POS,MODE_TRADES);  
   
      if (OrderMagicNumber()!=MagicNumber || OrderType() != type || OrderSymbol() != Symbol()) continue;     
      count++;    
   }
   return (count);
}
Nie bardzo też wiem jak zrobić oczekujące zlecenie sprzedaży.

-- Dodano: wt 04-04-2017, 12:03 --

Ok. Sprzedaż nie działa czemuś tylko w testerze.

rrozak
Stały bywalec
Stały bywalec
Posty: 76
Rejestracja: 19 mar 2010, 16:43

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

Nieprzeczytany post autor: rrozak »

Witam,

Próbuję uruchomić najprostszy skrypt MT4 ale server zwraca błąd 4112. Opcja "Zezwalaj na automatyczny traiding" zaptaszona. Broker XTB.

Kod: Zaznacz cały

void OnStart()
  {
//--- get minimum stop level
   double minstoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
   Print("Minimum Stop Level=",minstoplevel," points");
   double price=Ask;
//--- calculated SL and TP prices must be normalized
   double stoploss=NormalizeDouble(Bid-minstoplevel*Point,Digits);
//   stoploss=0;
   double takeprofit=NormalizeDouble(Bid+minstoplevel*Point,Digits);
//   takeprofit=0;
//--- place market order to buy 1 lot
   int ticket=OrderSend(Symbol(),OP_BUY,1,price,3,stoploss,takeprofit,"My order",16384,0,clrGreen);
   if(ticket<0)
     {
      Print("OrderSend failed with error #",GetLastError());
     }
   else
      Print("OrderSend placed successfully");
//---
  }
Orły nie jedzą much

Awatar użytkownika
investsoft.pl
Stały bywalec
Stały bywalec
Posty: 35
Rejestracja: 30 sie 2013, 11:38

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

Nieprzeczytany post autor: investsoft.pl »

rrozak pisze:Witam,

Próbuję uruchomić najprostszy skrypt MT4 ale server zwraca błąd 4112. Opcja "Zezwalaj na automatyczny traiding" zaptaszona. Broker XTB.

Kod: Zaznacz cały

void OnStart()
  {
//--- get minimum stop level
   double minstoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
   Print("Minimum Stop Level=",minstoplevel," points");
   double price=Ask;
//--- calculated SL and TP prices must be normalized
   double stoploss=NormalizeDouble(Bid-minstoplevel*Point,Digits);
//   stoploss=0;
   double takeprofit=NormalizeDouble(Bid+minstoplevel*Point,Digits);
//   takeprofit=0;
//--- place market order to buy 1 lot
   int ticket=OrderSend(Symbol(),OP_BUY,1,price,3,stoploss,takeprofit,"My order",16384,0,clrGreen);
   if(ticket<0)
     {
      Print("OrderSend failed with error #",GetLastError());
     }
   else
      Print("OrderSend placed successfully");
//---
  }
Zgodnie z dokumentacją:

ERROR 4112: ERR_TRADE_EXPERT_DISABLED_BY_SERVER
Automated trading by Expert Advisors/Scripts disabled by trade server

Błąd ten oznacza, że handel automatyczny jest wyłączony dla bieżącego rachunku na serwerze, czyli po stronie brokera.

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

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

Nieprzeczytany post autor: personov »

Coś było ostatnio na forum, że któryś rodzaj rachunku XTB nie obsługuje automatów. Chyba konto Basic.
Solą życia jest kasa.

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 »

Hej chciałbym napisać prosty wskaźnik który by rysował linie w 50% ciała świecy po kliknięciu na świecę myszką. Tylko właśnie z tym kliknięciem mam problem, jak w mql to napisać zeby wiedzieć w co klikam ?
Skype marcinmc92

Awatar użytkownika
investsoft.pl
Stały bywalec
Stały bywalec
Posty: 35
Rejestracja: 30 sie 2013, 11:38

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

Nieprzeczytany post autor: investsoft.pl »

MarcinMC pisze:Hej chciałbym napisać prosty wskaźnik który by rysował linie w 50% ciała świecy po kliknięciu na świecę myszką. Tylko właśnie z tym kliknięciem mam problem, jak w mql to napisać zeby wiedzieć w co klikam ?
Możesz wykorzystać następujący kod do sprawdzenia czasu świecy która została kliknięta:

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   if (id == CHARTEVENT_CLICK)
   {
      int subwindow=0;
      datetime time=0;
      double price=0;
      ChartXYToTimePrice(ChartID(), (int)lparam, (int)dparam, subwindow, time, price);
   }
  }
Parametry lparam i dparam zawierają odpowiednio współrzędną X i Y wskaźnika myszy w momencie kliknięcia.

Funkcją ChartXYToTimePrice możesz zamienić współrzędne na cenę i czas i tym sposobem w zmiennej time otrzymasz czas klikniętej świecy.

Indeks klikniętej świecy na podstawie czasu możesz odczytać dzięki funkcji iBarShift.

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 »

Dzięki :)
Skype marcinmc92

Ważniak
Stały bywalec
Stały bywalec
Posty: 83
Rejestracja: 20 lis 2015, 21:44

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

Nieprzeczytany post autor: Ważniak »

Jak pobrać cenę linii horyzontalnej nazwanej według schematu prefiks+numer+" SL". Z tym, że numer i cena będą się zmieniały a nie wiem na jakie wartości. Przykład: Pierwsza linia nazywa się "#3 SL", gdy znika pierwsza pojawia się następna "#11 SL", jak zniknie pojawi się trzecia np. "#376 SL". Jak wziąć cenę każdej z tych linii? Zaznaczam, że mam na wykresie też inne linie z "#" ale nie ma w jednym czasie więcej niż jednej z " SL".
Mogę też ustawić indywidualny kolor dla tych linii. Więc może da się zidentyfikować cenę po kolorze linii?

z6yszko
Gaduła
Gaduła
Posty: 266
Rejestracja: 17 sty 2011, 10:09

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

Nieprzeczytany post autor: z6yszko »

Jeśli jest to OBJ_HLINE (czyli linia horyzontalna z jedną ceną), to cenę odczytasz w następujący sposób:

Kod: Zaznacz cały

   double price=0;
   for(int i=ObjectsTotal()-1;i>=0;i--)
     {
      string name=ObjectName(i);
      if(StringSubstr(name,0,1)=="#" && StringFind(name,"SL")>=0)
        {
         price=ObjectGetDouble(0,name,OBJPROP_PRICE);
        }
      break;
     }
   if(price > 0)
    {
       //--- dalsze instrukcje
    }

ODPOWIEDZ