Stochastic_v4

Author: Copyright � 2005, MetaQuotes Software Corp.
Price Data Components
Series array that contains open time 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 strategyIt Closes Orders by itself
Indicators Used
Stochastic oscillatorBill Williams Accelerator/Decelerator oscillator
Miscellaneous
It issuies visual alerts to the screen
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
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%
Stochastic_v4
//+------------------------------------------------------------------+
//|                                                   Stochastic.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  int  cnt,TrailingStop,per; 
  int slippage,StopLoss,TakeProfit;
  slippage = 3;
  double AlligatorHigh,AlligatorLow,Temp;
  double StoM0,StoS0,StoM1,StoS1,StoM2,StoS2,StoM3,StoS3;
  double AC3,AC2,AC1;
  double DeltaLimit;
  double DeltaOpen,DeltaOpen1,AngleOpen,DeltaClose;
  

DeltaOpen = 0.1;
DeltaOpen1 = 0.1;
AngleOpen = 2;
DeltaClose = 4;
DeltaLimit = 0;
StopLoss = 50;
TakeProfit = 100;
TrailingStop =15;
// íà÷àëî áëîêà ïîêóïêè 
if (OrdersTotal() < 1)
{ 

if ((Period() < 60) || (Minute() != 0) || (AccountFreeMargin() < 100))  //  (Mod(Minute,15) > 0) then 
//Íå òîðãîâàòü íà ìàëåíüêèõ ïåðèîäàõ è â èíòåðâàëå 
return(0);

}

per = PERIOD_H4;
StoM1 = iStochastic(Symbol(),per,10,5,5,MODE_EMA,0,MODE_MAIN,1);
StoM2 = iStochastic(Symbol(),per,10,5,5,MODE_EMA,0,MODE_MAIN,2);
StoM3 = iStochastic(Symbol(),per,10,5,5,MODE_EMA,0,MODE_MAIN,3);
StoS1 = iStochastic(Symbol(),per,10,5,5,MODE_EMA,0,MODE_SIGNAL,1);
StoS2 = iStochastic(Symbol(),per,10,5,5,MODE_EMA,0,MODE_SIGNAL,2);
StoS3 = iStochastic(Symbol(),per,10,5,5,MODE_EMA,0,MODE_SIGNAL,3);



AC1 = iAC(Symbol(),per,1); 
AC2 = iAC(Symbol(),per,2); 
AC3 = iAC(Symbol(),per,3); 

if (OrdersTotal() <1) 
{ 
//Ìîæíî æäàòü ñèãíàëà íà ïðîäàæó 
if ((StoM2 > (StoM1 + AngleOpen)) && ((StoM1+DeltaOpen1) < StoS1) && ((StoM2-DeltaOpen) > StoS2) && ((StoM3-DeltaOpen) > StoS3) && ((AC1 < AC2)))
{ 
//Åñòü ïåðåñå÷åíèå 
OrderSend(Symbol(),OP_SELL,MathMax(0.1,MathFloor(AccountFreeMargin()/500)/10),Ask+DeltaLimit*Point,slippage, Ask+StopLoss*Point+DeltaLimit*Point, Bid-TakeProfit*Point+DeltaLimit*Point,"Sell",0,0,Blue); 
//SetOrder(OP_SELLLIMIT,Lots,Ask+DeltaLimit*Point,Slippage, Ask+StopLoss*Point+DeltaLimit*Point, Bid-TakeProfit*Point+DeltaLimit*Point,Blue); 
Alert("Sell - ",Symbol(),"\n","Date - ",TimeToStr(CurTime()),"\n","Balance - ",AccountBalance()); 

} 

//Ìîæíî æäàòü ñèãíàëà íà ïðîäàæó 
if ((StoM2 < StoM1 - AngleOpen) && (StoM1-DeltaOpen1 > StoS1) && (StoM2+DeltaOpen < StoS2) && (StoM3+DeltaOpen < StoS3) && ((AC1 > AC2))) 
{ 
//Åñòü ïåðåñå÷åíèå 
OrderSend(Symbol(),OP_BUY,MathMax(0.1,MathFloor(AccountFreeMargin()/500)/10),Bid-DeltaLimit*Point,slippage, Bid-StopLoss*Point-DeltaLimit*Point, Ask+TakeProfit*Point-DeltaLimit*Point,"Buy",0,0,Red); 
//SetOrder(OP_BUYLIMIT,Lots,Bid-DeltaLimit*Point,Slippage, Bid-StopLoss*Point-DeltaLimit*Point, Ask+TakeProfit*Point-DeltaLimit*Point,Red); 
Alert("Buy - ",Symbol(),"\n","Date - ",TimeToStr(CurTime()),"\n","Balance - ",AccountBalance()); 

} 
return(0);
}// êîíåö áëîêà ïîêóïêè 

StoM0 = iStochastic(Symbol(),per,10,5,5,MODE_EMA,0,MODE_MAIN,0);
StoS1 = iStochastic(Symbol(),per,10,5,5,MODE_EMA,0,MODE_SIGNAL,0);

// ïåðåìåùåíèå îòëîæåííûõ ïîçèöèé è ñòîïëîñîâ ïî îòêðûòûì ïîçèöèÿì 
for (cnt=1; cnt<OrdersTotal(); cnt++) // íà÷àëî öèêëà ïåðåáîðêè ïîçèöèé èç îêíà òîðãîâëè 
{ 
 OrderSelect(cnt, SELECT_BY_POS);
if (OrderSymbol()==Symbol()) 
{ 
if (OrderType()==OP_BUY)  /* Äëèííàÿ ïîçèöèÿ */ 
{ 
if ((Bid-OrderOpenPrice())>(15*Point) && OrderStopLoss()<OrderOpenPrice()) 
{ 

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+5*Point,OrderTakeProfit(),Pink);
 /* äåëî ñäåëàëè - âûõîäèì. */ 
} 
if ((Bid-OrderOpenPrice())>(TrailingStop*Point))
{ 
/* äà, ïîçèöèÿ èìååò ïðèáûëü áîëüøå ÷åì çíà÷åíèå òðåéëèíã ñòîïà 
(íàïðèìåð 30 ïóíêòîâ). òåïåðü íàäî ïðîâåðèòü, ìîæíî ëè 
ïîñòàâèòü ñòîï ëó÷øå ÷åì îí áûë ðàíåå? */ 
if (OrderStopLoss()<(Bid-TrailingStop*Point)) 
{ 
/* ìåíÿåì ñòîïëîññ íà óðîâåíü Bid-Trailing Stop */ 
OrderModify(OrderTicket(),OrderOpenPrice(), 
Bid-TrailingStop*Point,OrderTakeProfit(),Pink); 
} 
return(0);
//Exit; /* äåëî ñäåëàëè - âûõîäèì. */ 

} 
if (/*(Close[1] < AlligatorHigh) or*/ (StoM1+DeltaClose < StoM2))
{ 
OrderClose(OrderTicket(),OrderLots( ) ,Bid,slippage,Green); 
//Alert("Balance - ",Balance,"\n","FreeMargin - ",FreeMargin,"\n","Margin - ",Margin,"\n","TotalProfit - ",TotalProfit); 
Alert("Balance - ",AccountBalance(),"\n","FreeMargin - ",AccountFreeMargin(),"\n","Margin - ",AccountMargin(),"\n","TotalProfit - ",AccountProfit()); 
} 
//Exit; 
return(0);
} 

if (OrderType()==OP_SELL) /*Êîðîòêàÿ ïîçèöèÿ */ 
{ 
if (((OrderOpenPrice() - Ask)>(15*Point)) && OrderStopLoss()>OrderOpenPrice()) 
{ 
OrderModify(OrderTicket(),OrderOpenPrice(), 
OrderOpenPrice()-5*Point,OrderTakeProfit(),Pink); 
//Exit; /* äåëî ñäåëàëè - âûõîäèì. */ 
return(0);
} 
/* ñíà÷àëà ïðîâåðèì - åñòü ëè ïðîôèò ó ýòîé ñäåëêè áîëüøå ÷åì 
óðîâåíü òðåéëèíã ñòîïà? ïðîâåðÿåì Ask, òàê êàê ïîçèöèÿ SELL */ 
if ((OrderOpenPrice()-Ask)>(TrailingStop*Point)) 
{ 
/* äà, ïîçèöèÿ èìååò ïðèáûëü áîëüøå ÷åì çíà÷åíèå òðåéëèíã ñòîïà 
(íàïðèìåð 30 ïóíêòîâ). òåïåðü íàäî ïðîâåðèòü, ìîæíî ëè 
ïîñòàâèòü ñòîï ëó÷øå ÷åì îí áûë ðàíåå? */ 
if (OrderStopLoss()>(Ask+TrailingStop*Point) || 
OrderStopLoss()==0 ) /* îáÿçàòåëüíîå óñëîâèå!!! */ 
{ 
/* ìåíÿåì ñòîïëîññ íà óðîâåíü Ask+Trailing Stop */ 
OrderModify(OrderTicket(),OrderOpenPrice(), 
Ask+TrailingStop*Point,OrderTakeProfit(),Pink); 
} 
return(0);
} 
if (/*(Close[1] > AlligatorLow) ||*/ (StoM1-DeltaClose > StoM2) )
{ 
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Green); 
Alert("Balance - ",AccountBalance(),"\n","FreeMargin - ",AccountFreeMargin(),"\n","Margin - ",AccountMargin(),"\n","TotalProfit - ",AccountProfit()); 
} 
return(0);
}/* êîíöîâêà êîðîòêîé ïîçèöèè */ 
} 
} // êîíåö öèêëà ïåðåáîðêè ïîçèöèé èç îêíà òîðãîâëè 
  
  
  
   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 ---