Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
Profitability Reports
GBP/USD
Oct 2024 - Jan 2025
54.00 %
Total Trades
321
Won Trades
0
Lost trades
0
Win Rate
0.00 %
Expected payoff
-1.36
Gross Profit
511.00
Gross Loss
-946.50
Total Net Profit
-435.50
-100%
-50%
0%
50%
100%
CCI_MA_v1.5
//+------------------------------------------------------------------+
//| RSI_MA.mq4 |
//| Copyright © 2008, AEliseev k800elik@gmail.com |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Andrey E. k800elik@gmail.com"
#property link "http://www.metaquotes.net"
//---- input parameters
extern int CCI_Per=14;
extern int MA_Per=9;
extern int CCI_close_Per=14;
extern double TakeProfit=50;
extern double StopLoss=40;
extern double Lots=0.1;
extern int Deposit=1000;
extern bool MM=false;
extern int _MagicNumber = 13131313;
extern int _Sleep=5000;
int LotA=1, Err=0;
int j=0, var2,var1;
int counter=0;
int ticket;
bool var3;
bool order=false;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
Comment("CCI_MA v1.5 © 2008, Andrey E. k800elik@gmail.com");
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
/* int i, a1, a2;
//----
if (OrdersTotal()>0)
{
for (i=0; i==OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS);
if (OrderMagicNumber()==131313)
{
a1=OrderClose(LotA*Lots,Ask,5,Red);
//a2=OrderClose(var1,LotA*Lots,Ask,5,Red);
}
}
} */
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if (isNewBar()) EveryBar();
EveryTick();
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Ïðîâåðêà íà ïîÿâëåíèå íîâîãî áàðà |
//+------------------------------------------------------------------+
bool isNewBar()
{ static datetime TimeBar=0;
bool flag=false;
if(TimeBar!=Time[0])
{
TimeBar=Time[0];
flag=true;
}
return (flag);
}
//+------------------------------------------------------------------+
//| Âûïîëíÿåì äåéñòâèÿ ïðè ïîÿâëåíèè íîâîãî áàðà |
//+------------------------------------------------------------------+
void EveryBar()
{
// Print("Ïðèøåë ÍÎÂÛÉ ÁÀÐ!");
double MA[100], CCI[100], CCIclose[100], StandDevi[100];
int i,limit=ArraySize(CCI);
double SL, TP;
Sleep(_Sleep);
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
for(i=0; i<limit; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);
}
// Ïðîâåðÿåì, õâàòàåò ëè äåíåã äëÿ îòêðûòèÿ íîâîãî îðäåðà
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
//=================================================================================
int _GetLastError = 0, _OrdersTotal = OrdersTotal();
//---- ïåðåáèðàåì âñå îòêðûòûå ïîçèöèè
for ( int z = _OrdersTotal - 1; z >= 0; z -- )
{
//---- åñëè ïðè âûáîðå ïîçèöèè âîçíèêëà îøèáêà, ïåðåõîäèì ê ñëåäóþùåé
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Print( "OrderSelect( " ,z, ", SELECT_BY_POS ) - Error #", _GetLastError);
continue;
}
// åñëè ïîçèöèÿ îòêðûòà íå ïî òåêóùåìó èíñòðóìåíòó, ïðîïóñêàåì å¸
if ( OrderSymbol() != Symbol() ) continue;
// åñëè MagicNumber íå ðàâåí _MagicNumber, ïðîïóñêàåì
// ýòó ïîçèöèþ
if ( OrderMagicNumber() != _MagicNumber ) continue;
//---- åñëè îòêðûòà ÁÀÉ-ïîçèöèÿ,
if ( OrderType() == OP_BUY )
{
//---- åñëè ÑÑI ïåðåñåêàåò ëèíèþ 100 âíèç
if (((CCIclose[2]>100) && (CCIclose[1]<=100)) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2]))
{
//---- çàêðûâàåì ïîçèöèþ
if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 10, Green ) )
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderClose ¹ ", _GetLastError );
Err=1;
return(-1);
}
}
// åñëè ñèãíàë íå èçìåíèëñÿ, âûõîäèì - ïîêà ðàíî îòêðûâàòü
// íîâóþ ïîçèöèþ
else
{ return(0); }
}
//---- åñëè îòêðûòà ÑÅËË-ïîçèöèÿ,
if ( OrderType() == OP_SELL )
{
//---- åñëè ÑÑI ïåðåñåêàåò ëèíèþ -100 ââåðõ,
if (((CCIclose[2]<-100) && (CCIclose[1]>=-100)) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2])))
{
//---- çàêðûâàåì ïîçèöèþ
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 10, Red ) )
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderClose ¹ ", _GetLastError );
Err=2;
return(-1);
}
}
// åñëè ñèãíàë íå èçìåíèëñÿ, âûõîäèì - ïîêà ðàíî îòêðûâàòü
// íîâóþ ïîçèöèþ
else return(0);
}
}
//+------------------------------------------------------------------+
//| åñëè âûïîëíåíèå äîøëî äî ýòîãî ìåñòà, çíà÷èò îòêðûòîé ïîçèöèè íåò|
//| ïðîâåðÿåì, åñòü ëè âîçìîæíîñòü îòêðûòü ïîçèöèþ |
//+------------------------------------------------------------------+
Sleep(_Sleep);
//---- åñëè ÑÑI ïåðåñ¸ê MACD ñíèçó ââåðõ ,
SL = NormalizeDouble(Bid - StopLoss*Point, Digits);
TP = NormalizeDouble(Bid + TakeProfit*Point, Digits);
if ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<MA[limit-MA_Per-2]))
{
//---- îòêðûâàåì ÁÀÉ ïîçèöèþ
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 5, SL, TP, "CCI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderSend OP_BUY ¹ ", _GetLastError );
Err=3;
return(-1);
}
return(0);
}
//---- åñëè ÑÑI ïåðåñ¸ê MACD ñâåðõó âíèç,
SL = NormalizeDouble(Ask + StopLoss*Point, Digits);
TP = NormalizeDouble(Ask - TakeProfit*Point, Digits);
if ((CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>MA[limit-MA_Per-2]))
{
//---- îòêðûâàåì ÑÅËË ïîçèöèþ
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 5, SL, TP, "CCI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderSend OP_SELL ¹ ", _GetLastError );
Err=4;
return(-1);
}
return(0);
}
}
//+------------------------------------------------------------------+
//| Âûïîëíÿåì âû÷èñëåíèÿ ïðè êàæäîì èçìåíåíèè öåíû |
//+------------------------------------------------------------------+
void EveryTick()
{
int i;
if (MM==true)
{
if (AccountBalance()>(2*Deposit)) LotA=2;
if (AccountBalance()>(3*Deposit)) LotA=3;
if (AccountBalance()>(4*Deposit)) LotA=4;
if (AccountBalance()>(5*Deposit)) LotA=5;
if (AccountBalance()>(6*Deposit)) LotA=6;
if (AccountBalance()>(7*Deposit)) LotA=7;
if (AccountBalance()>(8*Deposit)) LotA=8;
if (AccountBalance()>(9*Deposit)) LotA=9;
if (AccountBalance()>(10*Deposit)) LotA=10;
if (AccountBalance()>(11*Deposit)) LotA=11;
if (AccountBalance()>(12*Deposit)) LotA=12;
if (AccountBalance()>(13*Deposit)) LotA=13;
if (AccountBalance()>(14*Deposit)) LotA=14;
if (AccountBalance()>(15*Deposit)) LotA=15;
if (AccountBalance()>(16*Deposit)) LotA=16;
if (AccountBalance()>(17*Deposit)) LotA=17;
if (AccountBalance()>(18*Deposit)) LotA=18;
if (AccountBalance()>(19*Deposit)) LotA=19;
if (AccountBalance()>(20*Deposit)) LotA=20;
}
int _GetLastError = 0, _OrdersTotal = OrdersTotal();
int z;
double SL, TP;
double MA[100], CCI[100], CCIclose[100], StandDevi[100];
int limit=ArraySize(CCI);
for(i=0; i<limit; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);
}
switch(Err)
{
case 1:
for ( z=_OrdersTotal - 1; z >= 0; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Print( "OrderSelect( " ,z, ", SELECT_BY_POS ) - Error #", _GetLastError);
continue;
}
if ( OrderSymbol() != Symbol() ) continue;
if ( OrderMagicNumber() != _MagicNumber ) continue;
if ( OrderType() == OP_BUY )
{
if (((CCIclose[2]>100) && (CCIclose[1]<=100)) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2]))
{
if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )
{
_GetLastError = GetLastError();
Print( "Îøèáêà CASE OrderClose ¹ ", _GetLastError );
Err=1;
return(-1);
}
else Err=0;
}
}
}
break;
//=============================================================================
case 2:
for ( z=_OrdersTotal - 1; z >= 0; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Print( "OrderSelect( " ,z, ", SELECT_BY_POS ) - Error #", _GetLastError);
continue;
}
if ( OrderSymbol() != Symbol() ) continue;
if ( OrderMagicNumber() != _MagicNumber ) continue;
if ( OrderType() == OP_SELL )
{
if (((CCIclose[2]<-100) && (CCIclose[1]>=-100)) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2])))
{
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 5, Red ) )
{
_GetLastError = GetLastError();
Print( "Îøèáêà CASE OrderClose ¹ ", _GetLastError );
Err=2;
return(-1);
}
else Err=0;
}
}
}
break;
//==============================================================================
case 3:
SL = NormalizeDouble(Bid - StopLoss*Point, Digits);
TP = NormalizeDouble(Bid + TakeProfit*Point, Digits);
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 7, SL, TP, "AI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError();
Print( "Îøèáêà CASE OrderSend OP_BUY ¹ ", _GetLastError );
Err=3;
return(-1);
}
else Err=0;
break;
//===================================================================================
case 4:
SL = NormalizeDouble(Ask + StopLoss*Point, Digits);
TP = NormalizeDouble(Ask - TakeProfit*Point, Digits);
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 7, SL, TP, "AI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError();
Print( "Îøèáêà CASE OrderSend OP_SELL ¹ ", _GetLastError );
Err=4;
return(-1);
}
else Err=0;
break;
}
}
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
---