MT4 chart trader with button functionality
//+------------------------------------------------------------------+
//| Custom price.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
bool long_entry=false,sl=true;
bool short_entry=false,tgt=true;
double tg,sll,le,se;
double target,longentry,shortentry,stoploss;
enum Simple_Order_Panel_selection{
Show=1,
Hide=2,
};input Simple_Order_Panel_selection Simple_Order_Panel = Show;
enum Bracket_Order_Panel_selection{
Show_BO=1,
Hide_BO=2,
};input Bracket_Order_Panel_selection Bracket_Order_Panel = Show_BO;
enum Trendlines_Panel_selection{
Show_TL =1,
Hide_TL =2,
};input Trendlines_Panel_selection Trendlines_Panel = Show_TL ;
string name2,Editbracketqty="Editbracketqty",Editbracketsl="Editbracketsl",Editbracketprice="Editbracketprice",Editbrackettgt="Editbrackettgt";
string EditStoploss="EditStoploss",EditShort_Entry="EditShort_Entry",EditLong_Entry="EditLong_Entry",Edittarget="Edittarget";
string EditPrice = "EditPrice",EditQuantity="EditQuantity",Edit_TrigerPrice="Edit_TrigerPrice",Edit_SLquantity="Edit_SLquantity";
string heading2[13]={"Bracket order buy","target","price","Sl price","qty","Bracket order sell"};
int yc2= 350;
string name1;
string heading1[13]={"Target","Long_Entry","Short_Entry","Stoploss"};
int xc1=100;
int yc1=20;
string name,simple_Order_Panel,bracket_Order_Panel,trendlines_Panel;
string heading[13]={"Info-","Long Entry","Long Exit","Price","Quantity","Short Entry","Short Exit","","SL Buy","TrigerPrice","SLQuantity","SL Sell"};
int xc=20;
int yc=40;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
#include <AlgoTrading.mqh>
#include <Multiinstance.mqh>
int OnInit()
{
if(Simple_Order_Panel==Show){simple_Order_Panel="Show";}
if (Simple_Order_Panel ==Hide){simple_Order_Panel="Hide";}
if(simple_Order_Panel=="Show"){
string symbolname = Symbol();
string ins ;
string sym = Symbol();
string ordertype ;
if(Ordertype==MARKET){ordertype="MARKET";}
else if(Ordertype==LIMIT){ordertype="LIMIT";}
if(Instrument==EQ){ins = "EQ";}
else if (Instrument==FUTSTK){ins = "FUTSTK";}
else if (Instrument==FUTIDX){ins = "FUTIDX";}
else if (Instrument==OPTSTK){ins = "OPTSTK";}
else if (Instrument==OPTIDX){ins = "OPTIDX";}
else if (Instrument==FUTCUR){ins = "FUTCUR";}
else if (Instrument==FUTCOM){ins = "FUTCOM";}
ObjectCreate("0", OBJ_LABEL, 0, 0, 0);
ObjectSetText("0","Instrument-"+ins+" , Order Type -"+ordertype+"",7, "Verdana", clrGoldenrod);
ObjectSet("0", OBJPROP_CORNER, 0);
ObjectSet("0",OBJPROP_FONTSIZE, 10);
ObjectSet("0", OBJPROP_XDISTANCE, 20);
ObjectSet("0", OBJPROP_YDISTANCE, 20);
for(int i=1;i<2;i++)
{
name=heading[i];
ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,name,OBJPROP_COLOR,clrBlack);
ObjectSetInteger(0,name,OBJPROP_XSIZE,100);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrPaleGreen);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
ObjectSetText(name,name,16,"Arial",clrBlue);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,yc);
yc+=20;
}
for(int i=2;i<3;i++)
{
name=heading[i];
ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,name,OBJPROP_COLOR,clrBlack);
ObjectSetInteger(0,name,OBJPROP_XSIZE,100);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrRed);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
ObjectSetText(name,name,16,"Arial",clrBlue);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,yc);
yc+=20;
}
for(int i=3;i<5;i++)
{
name=heading[i];
ObjectCreate(0,name,OBJ_LABEL,0,0,0);
ObjectSetText(name,name,10,"Arial",clrGoldenrod);
ObjectSetInteger(0,name,OBJPROP_XSIZE,100);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
ObjectSetString(0,name,OBJPROP_FONT,"Arial Bold");
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,yc);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
yc+=20;
}
for(int i=5;i<6;i++)
{
name=heading[i];
ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,name,OBJPROP_COLOR,clrBlack);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrPaleGreen);
// ObjectSetString(0,name,OBJPROP_FONT,"Arial Bold");
ObjectSetString(0,name,OBJPROP_FONT,"Calibri");
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
ObjectSetInteger(0,name,OBJPROP_XSIZE,100);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
ObjectSetText(name,name,10,"Arial",clrBlue);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,yc);
yc+=20;
}
for(int i=6;i<7;i++)
{
name=heading[i];
ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
ObjectSetString(0,name,OBJPROP_FONT,"Calibri");
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
ObjectSetInteger(0,name,OBJPROP_COLOR,clrBlack);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrRed);
// ObjectSetString(0,name,OBJPROP_FONT,"Arial Bold");
ObjectSetInteger(0,name,OBJPROP_XSIZE,100);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
ObjectSetText(name,name,10,"Arial",clrBlue);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,yc);
yc+=20;
}
name="EditPrice";
ObjectCreate(0,name,OBJ_EDIT,0,0,0);
ObjectSetText(name,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc+110);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,80);
ObjectSetInteger(0,name,OBJPROP_XSIZE,60);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
name="EditQuantity";
ObjectCreate(0,name,OBJ_EDIT,0,0,0);
ObjectSetText(name,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc+110);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,100);
ObjectSetInteger(0,name,OBJPROP_XSIZE,60);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
name="Edit_TrigerPrice";
ObjectCreate(0,name,OBJ_EDIT,0,0,0);
ObjectSetText(name,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc+110);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,260);
ObjectSetInteger(0,name,OBJPROP_XSIZE,60);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
name="Edit_SLquantity";
ObjectCreate(0,name,OBJ_EDIT,0,0,0);
ObjectSetText(name,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc+110);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,240);
ObjectSetInteger(0,name,OBJPROP_XSIZE,60);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
for(int i=8;i<9;i++)
{
name=heading[i];
ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,name,OBJPROP_COLOR,clrBlack);
ObjectSetInteger(0,name,OBJPROP_XSIZE,100);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrPaleGreen);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
ObjectSetText(name,name,16,"Arial",clrBlue);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,yc+60);
yc+=20;
}
for(int i=9;i<10;i++)
{
name=heading[i];
ObjectCreate(0,name,OBJ_LABEL,0,0,0);
ObjectSetText(name,name,10,"Arial",clrGoldenrod);
ObjectSetInteger(0,name,OBJPROP_XSIZE,100);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
ObjectSetString(0,name,OBJPROP_FONT,"Arial Bold");
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,yc+60);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
yc+=20;
}
for(int i=10;i<11;i++)
{
name=heading[i];
ObjectCreate(0,name,OBJ_LABEL,0,0,0);
ObjectSetText(name,name,10,"Arial",clrGoldenrod);
ObjectSetInteger(0,name,OBJPROP_XSIZE,100);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
ObjectSetString(0,name,OBJPROP_FONT,"Arial Bold");
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,yc+60);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
yc+=20;
}
for(int i=11;i<12;i++)
{
name=heading[i];
ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
ObjectSetString(0,name,OBJPROP_FONT,"Calibri");
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
ObjectSetInteger(0,name,OBJPROP_COLOR,clrBlack);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrRed);
ObjectSetInteger(0,name,OBJPROP_XSIZE,100);
ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
ObjectSetText(name,name,10,"Arial",clrBlue);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,xc);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,yc+60);
yc+=20;
}}
////////////bracket order panel
if(Bracket_Order_Panel==Show_BO){bracket_Order_Panel="Show";}
if(Bracket_Order_Panel==Hide_BO){bracket_Order_Panel="Hide";}
if(bracket_Order_Panel=="Show"){
for(int i=0;i<1;i++)
{
name2=heading2[i];
ObjectCreate(0,name2,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,name2,OBJPROP_COLOR,clrBlack);
ObjectSetInteger(0,name2,OBJPROP_XSIZE,160);
ObjectSetInteger(0,name2,OBJPROP_BGCOLOR,clrPaleGreen);
ObjectSetInteger(0,name2,OBJPROP_YSIZE,25);
ObjectSetText(name2,name2,16,"Arial",clrBlue);
ObjectSetInteger(0,name2,OBJPROP_XDISTANCE,20);
ObjectSetInteger(0,name2,OBJPROP_YDISTANCE,350);
}
for(int i=1;i<5;i++)
{
name2=heading2[i];
ObjectCreate(name2,OBJ_LABEL,0,0,0);
ObjectSetText(name2,name2,10,"Arial",Gold);
ObjectSet(name2,OBJPROP_XDISTANCE,30);
ObjectSet(name2,OBJPROP_YDISTANCE,50);
ObjectSetString(0,name2,OBJPROP_FONT,"Arial Bold");
ObjectSetInteger(0,name2,OBJPROP_XDISTANCE,20);
ObjectSetInteger(0,name2,OBJPROP_YDISTANCE,yc2+25);
ObjectSetInteger(0,name2,OBJPROP_SELECTED,false);
yc2+=25;
}
name2="Editbrackettgt";
ObjectCreate(0,name2,OBJ_EDIT,0,0,0);
ObjectSetText(name2,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name2,OBJPROP_XDISTANCE,130);
ObjectSetInteger(0,name2,OBJPROP_YDISTANCE,375);
ObjectSetInteger(0,name2,OBJPROP_XSIZE,60);
ObjectSetInteger(0,name2,OBJPROP_YSIZE,20);
name2="Editbracketprice";
ObjectCreate(0,name2,OBJ_EDIT,0,0,0);
ObjectSetText(name2,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name2,OBJPROP_XDISTANCE,130);
ObjectSetInteger(0,name2,OBJPROP_YDISTANCE,400);
ObjectSetInteger(0,name2,OBJPROP_XSIZE,60);
ObjectSetInteger(0,name2,OBJPROP_YSIZE,20);
name2="Editbracketsl";
ObjectCreate(0,name2,OBJ_EDIT,0,0,0);
ObjectSetText(name2,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name2,OBJPROP_XDISTANCE,130);
ObjectSetInteger(0,name2,OBJPROP_YDISTANCE,425);
ObjectSetInteger(0,name2,OBJPROP_XSIZE,60);
ObjectSetInteger(0,name2,OBJPROP_YSIZE,20);
name2="Editbracketqty";
ObjectCreate(0,name2,OBJ_EDIT,0,0,0);
ObjectSetText(name2,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name2,OBJPROP_XDISTANCE,130);
ObjectSetInteger(0,name2,OBJPROP_YDISTANCE,450);
ObjectSetInteger(0,name2,OBJPROP_XSIZE,60);
ObjectSetInteger(0,name2,OBJPROP_YSIZE,20);
for(int i=5;i<6;i++)
{
name2=heading2[i];
ObjectCreate(0,name2,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,name2,OBJPROP_COLOR,clrBlack);
ObjectSetInteger(0,name2,OBJPROP_XSIZE,160);
ObjectSetInteger(0,name2,OBJPROP_BGCOLOR,Red);
ObjectSetInteger(0,name2,OBJPROP_YSIZE,25);
ObjectSetText(name2,name2,16,"Arial",clrBlue);
ObjectSetInteger(0,name2,OBJPROP_XDISTANCE,20);
ObjectSetInteger(0,name2,OBJPROP_YDISTANCE,475);
}
}
if(Trendlines_Panel==Show_TL){trendlines_Panel="Show";}
if(Trendlines_Panel==Hide_TL){trendlines_Panel="Hide";}
if(trendlines_Panel=="Show"){
//////////////trendlines
for(int i=0;i<4;i++)
{
name1=heading1[i];
ObjectCreate(name1,OBJ_LABEL,0,0,0);
ObjectSetText(name1,name1,10,"Arial",Gold);
ObjectSet(name1,OBJPROP_CORNER,1);
ObjectSet(name1,OBJPROP_XDISTANCE,30);
ObjectSet(name1,OBJPROP_YDISTANCE,50);
ObjectSetString(0,name1,OBJPROP_FONT,"Arial Bold");
ObjectSetInteger(0,name1,OBJPROP_XDISTANCE,xc1);
ObjectSetInteger(0,name1,OBJPROP_YDISTANCE,yc1+20);
ObjectSetInteger(0,name1,OBJPROP_SELECTED,false);
yc1+=20;
}
name1="Edittarget";
ObjectCreate(0,name1,OBJ_EDIT,0,0,0);
ObjectSet(name1,OBJPROP_CORNER,1);
ObjectSetText(name1,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name1,OBJPROP_XDISTANCE,xc1-10);
ObjectSetInteger(0,name1,OBJPROP_YDISTANCE,40);
ObjectSetInteger(0,name1,OBJPROP_XSIZE,80);
ObjectSetInteger(0,name1,OBJPROP_YSIZE,20);
name1="EditLong_Entry";
ObjectCreate(0,name1,OBJ_EDIT,0,0,0);
ObjectSet(name1,OBJPROP_CORNER,1);
ObjectSetText(name1,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name1,OBJPROP_XDISTANCE,xc1-10);
ObjectSetInteger(0,name1,OBJPROP_YDISTANCE,60);
ObjectSetInteger(0,name1,OBJPROP_XSIZE,80);
ObjectSetInteger(0,name1,OBJPROP_YSIZE,20);
name1="EditShort_Entry";
ObjectCreate(0,name1,OBJ_EDIT,0,0,0);
ObjectSet(name1,OBJPROP_CORNER,1);
ObjectSetText(name1,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name1,OBJPROP_XDISTANCE,xc1-10);
ObjectSetInteger(0,name1,OBJPROP_YDISTANCE,80);
ObjectSetInteger(0,name1,OBJPROP_XSIZE,80);
ObjectSetInteger(0,name1,OBJPROP_YSIZE,20);
name1="EditStoploss";
ObjectCreate(0,name1,OBJ_EDIT,0,0,0);
ObjectSet(name1,OBJPROP_CORNER,1);
ObjectSetText(name1,"0",10,"Arial",clrRed);
ObjectSetInteger(0,name1,OBJPROP_XDISTANCE,xc1-10);
ObjectSetInteger(0,name1,OBJPROP_YDISTANCE,100);
ObjectSetInteger(0,name1,OBJPROP_XSIZE,80);
ObjectSetInteger(0,name1,OBJPROP_YSIZE,20);
}
//---
target=StrToDouble(ObjectGetString(0,"Edittarget",OBJPROP_TEXT));
longentry=StrToDouble(ObjectGetString(0,"EditLong_Entry",OBJPROP_TEXT));
shortentry=StrToDouble(ObjectGetString(0,"EditShort_Entry",OBJPROP_TEXT));
stoploss=StrToDouble(ObjectGetString(0,"EditStoploss",OBJPROP_TEXT));
tg=target;
le=longentry;
se=shortentry;
sll=stoploss;
if (target==0){target=100000000000000000000000000000000000000000000000000000000;}
if (longentry==0){le=100000000000000000000000000000000000000000000000000000000;}
if (shortentry==0){se=100000000000000000000000000000000000000000000000000000000;}
if (stoploss==0){sll=100000000000000000000000000000000000000000000000000000000;}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
if(Bracket_Order_Panel==Show_BO){bracket_Order_Panel="Show";}
if(Bracket_Order_Panel==Hide_BO){bracket_Order_Panel="Hide";}
if(bracket_Order_Panel=="Show")
for (int i = 0;i<13;i++)
{
name2=heading2[i];
ObjectDelete(0,name2);
ObjectDelete(0,Editbrackettgt);
ObjectDelete(0,Editbracketprice);
ObjectDelete(0,Editbracketsl);
ObjectDelete(0,Editbracketqty);
yc2 = 350;
}
if(Trendlines_Panel==Show_TL){trendlines_Panel="Show";}
if(Trendlines_Panel==Hide_TL){trendlines_Panel="Hide";}
if(trendlines_Panel=="Show")
{
for (int i = 0;i<13;i++)
{
name1=heading1[i];
ObjectDelete(0,name1);
ObjectDelete(0,Edittarget);
ObjectDelete(0,EditLong_Entry);
ObjectDelete(0,EditShort_Entry);
ObjectDelete(0,EditStoploss);
yc1 = 20;
}}
if(Simple_Order_Panel==Show){simple_Order_Panel="Show";}
if (Simple_Order_Panel ==Hide){simple_Order_Panel="Hide";}
if(simple_Order_Panel=="Show")
{
for (int i = 0;i<13;i++)
{
name=heading[i];
ObjectDelete(0,name);
ObjectDelete(0,EditPrice);
ObjectDelete(0,EditQuantity);
ObjectDelete(0,Edit_TrigerPrice);
ObjectDelete(0,Edit_SLquantity);
xc=20;
yc=40;
}
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
tg=target;
le=longentry;
se=shortentry;
sll=stoploss;
target=StrToDouble(ObjectGetString(0,"Edittarget",OBJPROP_TEXT));
longentry=StrToDouble(ObjectGetString(0,"EditLong_Entry",OBJPROP_TEXT));
shortentry=StrToDouble(ObjectGetString(0,"EditShort_Entry",OBJPROP_TEXT));
stoploss=StrToDouble(ObjectGetString(0,"EditStoploss",OBJPROP_TEXT));
double close = Close[0];
if (target==0||target== NULL){target=100000000000000000000000000000000000000000000000000000000;}
if (target==0||target== NULL){le=100000000000000000000000000000000000000000000000000000000;}
if (target==0||target== NULL){se=-100000000000000000000000000000000000000000000000000000000;}
if (target==0||target== NULL){sll=-100000000000000000000000000000000000000000000000000000000;}
tg=target;
le=longentry;
se=shortentry;
sll=stoploss;
if (target==0||target== NULL){target=100000000000000000000000000000000000000000000000000000000;}
if (target==0||target== NULL){le=100000000000000000000000000000000000000000000000000000000;}
if (target==0||target== NULL){se=-100000000000000000000000000000000000000000000000000000000;}
if (target==0||target== NULL){sll=-100000000000000000000000000000000000000000000000000000000;}
////////drawing line
if(target>0)
{
ObjectCreate("Target2",OBJ_HLINE,0,0,target);
ObjectSet("Target2",OBJPROP_COLOR,Blue);
ObjectGetInteger("Target2",OBJPROP_WIDTH,4);
ObjectCreate(0, "Target11", OBJ_TEXT, 0,Time[0],target);
ObjectSetText( "Target11","Target "+target,12 , "Times New Roman", Blue);
ObjectSetInteger( "Target11", 0, Time[0], target);
}
if(longentry>0)
{
ObjectCreate("longentry",OBJ_HLINE,0,0,longentry);
ObjectSet("longentry",OBJPROP_COLOR,Green);
ObjectGetInteger("longentry",OBJPROP_WIDTH,4);
ObjectCreate(0, "longentry1", OBJ_TEXT, 0,Time[0],longentry);
ObjectSetText("longentry1","LongEntry "+longentry,12 , "Times New Roman", Green);
ObjectSetInteger( "longentry1", 0, Time[0], longentry);
}
if(shortentry>0)
{
ObjectCreate("shortentry",OBJ_HLINE,0,0,shortentry);
ObjectSet("shortentry",OBJPROP_COLOR,Red);
ObjectGetInteger("shortentry",OBJPROP_WIDTH,4);
ObjectCreate(0, "shortentry1", OBJ_TEXT, 0,Time[0],shortentry);
ObjectSetText( "shortentry1","ShortEntry "+shortentry,12 , "Times New Roman", Red);
ObjectSetInteger( "shortentry1", 0, Time[0], shortentry);
}
if(stoploss>0)
{
ObjectCreate("stoploss",OBJ_HLINE,0,0,stoploss);
ObjectSet("stoploss",OBJPROP_COLOR,Gold);
ObjectGetInteger("stoploss",OBJPROP_WIDTH,4);
ObjectCreate(0, "stoploss1", OBJ_TEXT, 0,Time[0],stoploss);
ObjectSetText( "stoploss1","StopLoss "+stoploss,12 , "Times New Roman", Gold);
ObjectSetInteger( "stoploss1", 0, Time[0], stoploss);
}
//////////// movelines
if(target==tg)
{
ObjectMove(Symbol(),"Target2",0,0,target);
ObjectMove(Symbol(),"Target11",0,0,target);
}
if(longentry==le)
{
ObjectMove(Symbol(),"longentry",0,0,longentry);
ObjectMove(Symbol(),"longentry1",0,0,longentry);
}
if(shortentry==se)
{
ObjectMove(Symbol(),"shortentry",0,0,shortentry);
ObjectMove(Symbol(),"shortentry1",0,0,shortentry);
}
if(stoploss==sll)
{
ObjectMove(Symbol(),"stoploss",0,0,stoploss);
ObjectMove(Symbol(),"stoploss1",0,0,stoploss);
}
//long entry condition
if(Close[0]>le)
{
if(Low[0] <= le&&High[0]>=le&& long_entry==false )
{
Alert(Time[0]+"Longentry @-"+close+" "+Symbol());
long_entry=true;
LongEntry(Quantity,Ask);
tgt =false;
sl=false;
}}
if(Close[0]<le)
{
if(High[0] >= le&&Low[0]<=le&&long_entry==false )
{
Alert(Time[0]+"Longentry @-"+close+" "+Symbol());
long_entry=true;
LongEntry(Quantity,Ask);
tgt =false;
sl=false;
}}
////// short entry
if(Close[0]>se){
if(Low[0] <= se&&High[0] >= se&&short_entry==false)
{
Alert(Time[0]+"ShortEntry@-"+close+" "+Symbol());
short_entry=true;
ShortEntry(Quantity,Ask);
tgt =false;
sl=false;
}}
if(Close[0]<se){
if(Low[0] <= se&&High[0] >= se&&short_entry==false)
{
Alert(Time[0]+"ShortEntry@-"+close+" "+Symbol());
short_entry=true;
ShortEntry(Quantity,Ask);
tgt =false;
sl=false;
}}
///////// target calculation
if(short_entry==true)
{
if(High[0] >= tg&&Low[0]<=tg&&tgt==false)
{
Alert(Time[0]+"Target executed @-"+close+" "+Symbol());
tgt =true;
short_entry=false;
long_entry=false;
ShortExit(Quantity,Ask);
}
}
if(long_entry==true)
{
if(High[0] >= tg&&Low[0]<=tg&&tgt==false)
{
Alert(Time[0]+"Target executed @-"+close+" "+Symbol());
tgt =true;
short_entry=false;
long_entry=false;
LongExit(Quantity,Ask);
}
}
////////sl calculation
if(short_entry==true)
{
if(High[0] >= sll&&Low[0]<=sll&&sl==false)
{
Alert(Time[0]+"Stoploss executed @-"+Ask+" "+Symbol());
sl =true;
short_entry=false;
long_entry=false;
ShortExit(Quantity,Ask);
}
}
if(long_entry==true)
{
if(High[0] >= sll&&Low[0]<=sll&&sl==false)
{
Alert(Time[0]+"Stoploss executed @-"+Ask+" "+Symbol());
sl =true;
short_entry=false;
long_entry=false;
LongExit(Quantity,Ask);
}
}
string ins ;
string sym = Symbol();
string ordertype ;
if(Ordertype==MARKET){ordertype="MARKET";}
else if(Ordertype==LIMIT){ordertype="LIMIT";}
if(Instrument==EQ){ins = "EQ";}
else if (Instrument==FUTSTK){ins = "FUTSTK";}
else if (Instrument==FUTIDX){ins = "FUTIDX";}
else if (Instrument==OPTSTK){ins = "OPTSTK";}
else if (Instrument==OPTIDX){ins = "OPTIDX";}
else if (Instrument==FUTCUR){ins = "FUTCUR";}
else if (Instrument==FUTCOM){ins = "FUTCOM";}
ObjectCreate("0", OBJ_LABEL, 0, 0, 0);
ObjectSetText("0","Instrument- "+ins+" , Order Type-"+ordertype+"",7, "Verdana", clrGoldenrod);
ObjectSet("0", OBJPROP_CORNER, 0);
ObjectSet("0",OBJPROP_FONTSIZE, 10);
ObjectSet("0", OBJPROP_XDISTANCE, 20);
ObjectSet("0", OBJPROP_YDISTANCE, 20);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(id==CHARTEVENT_OBJECT_CLICK)
{
string name="Long Entry";
if(ObjectGetInteger(0,name,OBJPROP_STATE)==true)
{
ObjectSetInteger(0,name,OBJPROP_STATE,false);
double price=StrToDouble(ObjectGetString(0,"EditPrice",OBJPROP_TEXT));
double Quantity=StrToDouble(ObjectGetString(0,"EditQuantity",OBJPROP_TEXT));
string ordertype ;
if(Ordertype==MARKET){ordertype="MARKET";}
else if(Ordertype==LIMIT){ordertype="LIMIT";}
LongEntry(Quantity,price);
Alert("Long order For ="+Symbol()+" Price-"+price+" Quantity-"+Quantity);
}
name="Short Exit";
if(ObjectGetInteger(0,name,OBJPROP_STATE)==true)
{
ObjectSetInteger(0,name,OBJPROP_STATE,false);
double price=StrToDouble(ObjectGetString(0,"EditPrice",OBJPROP_TEXT));
double Quantity=StrToDouble(ObjectGetString(0,"EditQuantity",OBJPROP_TEXT));
ShortExit(Quantity,price);
Alert("Cover order For ="+Symbol()+" Price-"+price+" Quantity-"+Quantity);
}
name="Short Entry";
if(ObjectGetInteger(0,name,OBJPROP_STATE)==true)
{
ObjectSetInteger(0,name,OBJPROP_STATE,false);
double price=StrToDouble(ObjectGetString(0,"EditPrice",OBJPROP_TEXT));
double Quantity=StrToDouble(ObjectGetString(0,"EditQuantity",OBJPROP_TEXT));
ShortEntry(Quantity,price);
Alert("Short order For ="+Symbol()+" Price-"+price+" Quantity-"+Quantity);
}
name="Long Exit";
if(ObjectGetInteger(0,name,OBJPROP_STATE)==true)
{
ObjectSetInteger(0,name,OBJPROP_STATE,false);
double price=StrToDouble(ObjectGetString(0,"EditPrice",OBJPROP_TEXT));
double Quantity=StrToDouble(ObjectGetString(0,"EditQuantity",OBJPROP_TEXT));
// int ticket=OrderSend(Symbol(),OP_SELL,0,Ask,50,sl,tp,NULL,MagicNumber,0,clrNONE);
LongExit(Quantity,price);
Alert("Sell order For ="+Symbol()+" Price-"+price+" Quantity-"+Quantity);
}
name="SL Buy";
if(ObjectGetInteger(0,name,OBJPROP_STATE)==true)
{
ObjectSetInteger(0,name,OBJPROP_STATE,false);
// double price=StrToDouble(ObjectGetString(0,"EditSLPrice",OBJPROP_TEXT));
double price = Close[0];
double Quantity=StrToDouble(ObjectGetString(0,"Edit_TrigerPrice",OBJPROP_TEXT));
double TrigerPrice=StrToDouble(ObjectGetString(0,"Edit_SLquantity",OBJPROP_TEXT));
slbuy(Quantity,TrigerPrice);
Alert("SLM Buy order For ="+Symbol()+"Trigger Price-"+TrigerPrice+" Quantity- "+Quantity);
}
name="SL Sell";
if(ObjectGetInteger(0,name,OBJPROP_STATE)==true)
{
ObjectSetInteger(0,name,OBJPROP_STATE,false);
// double price=StrToDouble(ObjectGetString(0,"EditSLPrice",OBJPROP_TEXT));
double price = Close[0];
double Quantity=StrToDouble(ObjectGetString(0,"Edit_TrigerPrice",OBJPROP_TEXT));
double TrigerPrice=StrToDouble(ObjectGetString(0,"Edit_SLquantity",OBJPROP_TEXT));
string ordertype ;
slsell(Quantity,TrigerPrice);
Alert("SLM Sell order For ="+Symbol()+"Trigger Price-"+TrigerPrice+" Quantity- "+Quantity);
}
}
//////////Bracket order buy","target","price","Sl price","qty","Bracket order sell"
name2="Bracket order buy";
if(ObjectGetInteger(0,name2,OBJPROP_STATE)==true)
{
ObjectSetInteger(0,name2,OBJPROP_STATE,false);
// double price=StrToDouble(ObjectGetString(0,"EditSLPrice",OBJPROP_TEXT));
double price = StrToDouble(ObjectGetString(0,"Editbracketprice",OBJPROP_TEXT));
double Quantity=StrToDouble(ObjectGetString(0,"Editbracketqty",OBJPROP_TEXT));
double tgt = StrToDouble(ObjectGetString(0,"Editbrackettgt",OBJPROP_TEXT));
double slprice=StrToDouble(ObjectGetString(0,"Editbracketsl",OBJPROP_TEXT));
string difference = MathAbs(price-slprice);
bracketorderbuy(Quantity,price,slprice,difference,tgt);
Alert("Bracket order buy For ="+Symbol()+"Trigger Price-"+slprice+" Quantity- "+Quantity);
}
name2="Bracket order sell";
if(ObjectGetInteger(0,name2,OBJPROP_STATE)==true)
{
ObjectSetInteger(0,name2,OBJPROP_STATE,false);
// double price=StrToDouble(ObjectGetString(0,"EditSLPrice",OBJPROP_TEXT));
double price = StrToDouble(ObjectGetString(0,"Editbracketprice",OBJPROP_TEXT));
double Quantity=StrToDouble(ObjectGetString(0,"Editbracketqty",OBJPROP_TEXT));
double tgt = StrToDouble(ObjectGetString(0,"Editbrackettgt",OBJPROP_TEXT));
double slprice=StrToDouble(ObjectGetString(0,"Editbracketsl",OBJPROP_TEXT));
string difference = MathAbs(price-slprice);
bracketordersell(Quantity,price,slprice,difference,tgt);
Alert("Bracket order sell For ="+Symbol()+"Trigger Price-"+slprice+" Quantity- "+Quantity);
}
}
//---
//+------------------------------------------------------------------+
Comments
Post a Comment