Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
maximus_v8
#property copyright "Evgeny I. SHCHERBINA"
//maximus_vX.mq4
//12.04.2011
//Ïðè èñïîëüçîâàíèè êîíöåïòîâ ñîâåòíèêà ññûëêà íà àâòîðà îáÿçàòåëüíà.
extern bool stochastic = FALSE;
extern int range = 40;
extern int risk = 1000;
extern int stop_distance = 15;
extern int trail = 20;
double h1, h1_1, h4, h4_1, lot, maxi, mini, minus, minus_num, plus, plus_num, profit_max, spread;
int corner, global_maxi, global_mini, last_cancel, last_time, trades;
int init(){
define_corner();
find_maxi(0,0);
find_mini(0,0);
}
int start(){
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));
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,"Äèàïàçîí: "+DoubleToStr((maxi-mini)/Point/10,1)+" ("+range+" ïî óìîë÷.)",Aqua);
comments("lot",5,60,"Ëîò: "+DoubleToStr(lot,3)+"; ñïðåä: "+DoubleToStr(spread/10,1),Aqua);
if(stochastic == FALSE){comments("stochastic",5,90,"iStoch H1: "+DoubleToStr(h1,0)+" ("+DoubleToStr(h1_1,0)+"); H4: "+DoubleToStr(h4,0)+" ("+DoubleToStr(h4_1,0)+") [ÂÛÊË.]",Aqua);}
else{comments("stochastic",5,90,"iStoch H1: "+DoubleToStr(h1,0)+" ("+DoubleToStr(h1_1,0)+"); H4: "+DoubleToStr(h4,0)+" ("+DoubleToStr(h4_1,0)+") [ÂÊË.]",Magenta);}
int i, orders;
for(i=0; i<=OrdersTotal()-1; i++){
OrderSelect(i,SELECT_BY_POS);
if((OrderType() == OP_BUY && (OrderComment() == "m_buy" || OrderComment() == "m_buyDouble")) || (OrderType() == OP_SELL && (OrderComment() == "m_sell" || OrderComment() == "m_sellDouble"))){
orders++;
if(OrderProfit() < 0){open_second(OrderTicket());}
if(OrderTakeProfit() != 0){define_takeprofit(OrderTicket());}
}
}
if(i >= OrdersTotal()-1){
if(orders == 0){open_first();}
if(orders > trades){
trades = orders;
change_label();
PlaySound("news.wav");
Sleep(1000);
}
if(orders < trades){
trades = orders;
define_corner();
find_maxi(0,0);
find_mini(0,0);
profit_max = 0;
ObjectDelete("takeprofit");
PlaySound("ok.wav");
Sleep(1000);
}
if(trades == 0){comments("profit",5,75,"Ïðèáûëüíîñòü: 0.0 (ìàêñ. 0.0)",Aqua);}
}
check_extremes();
close_manual();
close_plus();
instantiate_levels();
instantiate_stops();
play_sound();
trail();
}
int deinit(){
ObjectDelete("buystop");
ObjectDelete("buystop_takeprofit");
ObjectDelete("sellstop");
ObjectDelete("sellstop_takeprofit");
ObjectDelete("takeprofit");
}
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,"Íîâûé ìàêñèìóì: "+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*15*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,"Íîâûé ìàêñèìóì: ",Aqua);
comments("maxi_magenta",5,15,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,"Íîâûé ìèíèìóì: "+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*15*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,"Íîâûé ìèíèìóì: ",Aqua);
comments("mini_magenta",5,30,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,"Íîâûé ìàêñèìóì: ",Aqua);
comments("maxi_magenta",5,15,DoubleToStr(maxi,5),Magenta);
}
else{comments("maxi",5,15,"Íîâûé ìàêñèìóì: "+DoubleToStr(maxi,5),Aqua);}
if(ObjectFind("mini_magenta") != -1){
comments("mini",45,30,"Íîâûé ìèíèìóì: ",Aqua);
comments("mini_magenta",5,30,DoubleToStr(mini,5),Magenta);
}
else{comments("mini",5,30,"Íîâûé ìèíèìóì: "+DoubleToStr(mini,5),Aqua);}
}
}
int instantiate_levels(){
if(maxi != 0 && mini != 0 && trades <= 1){
if(Close[0] > maxi && maxi-mini >= range*10*Point){draw_levels(maxi-20*Point,maxi,Red);}
else if(Close[0] > maxi && maxi-mini < range*10*Point){
find_maxi(100,TimeCurrent());
ObjectDelete("buystop");
ObjectDelete("buystop_takeprofit");
}
if(Close[0] < mini && maxi-mini >= range*10*Point){draw_levels(mini+20*Point,mini,Green);}
else if(Close[0] < mini && maxi-mini < range*10*Point){
find_mini(100,TimeCurrent());
ObjectDelete("sellstop");
ObjectDelete("sellstop_takeprofit");
}
}
}
int draw_levels(double price, double price_tag, color couleur){
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_RAY,False);
ObjectSetText("level_"+Time[0],DoubleToStr(price_tag,5));
if(couleur == Green){find_mini(100,TimeCurrent());}
else if(couleur == Red){find_maxi(100,TimeCurrent());}
last_time = Time[0];
invalidate_levels(1,Red);
invalidate_levels(1,Green);
PlaySound("instantiation.wav");
Sleep(500);
}
int invalidate_levels(int integer, color couleur){
for(int i=integer; i<=ObjectsTotal()-1; i++){
if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == couleur){
ObjectSet("level_"+Time[i],OBJPROP_COLOR,RosyBrown);
break;
}
}
}
int instantiate_stops(){
if(maxi != 0 && mini != 0 && trades == 0){
if(ObjectFind("buystop") == -1){draw_stops("buystop",maxi+stop_distance*10*Point);}
if(ObjectFind("buystop_takeprofit") == -1){draw_stops("buystop_takeprofit",maxi+(stop_distance+range)*10*Point);}
if(ObjectFind("sellstop") == -1){draw_stops("sellstop",mini-stop_distance*10*Point);}
if(ObjectFind("sellstop_takeprofit") == -1){draw_stops("sellstop_takeprofit",mini-(stop_distance+range)*10*Point);}
if(ObjectGet("buystop_takeprofit",OBJPROP_PRICE1)-ObjectGet("buystop",OBJPROP_PRICE1) < range*10*Point){
ObjectSet("buystop_takeprofit",OBJPROP_PRICE1,ObjectGet("buystop",OBJPROP_PRICE1)+range*10*Point);
}
if(ObjectGet("sellstop",OBJPROP_PRICE1)-ObjectGet("sellstop_takeprofit",OBJPROP_PRICE1) < range*10*Point){
ObjectSet("sellstop_takeprofit",OBJPROP_PRICE1,ObjectGet("sellstop",OBJPROP_PRICE1)-range*10*Point);
}
}else if(maxi != 0 && mini != 0 && trades > 0){
ObjectDelete("buystop");
ObjectDelete("buystop_takeprofit");
ObjectDelete("sellstop");
ObjectDelete("sellstop_takeprofit");
}
}
int draw_stops(string name, double price){
ObjectCreate(name,OBJ_HLINE,0,0,price);
ObjectSet(name,OBJPROP_COLOR,Silver);
ObjectSet(name,OBJPROP_STYLE,STYLE_DASHDOTDOT);
}
int open_first(){
double green_buy, red_sell;
int i;
if(maxi != 0 && mini != 0){
for(i=0; i<=47; i++){
if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Red){
red_sell = StrToDouble(ObjectDescription("level_"+Time[i]));
}else if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Green){
green_buy = StrToDouble(ObjectDescription("level_"+Time[i]));
}
}
if(i >= 47 && last_time < Time[1]){
if(green_buy > 0 && Close[0]-20*Point > green_buy && maxi-Close[0] >= range*10*Point && Close[0]-green_buy <= (range/2)*10*Point){
double buy_tp = ((maxi-Close[0])/3)*2;
order_send(OP_BUY,lot,Ask,Ask-20000*Point,Ask+buy_tp,"m_buy",Green);
}else if(green_buy == 0){
invalidate_levels(0,Green);
}
if(red_sell > 0 && Close[0]+20*Point < red_sell && Close[0]-mini >= range*10*Point && red_sell-Close[0] <= (range/2)*10*Point){
double sell_tp = ((Close[0]-mini)/3)*2;
order_send(OP_SELL,lot,Bid,Bid+20000*Point,Bid-sell_tp,"m_sell",Red);
}else if(red_sell == 0){
invalidate_levels(0,Red);
}
}
if(Close[0] > ObjectGet("buystop",OBJPROP_PRICE1) && ObjectFind("buystop_takeprofit") != -1){
order_send(OP_BUY,lot,Ask,Ask-20000*Point,ObjectGet("buystop_takeprofit",OBJPROP_PRICE1),"m_buy",Green);
}
if(Close[0] < ObjectGet("sellstop",OBJPROP_PRICE1) && ObjectFind("sellstop_takeprofit") != -1){
order_send(OP_SELL,lot,Bid,Bid+20000*Point,ObjectGet("sellstop_takeprofit",OBJPROP_PRICE1),"m_sell",Red);
}
}
}
int open_second(int order_ticket){
OrderSelect(order_ticket,SELECT_BY_TICKET);
double green_buy, red_sell;
int i;
if(maxi != 0 && mini != 0){
for(i=0; i<=47; i++){
if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Red){
red_sell = StrToDouble(ObjectDescription("level_"+Time[i]));
}else if(ObjectGet("level_"+Time[i],OBJPROP_COLOR) == Green){
green_buy = StrToDouble(ObjectDescription("level_"+Time[i]));
}
}
if(i >= 47 && last_time < Time[2]){
if(green_buy > 0 && Close[0]-20*Point > green_buy && OrderOpenPrice()-Close[0] >= range*10*Point && Close[0]-green_buy <= (range/2)*10*Point){
double buyDouble_tp = (OrderOpenPrice()-Close[0])/3+20*Point;
if(trades == 1){order_send(OP_BUY,OrderLots()*2,Ask,Ask-20000*Point,Ask+buyDouble_tp,"m_buyDouble",Green);}
}else if(green_buy == 0){
invalidate_levels(0,Green);
}
if(red_sell > 0 && Close[0]+20*Point < red_sell && Close[0]-OrderOpenPrice() >= range*10*Point && red_sell-Close[0] <= (range/2)*10*Point){
double sellDouble_tp = (Close[0]-OrderOpenPrice())/3+20*Point;
if(trades == 1){order_send(OP_SELL,OrderLots()*2,Bid,Bid+20000*Point,Bid-sellDouble_tp,"m_sellDouble",Red);}
}else if(red_sell == 0){
invalidate_levels(0,Red);
}
}
}
}
int order_send(int type, double order_lot, double price, double sl, double tp, string comment, color couleur){
if(stochastic == FALSE || (stochastic == TRUE && (type == OP_BUY && h1 > h1_1+2) || (type == OP_SELL && h1 < h1_1-2))){
int ticket = OrderSend(Symbol(),type,order_lot,price,3,sl,tp,comment,0,0,couleur);
if(ticket < 0){GetLastError();}
else{
if(ObjectFind("takeprofit") != -1){ObjectSet("takeprofit",OBJPROP_PRICE1,tp);}
for(int i=ObjectsTotal()-1; i>=0; i--){
if(ObjectType(ObjectName(i)) == OBJ_TREND){
if(ObjectGet(ObjectName(i),OBJPROP_COLOR) == Red || ObjectGet(ObjectName(i),OBJPROP_COLOR) == Green){
ObjectDelete(ObjectName(i));
break;
}
}
}
}
}else{if(last_cancel < Time[2]){PlaySound("timeout.wav"); last_cancel = Time[0];}}
}
int change_label(){
double adx_h1 = MathFloor(iADX(NULL,PERIOD_H1,14,PRICE_CLOSE,MODE_MAIN,0));
double adx_h1_1 = MathFloor(iADX(NULL,PERIOD_H1,14,PRICE_CLOSE,MODE_MAIN,1));
for(int i=ObjectsTotal(); i>=0; i--){
string description = ObjectDescription(ObjectName(i));
if(StringFind(description,"m_",0) != -1 && ObjectType(ObjectName(i)) == OBJ_ARROW && StringLen(description) <= 12){
ObjectSetText(ObjectName(i),description+"; iStoch H1: "+DoubleToStr(h1,0)+" ("+DoubleToStr(h1_1,0)+"); H4: "+DoubleToStr(h4,0)+" ("+DoubleToStr(h4_1,0)+"); "+DoubleToStr(adx_h1,0)+" <> "+DoubleToStr(adx_h1_1,0));
break;
}
}
}
int define_takeprofit(int order_ticket){
OrderSelect(order_ticket,SELECT_BY_TICKET);
int order_type = OrderType();
if(ObjectFind("takeprofit") == -1){
ObjectCreate("takeprofit",OBJ_HLINE,0,0,OrderTakeProfit());
ObjectSet("takeprofit",OBJPROP_COLOR,Gold);
ObjectSet("takeprofit",OBJPROP_STYLE,STYLE_DASHDOTDOT);
}else{
double current_takeprofit = ObjectGet("takeprofit",OBJPROP_PRICE1);
for(int i=0; i<=OrdersTotal()-1; i++){
OrderSelect(i,SELECT_BY_POS);
if(current_takeprofit != OrderTakeProfit() && order_type == OrderType()){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),current_takeprofit,0,Red);
}
}
}
}
int close_manual(){
if(ObjectGet("close_manual",OBJPROP_XDISTANCE) > 30){
comments("close_manual",40,105,"Ðó÷íîå çàêðûòèå ÂÊË.",Magenta);
for(int i=0; i<=OrdersTotal()-1; i++){
OrderSelect(i,SELECT_BY_POS);
if(OrderType() == OP_BUY && (OrderComment() == "m_buy" || OrderComment() == "m_buyDouble")){
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}else if(OrderType() == OP_SELL && (OrderComment() == "m_sell" || OrderComment() == "m_sellDouble")){
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
}
}
}
else{comments("close_manual",5,105,"Ðó÷íîå çàêðûòèå ÂÛÊË.",Aqua);}
}
int close_plus(){
if(ObjectGet("close_plus",OBJPROP_XDISTANCE) > 30){
comments("close_plus",40,120,"Çàêðûòèå â ïëþñå ÂÊË.",Magenta);
for(int i=0; i<=OrdersTotal()-1; i++){
OrderSelect(i,SELECT_BY_POS);
if(OrderType() == OP_BUY && (OrderComment() == "m_buy" || OrderComment() == "m_buyDouble") && OrderProfit() > 0){
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}else if(OrderType() == OP_SELL && (OrderComment() == "m_sell" || OrderComment() == "m_sellDouble") && OrderProfit() > 0){
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
}
}
}
else{comments("close_plus",5,120,"Çàêðûòèå â ïëþñå ÂÛÊË.",Aqua);}
}
int trail(){
if(ObjectGet("trail",OBJPROP_XDISTANCE) > 30){
comments("trail",40,135,"Äèíàì. òðåéëèí-ñòîï ÂÊË.",Magenta);
if(trades > 0){
for(int i=0; i<=OrdersTotal()-1; 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 > 40 && OrderType() == OP_BUY && (OrderComment() == "m_buy" || OrderComment() == "m_buyDouble")){
if(OrderStopLoss() != 0 && OrderStopLoss()-OrderOpenPrice() < (Bid-OrderOpenPrice())/2){
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Bid-OrderOpenPrice())/2,OrderTakeProfit(),0,Red);
}
}else if(profitability > 40 && OrderType() == OP_SELL && (OrderComment() == "m_sell" || OrderComment() == "m_sellDouble")){
if(OrderStopLoss() != 0 && OrderOpenPrice()-OrderStopLoss() < (OrderOpenPrice()-Ask)/2){
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(OrderOpenPrice()-Ask)/2,OrderTakeProfit(),0,Red);
}
}
}
}
}else{
comments("trail",5,135,"Äèíàì. òðåéëèí-ñòîï ÂÛÊË.",Aqua);
if(trades > 0){
for(int j=0; j<=OrdersTotal()-1; 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 && (OrderComment() == "m_buy" || OrderComment() == "m_buyDouble")){
if(OrderStopLoss() != 0 && OrderStopLoss() < Bid-trail*10*Point && OrderOpenPrice() < Bid-trail*10*Point){
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-trail*10*Point,OrderTakeProfit(),0,Red);
}
}else if(OrderType() == OP_SELL && (OrderComment() == "m_sell" || OrderComment() == "m_sellDouble")){
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, 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,corner);
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){
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){PlaySound("plus.wav");}
else if(MathFloor(MathAbs(profit/100)) > plus_num){
plus_num = MathFloor(MathAbs(profit/100));
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){PlaySound("tick.wav");}
else if(MathFloor(MathAbs(profit/100)) > minus_num){
minus_num = MathFloor(MathAbs(profit/100));
PlaySound("new_level.wav");
Sleep(1000);
}
}
}
}
comments("profit",5,75,"Ïðèáûëüíîñòü: "+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
---