Price Data Components
Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Profitability Reports
AUD/USD
Oct 2024 - Jan 2025
0.00 %
Total Trades
0
Won Trades
0
Lost trades
0
Win Rate
0.0 %
Expected payoff
0.00
Gross Profit
0.00
Gross Loss
0.00
Total Net Profit
0.00
-100%
-50%
0%
50%
100%
K-________ __ ___ build3
//---------------------------------------------------------------------------------------------------+
// Ìîìîøíèê ïî ÑÊÁ.mq4 |
// Andrey A.Maksymov |
// maksaa |
//---------------------------------------------------------------------------------------------------+
#property copyright "Andrey A.Maksymov"
#include <WinUser32.mqh>
extern int TotalNumber=100; //ñêîëüêî áàðîâ íóìåðîâàòü
extern int Shift1=0; //ïðàâàÿ òî÷êà îñíîâàíèÿ òðåóãîëüíèêà
extern int Shift2=0; //âåðøèíà òðåóãîëüíèêà
extern int Shift3=0; //ëåâàÿ òî÷êà îñíîâàíèÿ òðåóãîëüíèêà
extern int StopLoss=57; //ëîññ äëÿ ñðàáîòàâøåãî îðäåðà
extern int ProfitMin=50; //ìèíèìàëüíûé ïðîôèò, ïîñëå êîòîðîãî ïîäæèìàåìñÿ
extern int TakeProfitMax=100; //ïðîôèò äëÿ ñðàáîòàâøåãî îðäåðà
extern int TrailingStopMax=50; //âåëè÷èíà òðàëà ñòàíäàðòíàÿ
extern int TrailingStopMin=10; //âåëè÷èíà òðàëà äëÿ ïîäæèìà
extern int TrailingStep=5; //øàã äëÿ òðàëà
extern double Lots=0.1; //êîëè÷åñòâî ëîòîâ
extern int Step = 20; //???
string BuyTicketSymb,
SellTicketSymb,
BarTimeSymb,
BuyPriceSymb,
SellPriceSymb,
OrderBuyTypeSymb,
OrderSellTypeSymb;
int cnt;
int deinit(){
return;
}//deinit()
int init(){
//íóìåðàöèÿ â MQL4 íà÷èíàåòñÿ ñ íóëÿ
Shift1--;
Shift2--;
Shift3--;
//----------------------------------
GlobalVariablesDeleteAll(); //óäàëÿåì ñòàðûå ãëîáàëüíûå ïåðåìåííûå
//ñîçäàåì èìåíà ãëîáàëüíûõ ïåðåìåííûõ
BarTimeSymb=StringConcatenate(Symbol(),"_BarTime");
BuyPriceSymb=StringConcatenate(Symbol(),"_BuyPrice");
SellPriceSymb=StringConcatenate(Symbol(),"_SellPrice");
BuyTicketSymb=StringConcatenate(Symbol(),"_BuyTicket");
SellTicketSymb=StringConcatenate(Symbol(),"_SellTicket");
OrderBuyTypeSymb=StringConcatenate(Symbol(),"_OrderBuyType");
OrderSellTypeSymb=StringConcatenate(Symbol(),"_OrderSellType");
//-----------------------------------
GlobalVariableSet(BarTimeSymb,Time[0]); //Çàïîìèíàåì âðåìÿ òåêóùåãî áàðà
FunNum(Shift1,Shift2,Shift3,TotalNumber); //Íóìåðóåì áàðû, ÷åðòèì êàíàë, ôîìèðóåì öåíû îðäåðîâ
if(Shift1<0 || Shift2-Shift1<1 || Shift3-Shift2<1)return; //íåâåðíûå èñõîäíûå äàííûå
FunOrders(); //Ïðîâåðÿåì íàëè÷èå îðäåðîâ ïî òåêóùåé ïàðå
FunOpenBuy(); //Âûñòàâëÿåì îòëîæåííûé îðäåð íà ïîêóïêó
FunOpenSell(); //Âûñòàâëÿåì îòëîæåííûå îðäåð íà ïðîäàæó
FunModify(); //Ìîäèôèöèðóåì îòëîæåííûå îðäåðû
//SendMail("ÎÒ ÏÎÌÎØÍÈÊÀ ÏÎ ÑÊÁ!", "Òåñòîâîå ïèñüìî");
return;
}//init()
int start(){
if(Shift1<0 || Shift2-Shift1<1 || Shift3-Shift2<1)return; //íåâåðíûå èñõîäíûå äàííûå
if(GlobalVariableGet(BarTimeSymb)!=Time[0]){ //åñëè ñìåíèëñÿ áàð
GlobalVariableSet(BarTimeSymb,Time[0]); //Çàïîìèíàåì âðåìÿ òåêóùåãî áàðà
Shift1++; //ñäâèãàåì íóìåðàöèþ áàðîâ
Shift2++;
Shift3++;
FunNum(Shift1,Shift2,Shift3,TotalNumber); //Íóìåðóåì áàðû, ÷åðòèì êàíàë, ôîìèðóåì öåíû îðäåðîâ
FunModify(); //Ìîäèôèöèðóåì îòëîæåííûå îðäåðû
}
FunOrders(); //Ïðîâåðÿåì íåò ëè óæå îòëîæåííûõ èëè ñðàáîòàâøèõ îðäåðîâ
FunOpenBuy(); //Âûñòàâëÿåì îòëîæåííûå îðäåðà
FunOpenSell(); //Âûñòàâëÿåì îòëîæåííûå îðäåðà
//FunTrail(); //Òðàëèì îòêðûòûå îðäeðà
return;
}//start()
//---------------------------------------------------------------------------------------------------|
// ÔÓÍÊÖÈÈ |
//---------------------------------------------------------------------------------------------------|
//-Íóìåðóåì áàðû, ÷åðòèì êàíàë, ôîìèðóåì öåíû îðäåðîâ------------------------------------------------|
void FunNum(int Shift1,int Shift2,int Shift3,int TotalNumber){
double Y=0,SellPrice,BuyPrice;
int X,X1,X2;
X=Shift3-Shift1;
X1=Shift1;
X2=Shift2;
if(Shift1<0 || Shift2-Shift1<1 || Shift3-Shift2<1){
MessageBox("Óêàæè òî÷êè êàíàëà! (Íîìåðà áàðîâ ñïðàâà íàëåâî Shift1, Shift2, Shift3)",
"Íóìåðàöèÿ",MB_OK);
for(cnt=-1;cnt<TotalNumber;cnt++){
ObjectCreate(StringConcatenate("",cnt), OBJ_TEXT, 0, Time[cnt], High[cnt]+3*Point);
ObjectSetText(StringConcatenate("",cnt),StringConcatenate("",cnt+1),8,
"Times New Roman",Blue);
}
return(0);
}
ObjectDelete("CHANNEL");
if(Low[Shift1]>Low[Shift2]){
Y=High[Shift1]-High[Shift3];
SellPrice=High[Shift1]+X1*Y/X;
BuyPrice=Low[Shift2]+X2*Y/X;
ObjectCreate("CHANNEL",OBJ_CHANNEL,0,
iTime(NULL,0,Shift3),iHigh(NULL,0,Shift3),
iTime(NULL,0,Shift1),iHigh(NULL,0,Shift1),
iTime(NULL,0,Shift2),iLow(NULL,0,Shift2));
}
else{
Y=Low[Shift1]-Low[Shift3];
SellPrice=High[Shift2]+X2*Y/X;
BuyPrice=Low[Shift1]+X1*Y/X;
ObjectCreate("CHANNEL",OBJ_CHANNEL,0,
iTime(NULL,0,Shift3),iLow(NULL,0,Shift3),
iTime(NULL,0,Shift1),iLow(NULL,0,Shift1),
iTime(NULL,0,Shift2),iHigh(NULL,0,Shift2));
}
GlobalVariableSet(BuyPriceSymb ,NormalizeDouble(BuyPrice, Digits));
GlobalVariableSet(SellPriceSymb,NormalizeDouble(SellPrice,Digits));
if(ObjectFind(StringConcatenate("",1))==-1)return(0);
if(MessageBox("Óäàëèòü íóìåðàöèþ áàðîâ?", "Íóìåðàöèÿ", MB_YESNO|MB_ICONQUESTION)==IDYES){
for(cnt=-1;cnt<TotalNumber;cnt++){
ObjectDelete(StringConcatenate("",cnt));
}
}
}//FunNum
//---------------------------------------------------------------------------------------------------|
//-Ïðîâåðÿåì íåò ëè óæå îòëîæåííûõ èëè ñðàáîòàâøèõ îðäåðîâ-------------------------------------------|
int FunOrders(){
int total=OrdersTotal();
GlobalVariableSet(BuyTicketSymb,0);
GlobalVariableSet(SellTicketSymb,0);
GlobalVariableSet(OrderBuyTypeSymb,-1);
GlobalVariableSet(OrderSellTypeSymb,-1);
for(cnt=0;cnt<total;cnt++){
if(OrderSelect(cnt, SELECT_BY_POS)==false) continue;
if(OrderSymbol()!=Symbol()) continue;
if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_BUY){
GlobalVariableSet(BuyTicketSymb, OrderTicket());
GlobalVariableSet(OrderBuyTypeSymb, OrderType());
}
if(OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP || OrderType()==OP_SELL){
GlobalVariableSet(SellTicketSymb, OrderTicket());
GlobalVariableSet(OrderSellTypeSymb, OrderType());
}
}
if(GlobalVariableGet(OrderBuyTypeSymb)==OP_BUY &&
GlobalVariableGet(OrderSellTypeSymb)==OP_SELLLIMIT){
//Ñðàáîòàë Buy, óäàëÿåì SellLimit, ÷òîáû îòëîæèòü SellStop
OrderSelect(GlobalVariableGet(SellTicketSymb),SELECT_BY_TICKET);
if(OrderDelete(OrderTicket())==true)
GlobalVariableSet(SellTicketSymb,0);
GlobalVariableSet(OrderSellTypeSymb,-1);
}
if(GlobalVariableGet(OrderSellTypeSymb)==OP_SELL &&
GlobalVariableGet(OrderBuyTypeSymb)==OP_BUYLIMIT){
//Ñðàáîòàë Sell, óäàëÿåì BuyLimit, ÷òîáû îòëîæèòü BuyStop
OrderSelect(GlobalVariableGet(BuyTicketSymb),SELECT_BY_TICKET);
if(OrderDelete(OrderTicket())==true)
GlobalVariableSet(BuyTicketSymb,0);
GlobalVariableSet(OrderBuyTypeSymb,-1);
}
return;
}//FunOrders()
//---------------------------------------------------------------------------------------------------|
//-Âûñòàâëÿåì îòëîæåííûå îðäåðà----------------------------------------------------------------------|
void FunOpenBuy(){
if(GlobalVariableGet(OrderSellTypeSymb)==1){
if(GlobalVariableGet(BuyTicketSymb)==0)
GlobalVariableSet(BuyTicketSymb,
OrderSend(Symbol(),OP_BUYSTOP, Lots,
GlobalVariableGet(SellPriceSymb)+StopLoss*Point, 0,
GlobalVariableGet(SellPriceSymb),
GlobalVariableGet(SellPriceSymb)+StopLoss*Point+TakeProfitMax*Point,
0,0,0,CLR_NONE));
}
else{
if(GlobalVariableGet(BuyTicketSymb)==0)
GlobalVariableSet(BuyTicketSymb,
OrderSend(Symbol(),OP_BUYLIMIT, Lots,
GlobalVariableGet(BuyPriceSymb), 0,
GlobalVariableGet(BuyPriceSymb)-StopLoss*Point,
GlobalVariableGet(BuyPriceSymb)+TakeProfitMax*Point,
0,0,0,CLR_NONE));
}
if(GlobalVariableGet(BuyTicketSymb)==-1)
Print("Íå óäàëîñü óñòàíîâèòü îòëîæåííûé îðäåð íà ïîêóïêó! Ïî öåíå=",
GlobalVariableGet(BuyPriceSymb)," ERROR=",GetLastError());
Sleep(10000);
}//FunOpenBuy()
void FunOpenSell(){
if(GlobalVariableGet(OrderBuyTypeSymb)==0){
if(GlobalVariableGet(SellTicketSymb)==0)
GlobalVariableSet(SellTicketSymb,
OrderSend(Symbol(), OP_SELLSTOP, Lots,
GlobalVariableGet(BuyPriceSymb)-StopLoss*Point,0,
GlobalVariableGet(BuyPriceSymb),
GlobalVariableGet(BuyPriceSymb)-StopLoss*Point-TakeProfitMax*Point,
0,0,0,CLR_NONE));
}
else{
if(GlobalVariableGet(SellTicketSymb)==0)
GlobalVariableSet(SellTicketSymb,
OrderSend( Symbol(), OP_SELLLIMIT, Lots,
GlobalVariableGet(SellPriceSymb),0,
GlobalVariableGet(SellPriceSymb)+StopLoss*Point,
GlobalVariableGet(SellPriceSymb)-TakeProfitMax*Point,
0,0,0,CLR_NONE));
}
if(GlobalVariableGet(SellTicketSymb)==-1)
Print("Íå óäàëîñü óñòàíîâèòü îòëîæåííûé îðäåð íà ïðîäàæó! Ïî öåíå=",
GlobalVariableGet(SellPriceSymb)," ERROR=",GetLastError());
Sleep(10000);
}//FunOpenSell()
//---------------------------------------------------------------------------------------------------|
//Ìîäèôèöèðóåì îòëîæåííûå îðäåðà---------------------------------------------------------------------|
void FunModify(){
OrderSelect(GlobalVariableGet(BuyTicketSymb), SELECT_BY_TICKET);
if (OrderType()==OP_BUYLIMIT && OrderOpenPrice()!=GlobalVariableGet(BuyPriceSymb)){
OrderModify(OrderTicket(),GlobalVariableGet(BuyPriceSymb),
GlobalVariableGet(BuyPriceSymb)-StopLoss*Point,
GlobalVariableGet(BuyPriceSymb)+TakeProfitMax*Point,
0,CLR_NONE);
Sleep(10000);
}
OrderSelect(GlobalVariableGet(SellTicketSymb),SELECT_BY_TICKET);
if (OrderType()==OP_SELLLIMIT && OrderOpenPrice()!=GlobalVariableGet(SellPriceSymb)){
OrderModify(OrderTicket(),GlobalVariableGet(SellPriceSymb),
GlobalVariableGet(SellPriceSymb)+StopLoss*Point,
GlobalVariableGet(SellPriceSymb)-TakeProfitMax*Point,
0,CLR_NONE);
Sleep(10000);
}
}//FunModify()
//---------------------------------------------------------------------------------------------------|
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
---