Wszystkie pytania dozwolone początkujących programistów
Re: Wszystkie pytania dozwolone początkujących programistów
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
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
-
- Stały bywalec
- Posty: 21
- Rejestracja: 16 wrz 2010, 13:59
Re: Wszystkie pytania dozwolone początkujących programistów
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ł.
-- Dodano: wt 04-04-2017, 11:41 --
Jest jeszcze
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.
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);
}
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);
}
-- Dodano: wt 04-04-2017, 12:03 --
Ok. Sprzedaż nie działa czemuś tylko w testerze.
Re: Wszystkie pytania dozwolone początkujących programistów
Witam,
Próbuję uruchomić najprostszy skrypt MT4 ale server zwraca błąd 4112. Opcja "Zezwalaj na automatyczny traiding" zaptaszona. Broker XTB.
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
- investsoft.pl
- Stały bywalec
- Posty: 35
- Rejestracja: 30 sie 2013, 11:38
Re: Wszystkie pytania dozwolone początkujących programistów
Zgodnie z dokumentacją: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"); //--- }
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.
Re: Wszystkie pytania dozwolone początkujących programistów
Coś było ostatnio na forum, że któryś rodzaj rachunku XTB nie obsługuje automatów. Chyba konto Basic.
Solą życia jest kasa.
Re: Wszystkie pytania dozwolone początkujących programistów
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
- investsoft.pl
- Stały bywalec
- Posty: 35
- Rejestracja: 30 sie 2013, 11:38
Re: Wszystkie pytania dozwolone początkujących programistów
Możesz wykorzystać następujący kod do sprawdzenia czasu świecy która została kliknięta: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 ?
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);
}
}
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.
Re: Wszystkie pytania dozwolone początkujących programistów
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?
Mogę też ustawić indywidualny kolor dla tych linii. Więc może da się zidentyfikować cenę po kolorze linii?
Re: Wszystkie pytania dozwolone początkujących programistów
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
}