Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
maximus_v9_swith_commentsx
#property copyright "Evgeny I. SHCHERBINA"
//maximus_vX.mq4
//12.04.2011
//Ïðè èñïîëüçîâàíèè êîíöåïòîâ ñîâåòíèêà ññûëêà íà àâòîðà îáÿçàòåëüíà.
/*Îïèñàíèå ñîâåòíèêà maximus_vX
1. Ïðîâåðåííàÿ ðàáîòà íà 15-ìèíóòíîì ãðàôèêå åâðîäîëëàðà. Äëÿ äðóãèõ òàéìôðåéìîâ è ïàð ðåêîìåíäóåòñÿ ïðîâåñòè
òåñòèðîâàíèå ñ öåëüþ ïîäáîðà íàèáîëåå îïòèìàëüíûõ ïàðàìåòðîâ.
2. Ïîñêîëüêó èçíà÷àëüíî ñîâåòíèê ïðåäíàçíà÷àëñÿ äëÿ òîðãîâëè âî âðåìÿ ôëåòà, ðåêîìåíäóåòñÿ âûêëþ÷àòü ñîâåòíèê,
êîãäà íà ðûíêå îæèäàþòñÿ ñåðüåçíûå ìàêðîýêîíîìè÷åñêèå äàííûå (1-2 ðàçà â ìåñÿö).
3. Ñîâåòíèê îòêðûâàåò îñíîâíóþ ñäåëêó è êîìïåíñàöèîííóþ, åñëè îñíîâíàÿ âûõîäèò â ìèíóñ. Ìàêñèìàëüíîå òåîðåòè÷åñêîå êîëè÷åñòâî
ñäåëîê - 10. Îäíàêî íà ïðàêòèêå îäíîâðåìåííî ìîæåò áûòü íå áîëåå 6 ñäåëîê.
4. Âîçìîæíî äâà òèïà ñäåëîê:
à) Íà ïðîáîå - öåíà ïðîáèâàåò ìàêñèìóì èëè ìèíèìóì è èäåò äàëüøå. Öåíà íå âîçâðàùàåòñÿ. Ñðàáàòûâàåò ñäåëêà â íàïðàâëåíèè ïðîáîÿ.
á) Íà ðàçâîðîòå - ïðè äîñòèæåíèè ìàêñèìóìà èëè ìèíèìóìà âûñòàâëÿåòñÿ ìåòêà ïðåäâàðèòåëüíîãî ïðîáîÿ óðîâíÿ.
Åñëè öåíà ðàçâîðà÷èâàåòñÿ è îïóñêàåòñÿ íèæå (ïîäíèìàåòñÿ âûøå) ìåòêè, îòêðûâàåòñÿ ñäåëêà.
5. Êîìïåíñàöèîííàÿ ñäåëêà îòêðûâàåòñÿ îò ñëåäóþùåãî ýêñòðåìóìà ïî äâîéíîìó îáúåìó â íàïðàâëåíèè îñíîâíîé ñäåëêè.
Óðîâíè òåéêïðîôèòà îáåèõ ñäåëîê ñâîäÿòñÿ â îäíó ëèíèþ. Òàêèì îáðàçîì, öåíà äîëæíà ðåàëèçîâàòü êîððåêöèþ íà òðåòü,
÷òîáû îáå ñäåëêè çàêðûëèñü ñ íåáîëüøèì ïëþñîì (áåçóáûòî÷íàÿ ñòðàòåãèÿ).
6. Âñå óðîâíè îïðåäåëÿþòñÿ ñîâåòíèêîì àâòîìàòè÷åñêè. Èõ òàêæå ìîæíî ïåðåíîñèòü âðó÷íóþ, íîâûå çíà÷åíèÿ ó÷èòûâàþòñÿ
ñîâåòíèêîì. Ïðè íåîáõîäèìîñòè ñîâåòíèê îòïðàâëÿåò íîâîå çíà÷åíèå óðîâíÿ íà ñåðâåð.
7. Òàáëî ñîâåòíèêà èìååò òðè êíîïêè: "Çàêðûòèå â ïëþñå", "Ðó÷íîå çàêðûòèå" è "Äèíàìè÷åñêèé òðåéëèí-ñòîï". Âêëþ÷åíèå êíîïêè
ïðîèñõîäèò ïóòåì åå ïåðåìåùåíèÿ âëåâî - êíîïêà èçìåíèò öâåò è âêëþ÷èò ñîîòâåòñòâóþùóþ ôóíêöèþ. ×òîáû âûêëþ÷èòü êíîïêó,
ïåðåìåñòèòå åå âïðàâî. (Óñòàíîâèòü ôëàã íàïðîòèâ ïóíêòà "Âûäåëÿòü îáúåêò ïî îäèíî÷íîìó êëèêó ìûøè" â ìåíþ
Ìåòàòðåéäåðà Íàñòðîéêè >> Îáúåêòû.)
8. Êíîïêà "Äèíàìè÷åñêèé òðåéëèí-ñòîï" çàìåíÿåò ôèêñèðîâàííûé òðåéëèí-ñòîï â 20 ïóíêòîâ íà äèíàìè÷åñêèé - 50%, âêëþ÷åíèå ïðè
äîñòèæåíèè 4 ïóíêòîâ ïðèáûëè.
9. ×åòûðå öâåòà - Green, Red, Lime è Maroon - çàðåçåðâèðîâàíû çà ñîâåòíèêîì è èñïîëüçóþòñÿ äëÿ îïðåäåëåíèÿ
óðîâíåé, îòêðûòèÿ è çàêðûòèÿ ñäåëîê. Íå ñëåäóåò ñîçäàâàòü íà ãðàôèêå äðóãèå îáúåêòû ñ ýòèìè öâåòàìè, òàê êàê îíè
ìîãóò ïîìåøàòü ïðàâèëüíîé ðàáîòå ñîâåòíèêà.
10 Ðÿä íåîáõîäèìûõ ïàðàìåòðîâ ñîõðàíÿåòñÿ â îïèñàíèè ñîçäàâàåìûõ íà ãðàôèêå îáúåêòîâ.
11. Íåñêîëüêî äðóãèõ èíòóèòèâíî ïîíÿòíûõ ôóíêöèé è ïàðàìåòðîâ (èíôîðìàöèîííîå òàáëî è ñîïðîâîæäåíèå ñäåëîê).
========================================================================================================================
Èñòîðèÿ èçìåíåíèé
maximus_v2 (14.06.2011)
1. Àâòîìàòè÷åñêèé ðàñ÷åò ëîòà â çàâèñèìîñòè îò óñòàíîâëåííîãî ðèñêà.
2. Êîììåíòèðîâàíèå ñäåëîê, ñîâåòíèê ìîæåò áûòü ñîâìåùåí ñ äðóãèìè ñòðàòåãèÿìè.
maximus_v3 (01.07.2011)
3. Îïòèìèçàöèÿ òàáëî ñîâåòíèêà.
maximus_v4 (08.07.2011)
4. Àâòîìàòè÷åñêîå îïðåäåëåíèå óðîâíåé äîïîëíåíî ðó÷íûì èçìåíåíèåì. Íîâûå çíà÷åíèÿ ó÷èòûâàþòñÿ ñîâåòíèêîì äëÿ ðàñ÷åòà
íåîáõîäèìûõ ïàðàìåòðîâ.
5. Äîáàâëåíû êíîïêè "Ðó÷íîå çàêðûòèå", "Çàêðûòèå â ïëþñå" è "Äèíàìè÷åñêèé òðåéëèí-ñòîï".
6. Óäàëåíî îïðåäåëåíèå ôëåòîâîãî êîðèäîðà â ñèëó íåçíà÷èòåëüíîé ïðàêòè÷åñêîé ïîëüçû.
maximus_v5 (10.07.2011)
7. Óñòàíîâëåí ôèëüòð ïî èíäèêàòîðó Ñòîõàñòèê. Ôèëüòð âêëþ÷àåòñÿ ÷åðåç Ìåòàòðåéäåð (ïî óìîë÷àíèþ âûêëþ÷åí).
maximus_v6 (14.07.2011)
8. Èçìåíåíèå ïîðÿäêà îòêðûòèÿ ñäåëîê íà ðàçâîðîòå, äîáàâëåíèå ìåòêè ïðåäâàðèòåëüíîãî ïðîáîÿ. Äëÿ îòêðûòèÿ ñäåëêè â îáðàòíîì
íàïðàâëåíèè òðåáóåòñÿ äåéñòâèòåëüíûé ðàçâîðîò.
maximus_v7 (17.07.2011)
9. Äîáàâëåíî îòêðûòèå ñäåëîê íà ïðîáîé.
10. Óâåëè÷åíî ìàêñèìàëüíîå êîëè÷åñòâî ñäåëîê - ñ äâóõ äî 10 (ìàêñèìàëüíîå òåîðåòè÷åñêîå
êîëè÷åñòâî ñäåëîê).
11. Äîáàâëåíî äâà ïîäâèäà ñäåëîê: òàê íàçûâàåìàÿ "äîëèâêà" è âîëàòèëüíàÿ ñäåëêà (åñëè ïðîèñõîäèò ðåçêèé îòñêîê îò óðîâíÿ, ðàññ÷èòûåòñÿ
ïî ðàçíèöå ñòàíäàðòíîãî îòêëîíåíèÿ).
Ýòè äâà ïîäâèäà îòêðûâàþòñÿ íåçàâèñèìî îò ñóùåñòâóþùèõ ñäåëîê, îòñþäà ôîðìóëèðîâêà "òåîðåòè÷åñêîå ìàêñèìàëüíîå êîëè÷åñòâî ñäåëîê".
*/
extern bool sound = TRUE; //Âêëþ÷åíèå è âûêëþ÷åíèå çâóêà
extern bool stochastic = FALSE; //Âêëþ÷åíèå è âûêëþ÷åíèå ôèëüòðà ïî ñòîõàñòèêó
extern double deviation = 6; //Ðàçíèöà ñòàíäàðòíîãî îòêëîíåíèÿ â öåëûõ ÷èñëàõ
extern int range = 40; //Ìèíèìàëüíûé äèàïàçîí ìåæäó ñîïðîòèâëåíèåì è ïîääåðæêîé
extern int risk = 1000; //Ñîîòíîøåíèå ðèñêà - äåïîçèò ê ëîòó
extern int trail = 20; //Òðåéëèí-ñòîï
extern int distance = 5; //Ðàññòîÿíèå îò ìåòêè ïðîáîÿ, ïîñëå êîòîðîãî îòêðûâàåòñÿ ñäåëêà
double green_buy, d1, d1_1, h1, h1_1, h4, h4_1, lot, maxi, mini, minus, minus_num, plus, plus_num, profit_max, red_sell, spread, st, st_1;
int corner, global_maxi, global_mini, last_cancel, trades;
int init(){
define_corner();//Îïðåäåëÿåò óãîë, â êîòîðîì ðàñïîëàãàåòñÿ èíôîðìàöèîííîå òàáëî
find_maxi(0,0);//Îïðåäåëÿåò ìàêñèìóì (ñîïðîòèâëåíèå)
find_mini(0,0);//Îïðåäåëåÿåò ìèíèìóì (ïîääåðæêó)
}
int start(){
comments("line",5,150,corner,"---------------------------------------------",Aqua);
d1 = MathFloor(iStochastic(NULL,PERIOD_D1,5,3,3,MODE_LWMA,0,MODE_MAIN,0));
d1_1 = MathFloor(iStochastic(NULL,PERIOD_D1,5,3,3,MODE_LWMA,0,MODE_MAIN,1));
h1 = MathFloor(iStochastic(NULL,PERIOD_H1,5,3,3,MODE_LWMA,0,MODE_MAIN,0));
h1_1 = MathFloor(iStochastic(NULL,PERIOD_H1,5,3,3,MODE_LWMA,0,MODE_MAIN,1));
h4 = MathFloor(iStochastic(NULL,PERIOD_H4,5,3,3,MODE_LWMA,0,MODE_MAIN,0));
h4_1 = MathFloor(iStochastic(NULL,PERIOD_H4,5,3,3,MODE_LWMA,0,MODE_MAIN,1));
st = iStdDev(NULL,0,12,0,MODE_LWMA,PRICE_CLOSE,0)*10000;
st_1 = iStdDev(NULL,0,12,0,MODE_LWMA,PRICE_CLOSE,1)*10000;
if(st-st_1 > deviation){comments("iStDev",5,75,corner,"iStDev: "+DoubleToStr(st,2)+" - "+DoubleToStr(st_1,2)+" = "+DoubleToStr((st-st_1),2),Magenta);}
else{comments("iStDev",5,75,corner,"iStDev: "+DoubleToStr(st,2)+" - "+DoubleToStr(st_1,2)+" = "+DoubleToStr((st-st_1),2),Aqua);}
lot = NormalizeDouble(AccountEquity()/risk/10,3);
if(lot < 0.01){lot = 0.01;}
else if(lot > 2.5){lot = 2.5;}
spread = MarketInfo(Symbol(),MODE_SPREAD);
comments("range",5,45,corner,"Äèàïàçîí: "+DoubleToStr((maxi-mini)/Point/10,1)+" ("+range+" ïî óìîë÷.)",Aqua);
comments("lot",5,60,corner,"Ëîò: "+DoubleToStr(lot,3)+"; ñïðåä: "+DoubleToStr(spread/10,1)+"; "+DoubleToStr((AccountProfit()/AccountBalance())*100,2)+"%",Aqua);
if(stochastic == FALSE){comments("stochastic",5,90,corner,"H1: "+DoubleToStr(h1,0)+" ("+DoubleToStr(h1_1,0)+"); H4: "+DoubleToStr(h4,0)+" ("+DoubleToStr(h4_1,0)+"); D1: "+DoubleToStr(d1,0)+" ("+DoubleToStr(d1_1,0)+")",Aqua);}
else{comments("stochastic",5,90,corner,"H1: "+DoubleToStr(h1,0)+" ("+DoubleToStr(h1_1,0)+"); H4: "+DoubleToStr(h4,0)+" ("+DoubleToStr(h4_1,0)+"); D1: "+DoubleToStr(d1,0)+" ("+DoubleToStr(d1_1,0)+")",Magenta);}
double buy_lots, buy_profits, sell_lots, sell_profits;
int buy_ticket, buy2_ticket, buys, i, sell_ticket, sell2_ticket, sells;
for(i=0; i<OrdersTotal(); i++){//Ïåðå÷èñëåíèå îòêðûòûõ ñäåëîê
OrderSelect(i,SELECT_BY_POS);
if(OrderType() == OP_BUY && StringFind(OrderComment(),"m_buy",0) != -1){
buys++;
buy_lots += OrderLots();
buy_profits += (MathAbs(OrderProfit()));
if(OrderComment() == "m_buy"){buy_ticket = OrderTicket();}
else if(OrderComment() == "m_buy2"){buy2_ticket = OrderTicket();}
}
if(OrderType() == OP_SELL && StringFind(OrderComment(),"m_sell",0) != -1){
sells++;
sell_lots += OrderLots();
sell_profits += (MathAbs(OrderProfit()));
if(OrderComment() == "m_sell"){sell_ticket = OrderTicket();}
else if(OrderComment() == "m_sell2"){sell2_ticket = OrderTicket();}
}
if(OrderProfit()/OrderLots() < -10){unsure_trade(OrderTicket());}
add(OrderTicket());
define_takeprofit(OrderTicket());
}
if(i >= OrdersTotal()-1){//Ïåðå÷èñëåíèå îòêðûòûõ ñäåëîê âûïîëíåíî. Âûïîëíåíèå íåîáõîäèìûõ äåéñòâèé
if(buys+sells > trades){//Åñëè åñòü íîâàÿ ñäåëêà
trades = buys+sells;
change_label();//Èçìåíÿåò ïîäïèñü "òðåóãîëüíèêà" ñäåëêè (îáúåêò íà ãðàôèêå)
if(sound == TRUE){PlaySound("news.wav");}
Sleep(1000);
}
if(buys+sells < trades){//Åñëè ñäåëêà çàêðûëàñü
trades = buys+sells;
define_corner();
find_maxi(0,0);
find_mini(0,0);
redefine_takeprofit();//Çàíîâî ðàññ÷èòûâàåò óðîâíè òåéêïðîôèòà
GlobalVariableSet("last_trade",Time[0]);
profit_max = 0;
if(sound == TRUE){PlaySound("ok.wav");}
Sleep(1000);
}
if(trades == 0){comments("profit",5,165,corner,"Ïðèáûëü: 0.0 (ìàêñ. 0.0)",Aqua); ObjectSet("close_manual",OBJPROP_XDISTANCE,5);}
if(buys == 0){ObjectDelete("takeprofit_buy"); open_first(OP_BUY,st-st_1);}
if(buys == 1){open_second(buy_ticket,"m_buy2",buy_lots,Close[0]+(((buy_profits/buy_lots/2)+10)*Point));}
if(buys == 2){open_second(buy2_ticket,"m_buy3",buy_lots/2,Close[0]+(((buy_profits/buy_lots/2)+10)*Point));}
if(sells == 0){ObjectDelete("takeprofit_sell"); open_first(OP_SELL,st-st_1);}
if(sells == 1){open_second(sell_ticket,"m_sell2",sell_lots,Close[0]-(((sell_profits/sell_lots/2)+10)*Point));}
if(sells == 2){open_second(sell2_ticket,"m_sell3",sell_lots/2,Close[0]-(((sell_profits/sell_lots/2)+10)*Point));}
}
calculate_compensation();//Ðàññ÷èòûâàåò êîìïåíñàöèþ (èçíà÷àëüíî - ïî äîñòèæåíèþ íóëåâîé ïðîôèòíîñòè)
check_extremes();//Ïðîâåðÿåò ïîëîæåíèå ïîääåðæêè è ñîïðîòèâëåíèÿ
close_manual();//Çàêðûâàåò âñå ñäåëêè
close_plus();//Çàêðûâàåò ïëþñîâûå ñäåëêè
instantiate_levels();//Îïðåäåëÿåò óðîâíè
play_sound();//Çâóê
trail();//Òðåéëèí-ñòîï
volatile_trade();//Îòêðûâàåò âîëàòèëüíóþ ñäåëêó (êîãäà ïðîèñõîäèò ðåçêèé îòñêîê îò óðîâíÿ)
}
int deinit(){
ObjectDelete("takeprofit_buy");
ObjectDelete("takeprofit_sell");
}
int define_corner(){
double diff = WindowPriceMax()-WindowPriceMin();
if(Close[0] < (WindowPriceMin()+diff/2)){corner = 1;}
else{corner = 3;}
}
int find_maxi(int points, int transf_maxi){
int i;
double oc1, oc2, oc3, oc4, oc5, oc6, oc7, oc8, oc9;
for(i=4; i<=480; i++){
if(Close[i] > Open[i]){oc5 = Close[i];}else{oc5 = Open[i];}
if(oc5 > Close[0]+points*Point && oc5 > Close[1] && oc5 > Close[2] && oc5 > Close[3] && oc5 > Open[1] && oc5 > Open[2] && oc5 > Open[3] && (points == 0 || (points != 0 && global_maxi != transf_maxi))){
if(Close[i-4] > Open[i-4]){oc1 = Close[i-4];}else{oc1 = Open[i-4];}
if(Close[i-3] > Open[i-3]){oc2 = Close[i-3];}else{oc2 = Open[i-3];}
if(Close[i-2] > Open[i-2]){oc3 = Close[i-2];}else{oc3 = Open[i-2];}
if(Close[i-1] > Open[i-1]){oc4 = Close[i-1];}else{oc4 = Open[i-1];}
if(Close[i+1] > Open[i+1]){oc6 = Close[i+1];}else{oc6 = Open[i+1];}
if(Close[i+2] > Open[i+2]){oc7 = Close[i+2];}else{oc7 = Open[i+2];}
if(Close[i+3] > Open[i+3]){oc8 = Close[i+3];}else{oc8 = Open[i+3];}
if(Close[i+4] > Open[i+4]){oc9 = Close[i+4];}else{oc9 = Open[i+4];}
if(oc1 <= oc5 && oc2 <= oc5 && oc3 <= oc5 && oc4 <= oc5 && oc6 <= oc5 && oc7 <= oc5 && oc8 <= oc5 && oc9 <= oc5){
ObjectDelete("line_maxi");
ObjectDelete("maxi_magenta");
maxi = oc5-35*Point;
ObjectCreate("line_maxi",OBJ_HLINE, 0, 0, maxi);
ObjectSet("line_maxi",OBJPROP_COLOR,Aqua);
ObjectSet("line_maxi",OBJPROP_STYLE,STYLE_DASHDOTDOT);
comments("maxi",5,15,corner,"Íîâûé ìàêñèìóì: "+DoubleToStr(maxi,5),Aqua);
if(points != 0){global_maxi = transf_maxi;}
break;
}
}
}
if(i >= 480 && (points == 0 || (points != 0 && global_maxi != transf_maxi))){
ObjectDelete("line_maxi");
maxi = Close[0] + range*10*Point;
ObjectCreate("line_maxi",OBJ_HLINE,0,0,maxi);
ObjectSet("line_maxi",OBJPROP_COLOR,Magenta);
ObjectSet("line_maxi",OBJPROP_STYLE,STYLE_DASHDOTDOT);
comments("maxi",45,15,corner,"Íîâûé ìàêñèìóì: ",Aqua);
comments("maxi_magenta",5,15,corner,DoubleToStr(maxi,5),Magenta);
if(points != 0){global_maxi = transf_maxi;}
}
}
int find_mini(int points, int transf_mini){
int i;
double oc1, oc2, oc3, oc4, oc5, oc6, oc7, oc8, oc9;
for(i=4; i<=480; i++){
if(Close[i] < Open[i]){oc5 = Close[i];}else{oc5 = Open[i];}
if(oc5 < Close[0]-points*Point && oc5 < Close[1] && oc5 < Close[2] && oc5 < Close[3] && oc5 < Open[1] && oc5 < Open[2] && oc5 < Open[3] && (points == 0 || (points != 0 && global_mini != transf_mini))){
if(Close[i-4] < Open[i-4]){oc1 = Close[i-4];}else{oc1 = Open[i-4];}
if(Close[i-3] < Open[i-3]){oc2 = Close[i-3];}else{oc2 = Open[i-3];}
if(Close[i-2] < Open[i-2]){oc3 = Close[i-2];}else{oc3 = Open[i-2];}
if(Close[i-1] < Open[i-1]){oc4 = Close[i-1];}else{oc4 = Open[i-1];}
if(Close[i+1] < Open[i+1]){oc6 = Close[i+1];}else{oc6 = Open[i+1];}
if(Close[i+2] < Open[i+2]){oc7 = Close[i+2];}else{oc7 = Open[i+2];}
if(Close[i+3] < Open[i+3]){oc8 = Close[i+3];}else{oc8 = Open[i+3];}
if(Close[i+4] < Open[i+4]){oc9 = Close[i+4];}else{oc9 = Open[i+4];}
if(oc1 >= oc5 && oc2 >= oc5 && oc3 >= oc5 && oc4 >= oc5 && oc6 >= oc5 && oc7 >= oc5 && oc8 >= oc5 && oc9 >= oc5){
ObjectDelete("line_mini");
ObjectDelete("mini_magenta");
mini = oc5+35*Point;
ObjectCreate("line_mini",OBJ_HLINE, 0, 0, mini);
ObjectSet("line_mini",OBJPROP_STYLE,STYLE_DASHDOTDOT);
ObjectSet("line_mini",OBJPROP_COLOR,Aqua);
comments("mini",5,30,corner,"Íîâûé ìèíèìóì: "+DoubleToStr(mini,5),Aqua);
if(points != 0){global_mini = transf_mini;}
break;
}
}
}
if(i >= 480 && (points == 0 || (points != 0 && global_mini != transf_mini))){
ObjectDelete("line_mini");
mini = Close[0] - range*10*Point;
ObjectCreate("line_mini",OBJ_HLINE, 0, 0, mini);
ObjectSet("line_mini",OBJPROP_STYLE,STYLE_DASHDOTDOT);
ObjectSet("line_mini",OBJPROP_COLOR,Magenta);
comments("mini",45,30,corner,"Íîâûé ìèíèìóì: ",Aqua);
comments("mini_magenta",5,30,corner,DoubleToStr(mini,5),Magenta);
if(points != 0){global_mini = transf_mini;}
}
}
int check_extremes(){
if(maxi != 0 && mini != 0){
maxi = ObjectGet("line_maxi",OBJPROP_PRICE1);
mini = ObjectGet("line_mini",OBJPROP_PRICE1);
if(ObjectFind("maxi_magenta") != -1){
comments("maxi",45,15,corner,"Íîâûé ìàêñèìóì: ",Aqua);
comments("maxi_magenta",5,15,corner,DoubleToStr(maxi,5),Magenta);
}
else{comments("maxi",5,15,corner,"Íîâûé ìàêñèìóì: "+DoubleToStr(maxi,5),Aqua);}
if(ObjectFind("mini_magenta") != -1){
comments("mini",45,30,corner,"Íîâûé ìèíèìóì: ",Aqua);
comments("mini_magenta",5,30,corner,DoubleToStr(mini,5),Magenta);
}
else{comments("mini",5,30,corner,"Íîâûé ìèíèìóì: "+DoubleToStr(mini,5),Aqua);}
}
}
int instantiate_levels(){
if(maxi != 0 && mini != 0){
if(Close[0] > maxi && maxi-mini >= range*10*Point){draw_levels(maxi,Maroon);}
else if(Close[0] > maxi && maxi-mini < range*10*Point){
find_maxi(100,TimeCurrent());
}
if(Close[0] < mini && maxi-mini >= range*10*Point){draw_levels(mini,Green);}
else if(Close[0] < mini && maxi-mini < range*10*Point){
find_mini(100,TimeCurrent());
}
}
}
int draw_levels(double price, color couleur){
if(ObjectFind("level_"+Time[0]) == -1){ObjectCreate("level_"+Time[0],OBJ_TREND,0,Time[0]-1800,price,Time[0]+1800,price);}
ObjectSet("level_"+Time[0],OBJPROP_COLOR,couleur);
ObjectSet("level_"+Time[0],OBJPROP_WIDTH,3);
ObjectSet("level_"+Time[0],OBJPROP_RAY,False);
ObjectSetText("level_"+Time[0],StringConcatenate(DoubleToStr(price,5),"; ",DoubleToStr(st-st_1,2)));
if(couleur == Green){find_mini(100,TimeCurrent()); green_buy = price; red_sell = 0;}
else if(couleur == Maroon){find_maxi(100,TimeCurrent()); red_sell = price; green_buy = 0;}
if(st-st_1 < deviation){
GlobalVariableSet("last_level",Time[0]);
if(couleur == Green){ObjectSet("level_"+Time[0],OBJPROP_COLOR,Lime);}
else{ObjectSet("level_"+Time[0],OBJPROP_COLOR,Red);}
}else{
GlobalVariableSet("last_level",Time[1]);
GlobalVariableSet("last_trade",Time[1]);
}
invalidate_levels(1,Green,Lime);
invalidate_levels(1,Red,Maroon);
if(sound == TRUE){PlaySound("instantiation.wav");}
Sleep(500);
}
int invalidate_levels(int integer, color couleur1, color couleur2){
for(int i=integer; i<100; i++){
if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == couleur1 || ObjectGet("level_"+Time[i],OBJPROP_COLOR) == couleur2){
ObjectSet("level_"+Time[i],OBJPROP_COLOR,RosyBrown);
break;
}
}
}
int add(int order_ticket){
OrderSelect(order_ticket,SELECT_BY_TICKET);
int order_type = OrderType();
if(OrderProfit()/OrderLots() > trail*10 && st-st_1 > deviation && GlobalVariableGet("last_trade") < Time[0]){
OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
if(OrderMagicNumber() < MathFloor(st-st_1)){
open_first(order_type,st-st_1);
}
}
}
int volatile_trade(){
double order_lot, order_profit, stdev;
int first_buys, first_sells;
for(int i=0; i<=47; i++){
stdev = StrToDouble(StringSubstr(ObjectDescription("level_"+Time[i]),8));
if(st-st_1 < stdev-2 && GlobalVariableGet("last_trade") < Time[0]){
if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Green){
for(int j=0; j<OrdersTotal(); j++){
OrderSelect(j,SELECT_BY_POS);
if(OrderType() == OP_BUY && OrderComment() == "m_buy"){
first_buys++;
order_lot = OrderLots();
order_profit = OrderProfit();
}
}
if(order_lot != 0){
if(first_buys < 2 && MathAbs(order_profit/order_lot/10) > trail){open_first(OP_BUY,st-st_1); break;}
}
}else if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Maroon){
for(int k=0; k<OrdersTotal(); k++){
OrderSelect(k,SELECT_BY_POS);
if(OrderType() == OP_SELL && OrderComment() == "m_sell"){
first_sells++;
order_lot = OrderLots();
order_profit = OrderProfit();
}
}if(order_lot != 0){
if(first_sells < 2 && MathAbs(order_profit/order_lot/10) > trail){open_first(OP_SELL,st-st_1); break;}
}
}
}
}
}
int open_first(int type, double magic){
double stdev;
int i;
if(maxi != 0 && mini != 0){
for(i=0; i<=47; i++){
if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Red || ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Maroon){
red_sell = StrToDouble(StringSubstr(ObjectDescription("level_"+Time[i]),0,7));
stdev = StrToDouble(StringSubstr(ObjectDescription("level_"+Time[i]),8));
}else if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Green || ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Lime){
green_buy = StrToDouble(StringSubstr(ObjectDescription("level_"+Time[i]),0,7));
stdev = StrToDouble(StringSubstr(ObjectDescription("level_"+Time[i]),8));
}
}
if(i >= 47){
if(type == OP_BUY && GlobalVariableGet("last_trade") < Time[0] &&
((Close[0]+distance*10*Point > Open[0] && GlobalVariableGet("last_level") < Time[0]) || (stdev > deviation))){
if(green_buy > 0 && Close[0]-distance*10*Point > green_buy && maxi-Close[0] >= range*10*Point){
//Çåëåíàÿ ìåòêà, ðàçâîðîò, ïîêóïêà
double buy_tp = ((maxi-Close[0])/3)*2;
order_send(OP_BUY,lot,Ask,Ask-20000*Point,Ask+buy_tp,"m_buy",magic,Green);
}
}
if(green_buy > 0 && Close[0]+distance*10*Point < green_buy && green_buy-Close[0] <= range*10*Point && Open[0]-distance*10*Point > Close[0]){
//Çåëåíàÿ ìåòêà, ïðîáîé, ïðîäàæà
if(type == OP_SELL){order_send(OP_SELL,lot,Bid,Bid+20000*Point,Bid-range*20*Point,"m_sell",magic,Red);}
}
if(green_buy == 0){
invalidate_levels(0,Green,Lime);
}
if(type == OP_SELL && GlobalVariableGet("last_trade") < Time[0] &&
((Open[0]-distance*10*Point > Close[0] && GlobalVariableGet("last_level") < Time[0]) || (stdev > deviation))){
if(red_sell > 0 && Close[0]+distance*10*Point < red_sell && Close[0]-mini >= range*10*Point){
//Êðàñíàÿ ìåòêà, ðàçâîðîò, ïðîäàæà
double sell_tp = ((Close[0]-mini)/3)*2;
order_send(OP_SELL,lot,Bid,Bid+20000*Point,Bid-sell_tp,"m_sell",magic,Red);
}
}
if(red_sell != 0 && Close[0]-distance*10*Point > red_sell && Close[0]-red_sell <= range*10*Point && Close[0]-distance*10*Point > Open[0]){
//Êðàñíàÿ ìåòêà, ïðîáîé, ïîêóïêà
if(type == OP_BUY){order_send(OP_BUY,lot,Ask,Ask-20000*Point,Ask+range*20*Point,"m_buy",magic,Green);}
}
if(red_sell == 0){
invalidate_levels(0,Red,Maroon);
}
}
}
}
int open_second(int order_ticket, string comment, double order_lots, double tp){
if(order_ticket != 0){
OrderSelect(order_ticket,SELECT_BY_TICKET);
int i;
if(maxi != 0 && mini != 0){
for(i=0; i<=47; i++){
if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Red || ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Maroon){
red_sell = StrToDouble(StringSubstr(ObjectDescription("level_"+Time[i]),0,7));
}else if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Green || ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Lime){
green_buy = StrToDouble(StringSubstr(ObjectDescription("level_"+Time[i]),0,7));
}
}
if(i >= 47 && GlobalVariableGet("last_trade") < Time[1] && GlobalVariableGet("last_level") < Time[1]){
if(green_buy > 0 && Close[0]-distance*Point > green_buy && OrderOpenPrice()-Close[0] >= range*10*Point && Close[0]-green_buy <= range*10*Point && Close[0] > Open[0]+distance*10*Point){
//Êîìïåíñàöèÿ ïîêóïêè ðàçâîðîòîì
order_send(OP_BUY,order_lots,Ask,Ask-20000*Point,tp,comment,0,Green);
}
if(red_sell > 0 && Close[0]-distance*Point > red_sell && OrderOpenPrice()-Close[0] >= range*10*Point && Close[0]-red_sell <= range*10*Point && Close[0] > Open[0]+distance*10*Point){
//Êîìïåíñàöèÿ ïîêóïêè ïðîáîåì
order_send(OP_BUY,order_lots,Ask,Ask-20000*Point,tp,comment,0,Green);
}
if(green_buy == 0){
invalidate_levels(0,Green,Lime);
}
if(red_sell > 0 && Close[0]+distance*10*Point < red_sell && Close[0]-OrderOpenPrice() >= range*10*Point && red_sell-Close[0] <= range*10*Point && Open[0] > Close[0]+distance*10*Point){
//Êîìïåíñàöèÿ ïðîäàæè ðàçâîðîòîì
order_send(OP_SELL,order_lots,Bid,Bid+20000*Point,tp,comment,0,Red);
}
if(green_buy > 0 && Close[0]+distance*10*Point < green_buy && Close[0]-OrderOpenPrice() >= range*10*Point && green_buy-Close[0] <= range*10*Point && Open[0] > Close[0]+distance*10*Point){
//Êîìïåíñàöèÿ ïðîäàæè ïðîáîåì
order_send(OP_SELL,order_lots,Bid,Bid+20000*Point,tp,comment,0,Red);
}
if(red_sell == 0){
invalidate_levels(0,Red,Maroon);
}
}
}
}
}
int order_send(int type, double order_lot, double price, double sl, double tp, string comment, double magic, color couleur){
if(stochastic == FALSE || (stochastic == TRUE &&
(type == OP_BUY && h1 < 95 && h1_1 < 90 && h4 < 95 && h4_1 < 90 && d1 < 95 && d1_1 < 90 && (h1 > h1_1+2 || h4 > h4_1+2 || d1 > d1_1+2)) ||
(type == OP_SELL && h1 > 5 && h1_1 > 10 && h4 > 5 && h4_1 > 10 && d1 > 5 && d1_1 > 10 && (h1 < h1_1-2 || h4 < h4_1-2 || d1 < d1_1-2)))){
if((type == OP_BUY && d1 < 96) || (type == OP_SELL && d1 > 4)){//Îáÿçàòåëüíûé ìÿãêèé ñòîõàñòèê
int ticket = OrderSend(Symbol(),type,order_lot,price,3,sl,tp,comment,magic,0,couleur);
if(ticket < 0){GetLastError();}
else{
GlobalVariableSet("last_trade",Time[0]);
if(StringFind(comment,"m_buy",0) != -1 && ObjectFind("takeprofit_buy") != -1){ObjectSet("takeprofit_buy",OBJPROP_PRICE1,tp);}
if(StringFind(comment,"m_sell",0) != -1 && ObjectFind("takeprofit_sell") != -1){ObjectSet("takeprofit_sell",OBJPROP_PRICE1,tp);}
}
}
}else{if(GlobalVariableGet("last_cancel") < Time[2]){if(sound == TRUE){PlaySound("timeout.wav");} GlobalVariableSet("last_cancel",Time[0]);}}
}
int change_label(){
for(int i=0; i<ObjectsTotal(); i++){
string description = ObjectDescription(ObjectName(i));
if(StringFind(description,"m_",0) != -1 && StringLen(description) <= 12){
ObjectSetText(ObjectName(i),description+"; H1: "+DoubleToStr(h1,0)+" ("+DoubleToStr(h1_1,0)+"); H4: "+DoubleToStr(h4,0)+" ("+DoubleToStr(h4_1,0)+"); D1: "+DoubleToStr(d1,0)+" ("+DoubleToStr(d1_1,0)+"); "+DoubleToStr(st-st_1,2));
break;
}
}
}
int define_takeprofit(int order_ticket){
int order_type;
string type;
OrderSelect(order_ticket,SELECT_BY_TICKET);
order_type = OrderType();
if(order_type == OP_BUY){type = "buy";}
else{type = "sell";}
if(ObjectFind("takeprofit_"+type) == -1){
ObjectCreate("takeprofit_"+type,OBJ_HLINE,0,0,OrderTakeProfit());
ObjectSet("takeprofit_"+type,OBJPROP_COLOR,Gold);
ObjectSet("takeprofit_"+type,OBJPROP_STYLE,STYLE_DASHDOTDOT);
}else{
double current_takeprofit = ObjectGet("takeprofit_"+type,OBJPROP_PRICE1);
for(int i=0; i<OrdersTotal(); i++){
OrderSelect(i,SELECT_BY_POS);
if(current_takeprofit != OrderTakeProfit() && order_type == OrderType()){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),current_takeprofit,0,Red);
}
}
}
}
int redefine_takeprofit(){
double buy_openprice1, buy_openprice2, buy_takeprofit, buy_tp, sell_openprice1, sell_openprice2, sell_takeprofit, sell_tp;
int open_buys, open_sells;
for(int i=0; i<OrdersTotal(); i++){
OrderSelect(i,SELECT_BY_POS);
if(OrderType() == OP_BUY){
open_buys++;
if(buy_openprice1 == 0){buy_openprice1 = OrderOpenPrice();}
else{buy_openprice2 = OrderOpenPrice();}
buy_takeprofit = OrderTakeProfit();
}else if(OrderType() == OP_SELL){
open_sells++;
if(sell_openprice1 == 0){sell_openprice1 = OrderOpenPrice();}
else{sell_openprice2 = OrderOpenPrice();}
sell_takeprofit = OrderTakeProfit();
}
}
if(open_buys == 1 && buy_takeprofit < buy_openprice1){ObjectSet("takeprofit_buy",OBJPROP_PRICE1,buy_openprice1+range*10*Point);}
if(open_sells == 1 && sell_takeprofit > sell_openprice1){ObjectSet("takeprofit_sell",OBJPROP_PRICE1,sell_openprice1-range*10*Point);}
if(open_buys > 1){
if(buy_openprice1 != 0 && buy_openprice2 != 0){
if(buy_openprice1 > buy_openprice2){buy_tp = buy_openprice2 + (((buy_openprice1-buy_openprice2)/open_buys)+10*Point);}
else{buy_tp = buy_openprice1 + (((buy_openprice2-buy_openprice1)/open_buys)+10*Point);}
ObjectSet("takeprofit_buy",OBJPROP_PRICE1,buy_tp);
}
}
if(open_sells > 1){
if(sell_openprice1 != 0 && sell_openprice2 != 0){
if(sell_openprice1 > sell_openprice2){sell_tp = sell_openprice1 - (((sell_openprice1-sell_openprice2)/open_sells)+10*Point);}
else{sell_tp = sell_openprice2 - (((sell_openprice2-sell_openprice1)/open_sells)+10*Point);}
ObjectSet("takeprofit_sell",OBJPROP_PRICE1,sell_tp);
}
}
}
int unsure_trade(int order_ticket){
double margin;
int bars;
bars = iBarShift(NULL,0,OrderOpenTime());
if(OrderType() == OP_BUY && GlobalVariableGet("last_trade") < Time[1]){
margin = (High[iHighest(NULL,0,MODE_HIGH,bars,0)]-OrderOpenPrice())/Point;
//if(margin > trail/2 && OrderProfit() < 100 && bars != 0 && Close[0] < Open[0]){OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);}
}else if(OrderType() == OP_SELL && GlobalVariableGet("last_trade") < Time[1]){
margin = (OrderOpenPrice()-Low[iLowest(NULL,0,MODE_LOW,bars,0)])/Point;
//if(margin > trail/2 && OrderProfit() < 100 && bars != 0 && Close[0] > Open[0]){OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);}
}
}
int calculate_compensation(){
double balance_history, order_profit;
int order_ticket, order_time;
double c_lot = (MathFloor(lot*100))/100;
if(trades > 0){
for(int i=0; i<OrdersTotal(); i++){
if(OrderSelect(i,SELECT_BY_POS) == TRUE && OrderProfit() < 0){
order_profit = MathAbs(OrderProfit()/OrderLots()/10);
order_ticket = OrderTicket();
order_time = OrderOpenTime();
break;
}
}
}
if(order_time != 0){
for(int j=0; j<OrdersHistoryTotal(); j++){
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY) == TRUE && OrderCloseTime() > order_time){balance_history += OrderProfit();}
}
if(balance_history != 0){
comments("comment_string",5,15,0,"Ìèíóñ íàéäåí (#"+order_ticket+"), êîìïåíñàöèÿ 0 ïóíêòîâ (èòîãî).",Aqua);
comments("compensation",5,180,corner,"Èòîãî: "+DoubleToStr(AccountProfit()/c_lot/10,1)+" + "+DoubleToStr(balance_history/c_lot/10,1)+" = "+DoubleToStr((AccountProfit()+balance_history)/c_lot/10,1),Aqua);
if((AccountProfit()+balance_history)/c_lot/10 > 0 && order_profit > trail){
ObjectSet("close_manual",OBJPROP_XDISTANCE,40);
}
}else{
comments("comment_string",5,15,0,"Ìèíóñ íàéäåí (#"+order_ticket+"), íî ïîñëåäóþùåé êîìïåíñàöèè íåò.",Aqua);
comments("compensation",5,180,corner,"Èòîãî: "+DoubleToStr(AccountProfit()/c_lot/10,1)+" + 0.0 = "+(DoubleToStr(AccountProfit()/c_lot/10,1)),Aqua);
}
}else{
comments("comment_string",5,15,0,"",Aqua);
comments("compensation",5,180,corner,"Èòîãî: "+DoubleToStr(AccountProfit()/c_lot/10,1)+" + 0.0 = "+(DoubleToStr(AccountProfit()/c_lot/10,1)),Aqua);
}
}
int close_manual(){
if(ObjectGet("close_manual",OBJPROP_XDISTANCE) > 30){
comments("close_manual",40,105,corner,"Ðó÷íîå çàêðûòèå ÂÊË.",Magenta);
for(int i=0; i<OrdersTotal(); i++){
OrderSelect(i,SELECT_BY_POS);
if(OrderType() == OP_BUY && StringFind(OrderComment(),"m_buy",0) != -1){
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}else if(OrderType() == OP_SELL && StringFind(OrderComment(),"m_sell",0) != -1){
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
}
}
}
else{comments("close_manual",5,105,corner,"Ðó÷íîå çàêðûòèå ÂÛÊË.",Aqua);}
}
int close_plus(){
if(ObjectGet("close_plus",OBJPROP_XDISTANCE) > 30){
comments("close_plus",40,120,corner,"Çàêðûòèå â ïëþñå ÂÊË.",Magenta);
for(int i=0; i<OrdersTotal(); i++){
OrderSelect(i,SELECT_BY_POS);
if(OrderType() == OP_BUY && StringFind(OrderComment(),"m_buy",0) != -1 && OrderProfit() > 0){
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}else if(OrderType() == OP_SELL && StringFind(OrderComment(),"m_sell",0) != -1 && OrderProfit() > 0){
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
}
}
}
else{comments("close_plus",5,120,corner,"Çàêðûòèå â ïëþñå ÂÛÊË.",Aqua);}
}
int trail(){
if(ObjectGet("trail",OBJPROP_XDISTANCE) > 30){
comments("trail",40,135,corner,"Äèíàì. òðåéëèí-ñòîï ÂÊË.",Magenta);
if(trades > 0){
for(int i=0; i<OrdersTotal(); i++){
OrderSelect(i,SELECT_BY_POS);
double profitability = OrderProfit()/OrderLots();
if(OrderStopLoss() == 0 && OrderType() == OP_BUY){OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-20000*Point,OrderTakeProfit(),0,Red);}
if(OrderStopLoss() == 0 && OrderType() == OP_SELL){OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+20000*Point,OrderTakeProfit(),0,Red);}
if(profitability > 100 && OrderType() == OP_BUY && StringFind(OrderComment(),"m_buy",0) != -1){
if(OrderStopLoss() != 0 && OrderStopLoss()-OrderOpenPrice() < (Bid-OrderOpenPrice())/2){
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Bid-OrderOpenPrice())/2,OrderTakeProfit(),0,Red);
}
}
if(profitability > 100 && OrderType() == OP_SELL && StringFind(OrderComment(),"m_sell",0) != -1){
if(OrderStopLoss() != 0 && OrderOpenPrice()-OrderStopLoss() < (OrderOpenPrice()-Ask)/2){
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(OrderOpenPrice()-Ask)/2,OrderTakeProfit(),0,Red);
}
}
}
}
}else{
comments("trail",5,135,corner,"Äèíàì. òðåéëèí-ñòîï ÂÛÊË.",Aqua);
if(trades > 0){
for(int j=0; j<OrdersTotal(); j++){
OrderSelect(j,SELECT_BY_POS);
if(OrderStopLoss() == 0 && OrderType() == OP_BUY){OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-20000*Point,OrderTakeProfit(),0,Red);}
if(OrderStopLoss() == 0 && OrderType() == OP_SELL){OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+20000*Point,OrderTakeProfit(),0,Red);}
if(OrderType() == OP_BUY && StringFind(OrderComment(),"m_buy",0) != -1){
if(OrderStopLoss() != 0 && OrderStopLoss() < Bid-trail*10*Point && OrderOpenPrice() < Bid-trail*10*Point){
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-trail*10*Point,OrderTakeProfit(),0,Red);
}
}
if(OrderType() == OP_SELL && StringFind(OrderComment(),"m_sell",0) != -1){
if(OrderStopLoss() != 0 && OrderStopLoss() > Ask+trail*10*Point && OrderOpenPrice() > Ask+trail*10*Point){
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+trail*10*Point,OrderTakeProfit(),0,Red);
}
}
}
}
}
}
int comments(string name, int x, int y, int coin, string texto, color couleur){
if(ObjectFind(name) == -1){ObjectCreate(name,OBJ_LABEL,0,0,0);}
ObjectSet(name,OBJPROP_XDISTANCE,x);
ObjectSet(name,OBJPROP_YDISTANCE,y);
ObjectSet(name,OBJPROP_CORNER,coin);
ObjectSetText(name,texto,10,"Times New Roman",couleur);
}
int play_sound(){
for(int i=OrdersTotal()-1; i>=0; i--){
OrderSelect(i,SELECT_BY_POS);
if((OrderType() == OP_BUY || OrderType() == OP_SELL) && StringFind(OrderComment(),"m_",0) != -1){
double profit = OrderProfit()/OrderLots();
if(profit > 0 && profit > profit_max){
profit_max = profit;
if(MathFloor((profit/10)/0.5) > plus){
plus = MathFloor((profit/10)/0.5);
minus = 0;
minus_num = 0;
if(MathFloor(MathAbs(profit/100)) == plus_num){if(sound == TRUE){PlaySound("plus.wav");}}
else if(MathFloor(MathAbs(profit/100)) > plus_num){
plus_num = MathFloor(MathAbs(profit/100));
if(sound == TRUE){PlaySound("new_level.wav");}
Sleep(1000);
}
}
}else if(profit < 0 && profit < profit_max){
profit_max = profit;
if(MathFloor((profit/10)/0.5) < minus){
minus = MathFloor((profit/10)/0.5);
plus = 0;
plus_num = 0;
if(MathFloor(MathAbs(profit/100)) == minus_num){if(sound == TRUE){PlaySound("tick.wav");}}
else if(MathFloor(MathAbs(profit/100)) > minus_num){
minus_num = MathFloor(MathAbs(profit/100));
if(sound == TRUE){PlaySound("new_level.wav");}
Sleep(1000);
}
}
}
}
comments("profit",5,165,corner,"Ïðèáûëü: "+DoubleToStr(profit/10,1)+" (ìàêñ. "+DoubleToStr(profit_max/10,1)+")",Aqua);
break;
}
}
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
---