Price Data Components
Orders Execution
Indicators Used
Miscellaneous
1
Views
0
Downloads
0
Favorites
JS-Chaos-V3
//+-----------------------------------------------------------------+
//| JS-Chaos-V2.mq4 |
//+-----------------------------------------------------------------+
//| HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH |
//| H\ \ http://wsforex.ru/ / / H |
//| H )----)----------------------------------------------(----( H |
//| H/ / Ïèøó òîðãîâûå ñèñòåìû íà çàêàç: wsforex.ru \ \ H |
//| HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH |
//+-----------------------------------------------------------------+
#property copyright "wsforex@list.ru"
#property link "http://wsforex.ru/"
//+-----------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+-----------------------------------------------------------------+
extern bool ExpertTime = True;
extern int OpenHour = 7;
extern int CloseHour = 18;
extern double Lots = 0.1;
extern int Otstup = 0;
extern double Fibo.1 = 1.618;
extern double Fibo.2 = 4.618;
extern int MagicNumber = 321232123;
//+-----------------------------------------------------------------+
extern bool ClosePos = True;
extern bool Trailing = True;
extern bool Besubitok = True;
extern int BesubUr = 1;
//+-----------------------------------------------------------------+
bool EaDisabled=False;
string com, Sy;
int dg, st, sp;
double MA, pa, pb, pt;
#include <stdlib.mqh> // Ñòàíäàðòíàÿ áèáëèîòåêà
//+-----------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+-----------------------------------------------------------------+
int init()
{
//----
if (!IsTesting()) {
if (IsExpertEnabled()) Message("\nÑîâåòíèê óñòàíîâëåí è áóäåò çàïóùåí ñëåäóþùèì òèêîì");
else Message("\nÂíèìàíèå! îòæàòà êíîïêà íà âêëàäêå ñîâåòíèêè");
}
Sy = Symbol();
//----
return(0);
}
//+-----------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+-----------------------------------------------------------------+
void start(){
// -----
com="JS-Chaos";
// -----
pb = MarketInfo(Sy,MODE_BID);
pa = MarketInfo(Sy,MODE_ASK);
dg = MarketInfo(Sy,MODE_DIGITS);
pt = MarketInfo(Sy,MODE_POINT);
sp = MarketInfo(Sy,MODE_SPREAD);
st = MarketInfo(Sy,MODE_STOPLEVEL);
// -----
Comment("\n\n\nÑîâåòíèê JS-Chaos âåñü â ðàáîòå: - ",IIcm(Tradetime()==1 && EaDisabled==False),
"\nÄåíü: - ",Dayof(),
"\nÒîðãîâûé ñ÷¸ò: - ",shet(),
"\nÂðåìÿ ïî GMT: - " + TimeToStr(TimeCurrent()-3600, TIME_MINUTES|TIME_SECONDS),
"\nSpread: - ",sp,
"\nStopLevel: - ",st,
"\n쑌֔: - ",AccountLeverage()
);
// -----
st=st+sp;
MA=iMA(NULL,0,5,3,MODE_SMMA,PRICE_MEDIAN,0);
if(Trailing)Trailing.MA();
if(Besubitok)ModifBesubitok();
// -----
double Fractals.Up=FractalsUp(10);
double Fractals.Dw=FractalsDw(10);
if(Tradetime()==1 && EaDisabled==False){
double tp, lots;
// ---- Ó Ñ Ò À Í Î Â Ê À -1- Î Ð Ä Å Ð À --------------------------------------------------------+
if(Signals()==1 && Fractals.Up>MA &&
OrdersCount(OP_BUYSTOP, MagicNumber)==0 && OrdersCount(OP_BUY, MagicNumber)==0) {
if(OrdersCount(OP_BUYSTOP, MagicNumber)==0) { tp = MA+(Fractals.Up-MA)*Fibo.1; lots=Lots*2; }
if(tp>0 && (tp-Fractals.Up)/pt>st && (Fractals.Up-MA)/pt>st && ND(pa+st*pt)<=Fractals.Up){
int tik.1=SetOrder(Sy, OP_BUYSTOP, lots, Fractals.Up, MA, tp, MagicNumber, com, 0);
if(tik.1>0) { GlobalVariableSet("Ticket.buy.1 "+Sy, tik.1);
}
}
}
// -----
if(Signals()==2 && Fractals.Dw<MA &&
OrdersCount(OP_SELLSTOP,MagicNumber)==0 && OrdersCount(OP_SELL, MagicNumber)==0) {
if(OrdersCount(OP_SELLSTOP,MagicNumber)==0) { tp = MA-(MA-Fractals.Dw)*Fibo.1; lots=Lots*2; }
if(tp>0 && (Fractals.Dw-tp)/pt>st && (MA-Fractals.Dw)/pt>st && ND(pb-st*pt)>Fractals.Dw){
int tik.2=SetOrder(Sy, OP_SELLSTOP, lots, Fractals.Dw, MA, tp, MagicNumber, com, 0);
if(tik.2>0) { GlobalVariableSet("Ticket.sell.1 "+Sy, tik.2);
}
}
}
// ---- Ó Ñ Ò À Í Î Â Ê À -2- Î Ð Ä Å Ð À --------------------------------------------------------+
if(Signals()==1 && Fractals.Up>MA && OrdersCount(OP_BUY, MagicNumber)==0
&& GetIndexTicket(GlobalVariableGet("Ticket.buy.1 "+Sy))==True && OrdersCount(OP_BUYSTOP,MagicNumber)==1) {
if(OrdersCount(OP_BUYSTOP, MagicNumber)==1) { tp = MA+(Fractals.Up-MA)*Fibo.2; lots=Lots*1; }
if(tp>0 && (tp-Fractals.Up)/pt>st && (Fractals.Up-MA)/pt>st && ND(pa+st*pt)<=Fractals.Up){
int tik.3=SetOrder(Sy, OP_BUYSTOP, lots, Fractals.Up, MA, tp, MagicNumber, com, 0);
if(tik.3>0) { GlobalVariableSet("Ticket.buy.2 "+Sy, tik.3);
}
}
}
// -----
if(Signals()==2 && Fractals.Dw<MA && OrdersCount(OP_SELL, MagicNumber)==0
&& GetIndexTicket(GlobalVariableGet("Ticket.sell.1 "+Sy))==True && OrdersCount(OP_SELLSTOP,MagicNumber)==1) {
if(OrdersCount(OP_SELLSTOP,MagicNumber)==1) { tp = MA-(MA-Fractals.Dw)*Fibo.2; lots=Lots*1; }
if(tp>0 && (Fractals.Dw-tp)/pt>st && (MA-Fractals.Dw)/pt>st && ND(pb-st*pt)>Fractals.Dw){
int tik.4=SetOrder(Sy, OP_SELLSTOP, lots, Fractals.Dw, MA, tp, MagicNumber, com, 0);
if(tik.4>0) { GlobalVariableSet("Ticket.sell.2 "+Sy, tik.4);
}
}
}
// ---------------------------------------------------------------------------------------------+
if(Signals()==2) {
DeleteOrders(OP_BUYSTOP, MagicNumber);
}
if(Signals()==1) {
DeleteOrders(OP_SELLSTOP, MagicNumber);
}
// -----
if(ClosePos) {
double MA=iMA(NULL,0,34,0,MODE_SMMA,PRICE_CLOSE,1);
if(MA>Open[1]) {
ClosePosBuy(MagicNumber);
}
if(MA<Open[1]) {
ClosePosSell(MagicNumber);
}
}
}
// -----
return(0);
}
//+-----------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+-----------------------------------------------------------------+
void ModifBesubitok()
{
//+----
bool fbu, fsl;
int cnt=OrdersTotal();
int t.buy.1 = GlobalVariableGet("Ticket.buy.1 "+Sy);
int t.buy.2 = GlobalVariableGet("Ticket.buy.2 "+Sy);
int t.sell.1 = GlobalVariableGet("Ticket.sell.1 "+Sy);
int t.sell.2 = GlobalVariableGet("Ticket.sell.2 "+Sy);
//+----
if(GetIndexTicket(t.buy.1)==false)fbu=true;
if(GetIndexTicket(t.sell.1)==false)fsl=true;
//+----
for (int i=0; i<cnt; i++) {
if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if (OrderSymbol()!=Symbol()) continue;
//+----
if (OrderType()==OP_BUY && t.buy.2==OrderTicket()) {
if (fbu==true && OrderStopLoss()<OrderOpenPrice() && (OrderOpenPrice()+st*Point)<=Bid){
ModifyOrder(OrderOpenPrice(), OrderOpenPrice()+BesubUr*Point,OrderTakeProfit(),OrderExpiration());
}
}
if (OrderType()==OP_SELL && t.sell.2==OrderTicket()) {
if (fsl==true && OrderStopLoss()>OrderOpenPrice() && (OrderOpenPrice()-st*Point)>=Ask){
ModifyOrder(OrderOpenPrice(), OrderOpenPrice()-BesubUr*Point,OrderTakeProfit(),OrderExpiration());
}
}
}
return(0);
}
//+-----------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+-----------------------------------------------------------------+
void Trailing.MA(){
//+----
double AC.0=iAC(NULL,0,0);
double AC.1=iAC(NULL,0,1);
double AO.0=iAO(NULL,0,0);
double AO.1=iAO(NULL,0,1);
double ma=ND(iMA(NULL,0,21,0,MODE_SMMA,PRICE_CLOSE,0));
double StdDev.0=iStdDev(Symbol(),0,10,0,0,PRICE_CLOSE,0);
double StdDev.1=iStdDev(Symbol(),0,10,0,0,PRICE_CLOSE,1);
//+----
int cnt=OrdersTotal();
for (int i=0; i<cnt; i++) {
if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderMagicNumber()!=MagicNumber) continue;
//+----
if(OrderType()==OP_BUY){
if((OrderStopLoss()<=0)||(OrderStopLoss()<ma && StdDev.0>StdDev.1 && AO.0>AO.1 && AC.0>AC.1)){
if(ND(OrderStopLoss())!=ma && ma+st*pt<=Bid){
ModifyOrder(OrderOpenPrice(),ma,OrderTakeProfit(),OrderExpiration());
}
}
}
//+----
if(OrderType()==OP_SELL){
if((OrderStopLoss()<=0)||(OrderStopLoss()>ma && StdDev.0>StdDev.1 && AO.0<AO.1 && AC.0<AC.1)){
if(ND(OrderStopLoss())!=ma && ma-st*pt>=Ask){
ModifyOrder(OrderOpenPrice(),ma,OrderTakeProfit(),OrderExpiration());
}
}
}
}
//+----
return(0);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
string Dayof(){
string dd;
switch(DayOfWeek()){
case 1: dd="Ïîíåäåëüíèê"; break;
case 2: dd="Âòîðíèê"; break;
case 3: dd="Ñðåäà"; break;
case 4: dd="×åòâåðã"; break;
case 5: dd="Ïÿòíèöà"; break;
case 6: dd="Ñóááîòà"; break;
case 7: dd="Âîñêðåñåíüå"; break;
}
return(dd);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
int Signals(){
// -----
double AC.1=iAC(Symbol(),0,1);
double AC.2=iAC(Symbol(),0,2);
double AO.0=iAO(Symbol(),0,0);
double AO.1=iAO(Symbol(),0,1);
double AO.2=iAO(Symbol(),0,2);
double AL.1=iMA(Symbol(),0, 5,3,MODE_SMMA,PRICE_MEDIAN,-3); // çåë¸íàÿ ëèíèÿ
double AL.2=iMA(Symbol(),0, 8,5,MODE_SMMA,PRICE_MEDIAN,-5); // êðàñíàÿ ëèíèÿ
double AL.3=iMA(Symbol(),0,13,8,MODE_SMMA,PRICE_MEDIAN,-8); // ñèíèÿ ëèíèÿ
// -----
if(AO.0>AO.1 && AO.1>0.0 && AL.1>AL.2 && AL.2>AL.3) { return(1); }
if(AO.0<AO.1 && AO.1<0.0 && AL.1<AL.2 && AL.2<AL.3) { return(2); }
// -----
return(0);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
int OrdersCount(int type, int mn)
{
//+----
int orders=0;
int cnt=OrdersTotal();
for (int i=0; i<cnt; i++) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderMagicNumber()!=mn) continue;
if (OrderType()==type) orders++;
}
//+----
return (orders);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
double FractalsUp(int bars){
for (int i=0; i<bars; i++) {
double fr = iFractals(Symbol(), 0, MODE_UPPER, i);
if(fr==iHigh(NULL,0,i))return (ND(fr+Otstup*pt));
}
return (0);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
double FractalsDw(int bars){
for (int i=0; i<bars; i++) {
double fr = iFractals(Symbol(), 0, MODE_LOWER, i);
if(fr==iLow(NULL,0,i))return (ND(fr-Otstup*pt));
}
return (0);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
void DeleteOrders(int op=-1, int mn=-1) {
bool fd;
int i, it, k=OrdersTotal();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderType()==op) {
if (OrderMagicNumber()==mn) {
for (it=1; it<=5; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
fd=OrderDelete(OrderTicket(), 0);
if (fd) { PlaySound("ok.wav"); break;
Sleep(1000*5);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
string IIcm(int com){
if(com==1)return("äà:"); else return("íåò:");
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
string shet(){
string s;
if (IsDemo())s="Äåìî"; else s="Ðåàë";
return(s);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
bool ExistOrders(string sy="", int op=-1, int mn=-1, datetime ot=0) {
int i, k=OrdersTotal(), ty;
// ----
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ty=OrderType();
if (ty>1 && ty<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ot<=OrderOpenTime()) return(True);
}
}
}
}
}
return(False);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
void Message(string m) {
Comment(m);
if (StringLen(m)>0) Print(m);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
string GetNameTF(int TimeFrame=0) {
if (TimeFrame==0) TimeFrame=Period();
switch (TimeFrame) {
case PERIOD_M1: return("M1");
case PERIOD_M5: return("M5");
case PERIOD_M15: return("M15");
case PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
case PERIOD_H4: return("H4");
case PERIOD_D1: return("Daily");
case PERIOD_W1: return("Weekly");
case PERIOD_MN1: return("Monthly");
default: return("Unknown Period");
}
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("Buy Limit");
case OP_SELLLIMIT: return("Sell Limit");
case OP_BUYSTOP : return("Buy Stop");
case OP_SELLSTOP : return("Sell Stop");
default : return("Unknown Operation");
}
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
int SetOrder(string sy, int op, double ll, double pp,
double sl=0, double tp=0, int mn=0, string co="", datetime ex=0) {
color cl=IIFc(op==OP_BUYLIMIT || op==OP_BUYSTOP, LightBlue, LightCoral);
datetime ot;
double pa, pb, mp;
int err, it, ticket, msl, sp;
// ----
if (sy=="" || sy=="0") sy=Symbol();
msl=MarketInfo(sy, MODE_STOPLEVEL);
if (co=="") co=WindowExpertName()+" "+GetNameTF(Period());
if (ex>0 && ex<TimeCurrent()) ex=0;
for (it=1; it<=5; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) {
Print("SetOrder(): Îñòàíîâêà ðàáîòû ôóíêöèè");
break;
}
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
ot=TimeCurrent();
sp=MarketInfo(sy, MODE_SPREAD);
pp=NormalizeDouble(pp, Digits);
sl=NormalizeDouble(sl, Digits);
tp=NormalizeDouble(tp, Digits);
ticket=OrderSend(sy, op, ll, pp, sp, sl, tp, co, mn, ex, cl);
if (ticket>0) { PlaySound("ok.wav"); break;
} else {
err=GetLastError();
if (err==128 || err==142 || err==143) {
Sleep(1000*66);
if (ExistOrders(sy, op, mn, ot)) { PlaySound("ok.wav"); break;
}
Print("Error(",err,") set order: ",ErrorDescription(err),", try ",it);
continue;
}
PlaySound("timeout.wav");
mp=MarketInfo(sy, MODE_POINT);
pa=MarketInfo(sy, MODE_ASK);
pb=MarketInfo(sy, MODE_BID);
if (pa==0 && pb==0) Message("SetOrder(): Ïðîâåðüòå â îáçîðå ðûíêà íàëè÷èå ñèìâîëà "+sy);
Print("Error(",err,") set order: ",ErrorDescription(err),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op),
" pp=",pp," sl=",sl," tp=",tp," mn=",mn);
// Áëîêèðîâêà ðàáîòû ñîâåòíèêà
if (err==2 || err==64 || err==65 || err==133) {
EaDisabled=True; break;
}
// Äëèòåëüíàÿ ïàóçà
if (err==4 || err==131 || err==132) {
Sleep(1000*300); break;
}
// Ñëèøêîì ÷àñòûå çàïðîñû (8) èëè ñëèøêîì ìíîãî çàïðîñîâ (141)
if (err==8 || err==141) Sleep(1000*100);
if (err==139 || err==140 || err==148) break;
// Îæèäàíèå îñâîáîæäåíèÿ ïîäñèñòåìû òîðãîâëè
if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
// Îáíóëåíèå äàòû èñòå÷åíèÿ
if (err==147) {
ex=0; continue;
}
if (err!=135 && err!=138) Sleep(1000*7.7);
}
}
return(ticket);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
int Tradetime(){
// ---
int TradingTime=0;
if(OpenHour>CloseHour){
if (Hour()<=CloseHour || Hour()>=OpenHour)TradingTime=1;
}
if(OpenHour<CloseHour){
if(Hour()>=OpenHour && Hour()<=CloseHour)TradingTime=1;
}
if(OpenHour==CloseHour){
if(Hour()==OpenHour)TradingTime=1;
}
if (DayOfWeek()==1 && Hour()<3)TradingTime=0;
if (DayOfWeek()>=5 && Hour()>18)TradingTime=0;
if (Month()==1 && Day()<10)TradingTime=0;
if (Month()==12 && Day()>20)TradingTime=0;
if (ExpertTime==false)TradingTime=1;
// ---
return(TradingTime);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
bool GetIndexTicket(int ti) {
int i, k=OrdersTotal();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderTicket()==ti) return(true);
}
}
return(false);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
void ClosePosBuy(int mn) {
int cnt = OrdersTotal();
int sp=MarketInfo(Symbol(), MODE_SPREAD);
for (int i=cnt-1; i>=0; i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != mn) continue;
if (OrderType() == OP_BUY)
OrderClose(OrderTicket(), OrderLots(), Bid, sp);
}
}
void ClosePosSell(int mn) {
int cnt = OrdersTotal();
int sp=MarketInfo(Symbol(), MODE_SPREAD);
for (int i=cnt-1; i>=0; i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != mn) continue;
if (OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), Ask, sp);
}
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
color cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, Blue, Red);
double op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
if (pp<=0) pp=OrderOpenPrice();
if (sl<0 ) sl=OrderStopLoss();
if (tp<0 ) tp=OrderTakeProfit();
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice() , dg);
os=NormalizeDouble(OrderStopLoss() , dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);
if (pp!=op || sl!=os || tp!=ot) {
for (it=1; it<=5; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
if (fm) { PlaySound("Stops.wav"); break;
} else {
er=GetLastError();
PlaySound("timeout.wav");
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
" op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp);
Sleep(1000*10);
}
}
}
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
double ND(double np) {
double pp, ts=MarketInfo(Symbol(), MODE_TICKSIZE);
int di=MarketInfo(Symbol(), MODE_DIGITS);
if (ts>0) pp=NormalizeDouble(np/ts, 0)*ts;
else {if (di>0) pp=NormalizeDouble(np*di, 0)/di; else pp=np;
}
return(pp);
}
//+------------------------------------------------------------------------------+
//| Àâòîð : Ñåðãåé - ìîé ñàéò - "http://wsforex.ru/" |
//+------------------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---