FrBestExp02_7

Author:
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reachedIt Closes Orders by itself
Indicators Used
Moving Average of OscillatorMoving average indicator
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%
GBP/USD Oct 2024 - Jan 2025
41.00 %
Total Trades 14
Won Trades 11
Lost trades 3
Win Rate 0.79 %
Expected payoff -420.14
Gross Profit 4076.00
Gross Loss -9958.00
Total Net Profit -5882.00
-100%
-50%
0%
50%
100%
NZD/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%
FrBestExp02_7
//+------------------------------------------------------------------+
//|                                                FrBestExp02_7.mq4 |
//|                                                                  |
//|                                                _7 íàêëîí ÌÀ 2 ÒÔ |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
extern double  Lots = 1.00;
extern int     Stop_Loss = 1000;
extern int     Take_Profit = 1000;
extern int     Trailing_Stop = 0;

extern int map=25;
extern int mash=1;
extern int map2=5;
extern int mash2=1;
//    Only for M15
//extern int Vlim=50;
extern int fper=12,sper=26,sigper=9;// ïåðèîäû èíäèêàòîðà OsMA
extern int stop=300;// Óðîâåíü îòñå÷êè ïðîôèòà
extern int  hedg=1;// ôëàã ðàçðåøåíèÿ õåäæà
extern double  kh=10;// êîýôô.õåäæèðîâàíèÿ
extern int lok;// ôëàã ðàçðåøåíèÿ ëîêèðîâàíèÿ ïîçèöèè
extern int rpr=1;// ôëàã îïðåäåëåíèÿ ïðîñàäêè ïîçû èëè ïî âñåìó òåñòó
extern int ttime=900;// Çàäåðæêà âûñòàâëåíèÿ õåäæ-îðäåðà íà 1 ñâå÷ó
extern int hstop=-3000;// ñòîï-ëîññ äëÿ õåäæà


int cnt;// èíäåêñ öèêëà
int sigs,sigb;// ñóììèðóþùèé ñèãíàë íà ïðîâåäåíèå îïåðàöèè êóïëè-ïðîäàæè

double ssig,bsig;// ñèãíàëû íà êóïëþ-ïðîäàæó îò èíäèêàòîðà ôðàêòàëîâ
double  osmanul,osmaone;// ñèãíàëû èíäèêàòîðà OsMA îò íóëåâîãî è ïåðâîãî áàðîâ
int s,b;// êîëè÷åñòâî àêòèâíûõ ñýëë è áàé îðäåðîâ
int hml;// ôëàã çàêðûòèÿ ïîçèöèè ñ ìèíóñîâûì ïðîôèòîì (çàêðûâàåòñÿ ïîçèöèÿ ñ ìåíüøèì ëîòîì
int pl;// ôëàã çàêðûòèÿ âñåõ ïîçèöèé ïî óñëîâèþ íàëè÷èÿ óñòàíîâëåííîãî ïîëîæèòåëüíîãî ïðîôèòà
double summa;// ñóììàðíûé ïðîôèò ïî âñåì ïîçèöèÿì
double mlot;// âåëè÷èíà òîðãóåìîãî ëîòà
double ssum,bsum;// ïðîôèò ïî îðäåðàì ñýëë è áàé ðàçäåëüíî
double pr;// âåëè÷èíãà ïðîñàäêè
int hblok,shblok,bhblok;// ôëàã áëîêèðîâàíèÿ âûñòàâëåíèÿ õåäæ-îðäåðà è ôëàãè ïîâòîðíîãî çàïóñêà õåäæ-ïðîöåäóðû
double DHMax,DLMin;
bool ft=true;
int rang;
double pt;
int nul;// ïåðåìåííûå äëÿ âû÷èñëåíèÿ ïîâîðîòíîé òî÷êè ïðè çàïóñêå è â 00.00 êàæäûõ ñóòîê
int LastTradeTime;
//---------------------------------------------------------------------------------------------------------------

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start(){

   mlot=Lots; // îïðåäåëåíèå âåëè÷èíû ðàáî÷åãî ëîòà
//--------------------------------------------Âû÷èñëåíèÿïîâîðîòíîé òî÷êè------------------------------------------
   if ((Hour()==0 && Minute()==0) || ft){//íà÷àëèñü ñóòêè èëè ïåðâûé çàïóñê
      DHMax=0;
      DLMin=1000;
         if(ft){// ïåðâûé çàïóñê 
            rang=MathRound((Hour()*60+Minute())/Period());
            nul=rang;
         }
         else{
            nul=96;//çà ñóòêè íà 15
            rang=1;
         }
         for(cnt=rang;cnt<=rang+95;cnt++){//ïîèñê ìàêñ è ìèí çà ïîñëåäíèå ñóòêè
            if(DHMax<High[cnt])DHMax=High[cnt];
            if(DLMin>Low[cnt])DLMin=Low[cnt];
         }
      pt=(DHMax+DLMin+Close[nul])/3;//ïîâîðîòíàÿ òî÷êà
      ft=false;
   }
//----------------------------------------------------------------------------------------------------------------
   if(CurTime()-LastTradeTime<20)return(0);
//----------------------------Îïðåäåëåíèÿ îáùåãî è ïîçèöèîííîãî ïðîôèòà, à òàêæåïîäñ÷¸ò ïîçèöèé-------------------
   s=0;b=0;summa=0;bsum=0;ssum=0;
      for(cnt=0;cnt<OrdersTotal();cnt++){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){
               ssum=ssum+OrderProfit();
               s=s+1;
            }
            if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){ 
               bsum=bsum+OrderProfit();
               b=b+1;
            }
      }
   summa=bsum+ssum;summa=MathRound(summa);
//------------------------------------------------------Òðåéëèíã-Ñòîï---------------------------------------------
   if(Trailing_Stop>0 && hedg==1){ 
      for(cnt=0;cnt<OrdersTotal();cnt++){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()==Symbol() && OrderProfit()>0){ 
               if(Bid-OrderOpenPrice()>Point*Trailing_Stop){ 
                  if(OrderStopLoss()<Bid-Point*Trailing_Stop){ 
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing_Stop,OrderTakeProfit(),0,Red);
                     return(0);
                  }
               }
               if(OrderOpenPrice()-Ask>Point*Trailing_Stop){ 
                  if(OrderStopLoss()>Ask+Point*Trailing_Stop){ 
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*Trailing_Stop,OrderTakeProfit(),0,Red);
                     return(0);
                  }
               }
            }
      }
   }
//---------------------------------------------------Âûñòàâëåíèå õåäæ-îðäåðà--------------------------------------
   if(hblok==1){
      shblok=0;bhblok=0;
      for(cnt=0;cnt<OrdersTotal();cnt++){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderLots()==mlot*kh)shblok=1;
            if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderLots()==mlot*kh)bhblok=1;
      }
   }
   if(shblok==1 && bhblok==1)hblok=1;
   if(shblok==0 && bhblok==0)hblok=0;
   //if s+b=0 then hblok=0;
   if((s+b<=2 && (lok==1 || lok==0)) && hedg==1 && hblok==0){
      if(CurTime()-LastTradeTime<ttime)return(0);
      if(ssum>=150 || bsum<-300){ 
         OrderSend(Symbol(),OP_SELL,kh*mlot,Bid,5,Bid+Stop_Loss*Point,Bid-Take_Profit*Point,NULL,0,0,Aqua);
         //SetArrow(Time[0],H+5*Point,159,Aqua);
         hblok=1;
         return(0);
      }
      if(bsum>=150 || ssum<-300){
         OrderSend(Symbol(),OP_BUY,kh*mlot,Ask,5,Ask-Stop_Loss*Point,Ask+Take_Profit*Point,NULL,0,0,Red);
         //SetArrow(Time[0],L-5*Point,159,Red);
         hblok=1;
         return(0);
      }
   }
//------------------------------------------Âû÷èñëåíèå ïðîñàäêè â ïðîöåññå òîðãîâ------------------------------
   if(s+b==0 && rpr==0)pr=0;
   if(pr>summa && summa<0)pr=MathRound(summa);
//-----------------------------------Îïðåäåëåíèå îñíîâíîãî ñèãíàëà è ñèãíàëîâ èíäèêàòîðîâ------------------------

   bsig=iCustom(NULL,0,"FractalBest",0,0);
   ssig=iCustom(NULL,0,"FractalBest",1,0);
//   bsig=0;
//   ssig=0;
   osmanul=iOsMA(NULL,0,fper,sper,sigper,PRICE_CLOSE,0);
   osmaone=iOsMA(NULL,0,fper,sper,sigper,PRICE_CLOSE,1);

   double ma1=iMA(NULL,60,map,0,0,0,0);
   double ma2=iMA(NULL,60,map,0,0,0,mash);
   double ma12=iMA(NULL,1440,map2,0,0,0,0);
   double ma22=iMA(NULL,1440,map2,0,0,0,mash2);   
   if(ssig>1 && ma1>ma2 && ma12>ma22 &&  Volume[1]>Volume[2] && osmaone>osmanul && osmaone<=0 && osmanul<0 && Close[0]>pt){
      sigs=1;
   }
   else{
      sigs=0;
   }
   if(bsig>1 && ma1<ma2 && ma12<ma22 &&  Volume[1]>Volume[2] && osmaone<osmanul && osmaone>=0 && osmanul>0 && Close[0]<pt){
      sigb=1;
   }
   else{
      sigb=0;
   }
   /*
//--------------------------------------------Âûâîä äàìïà ðàáîòû ýêñïåðòà â æóðíàë---------------------------------
Print("Data: ",Year(),".",Month(),".",Day(),"  Time ",Hour(),":",Minute(),"   1Tik=",Volume[2],"  0Tiks=",Volume[1],"  PT=",pt,
      "  Price=",Close[0],"  BSig=",MathRound(bsig),"  SSig=",MathRound(ssig),"  SSum=",MathRound(ssum),"  BSum=",MathRound(bsum),
      "  Prosadka=",pr,"  HBlok=",hblok);
//---------------------------------Îïðåäåëåíå ìîäåëè çàêðûòèÿ îðäåðîâ ïî ïðîôèòó-----------------------------------
*/
   if(s+b<=1){
      hml=0;pl=0;
   }
   if(summa>=stop*mlot && s+b==1 && Trailing_Stop==0)pl=1;
   if(summa>2*stop && s+b==2 && lok==0 && Trailing_Stop==0)pl=1;
   if(summa>=3*stop*mlot && s+b==3 && lok==1 && Trailing_Stop==0)pl=1;
   if(Trailing_Stop>0)pl=0;
   if(Trailing_Stop>0 && (ssum<hstop || bsum<hstop))pl=1; // ñòîï äëÿ íåóäà÷íîãî õåäæà
   if(Trailing_Stop>0 && ((ssum<-300 && bsum>300) || (ssum>300 && bsum<-300)) && s+b>=2 && hedg==1 && pl==0)hml=1; 
// Óäàëåíèå ìåëêîé ïîçèöèè ñ îòðèöàòåëüíûì ïðîôèòîâ ïîñëå óäà÷íîãî çàïóñêà õåäæà
//------------------------------Óäàëåíèå õåäæèðóåìîãî îðäåðà ïðè ïîëó÷åíèè çàäàííîãî ïðîôèòà-----------------------
   if(hml==1){ 
      for(cnt=OrdersTotal()-1;cnt>=0;cnt--){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
            if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && ssum<-2*stop && NormalizeDouble(OrderLots(),1)==NormalizeDouble(1.0*mlot,1)){                                    
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //return(0);
            } 
            if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && bsum<-2*stop && NormalizeDouble(OrderLots(),1)==NormalizeDouble(1.0*mlot,1)){ 
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
               //return(0);
            }
      }
      return(0);
   }
//---------------------------Çàêðûòèå âñåõ îòêðûòûõ íà ïàðå îðäåðîâ ïðè äîñòèæåíèè çàäàííîãî ïðîôèòà
   if(pl==1){ 
      for(cnt=OrdersTotal()-1;cnt>=0;cnt--){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
            if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){                                    
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //return(0);
            }
            if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
               //return(0);
            }
      }
      return(0);
   }

//------------------------------------------Âûñòàâëåíèå îñíîâíûõ è ëîêèðóþùèõ îðäåðîâ------------------------------
   if(s+b<=1){ 
      if((sigs==1 && s+b==0) || (bsum<-150 && lok==1)){ 
         OrderSend(Symbol(),OP_SELL,mlot,Bid,5,Bid+Stop_Loss*Point,Bid-Take_Profit*Point,NULL,0,0,Lime);
         //SetArrow(Time[0],H+5*Point,242,Lime);
         return(0);
      }
      if((sigb==1 && s+b==0) || (ssum<-150 && lok==1)){
         OrderSend(Symbol(),OP_BUY,mlot,Ask,5,Ask-Stop_Loss*Point,Ask+Take_Profit*Point,NULL,0,0,Gold);
         //SetArrow(Time[0],L-5*Point,241,Gold);
         return(0);
      }
   }
/*  */ 
//----------------------------------------------------------The END-------------------------------------------------
   return(0);
  }
//+------------------------------------------------------------------+

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 ---