K-________ __ ___ build3

Author: Andrey A.Maksymov
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Miscellaneous
It opens Message Boxes to the user
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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---