Price Data Components
Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
Falling_Cat
#property copyright "Scam Laboratory 2013"
#property link "http://www.forex4you.org/?affid=bdbda7b"
//=============== Ìåíþ ===============================================
extern string Name="Falling Cat";
extern string MoneyManagement="MoneyManagement";
extern double StartLot = 0.01; // Ñòàðò èãðóøêè êîøêè
extern int TakeProfit = 2000; // ôèêñèðîâàííûé ïðîôèò
extern int StopLoss = 2000; // ôèêñèðîâàííûé ïðîôèò
extern string Enter="OpenPosition";
extern int Period_MA_Main = 12; // Ïåðèîä ÌÀ
extern int Ma_method_Main = 1; // MODE_SMA=0 MODE_EMA=1 MODE_SMMA=2 MODE_LWMA=3
extern int Applied_price_Main = 5; // PRICE_CLOSE=0 PRICE_OPEN=1 PRICE_HIGH=2 PRICE_LOW=3 PRICE_MEDIAN=4 PRICE_TYPICAL=5 PRICE_WEIGHTED=6
extern int Period_MA_Signal = 3; // Ïåðèîä ÌÀ
extern int Ma_method_Signal = 1; // MODE_SMA=0 MODE_EMA=1 MODE_SMMA=2 MODE_LWMA=3
extern int Applied_price_Signal = 5; // PRICE_CLOSE=0 PRICE_OPEN=1 PRICE_HIGH=2 PRICE_LOW=3 PRICE_MEDIAN=4 PRICE_TYPICAL=5 PRICE_WEIGHTED=6
extern string Exit="ExitPosition";
extern int ProfitClose = 20000; // Çàêðûâàåì ïðîôèò â åäèíèöàõ ñ÷åòà
extern int MinTP = 10; // ìèíèìàëüíûé òåéê ïðîôèò
extern int MinSL = 10; // ìèíèìàëüíûé ñòîï ëîññ
extern string Server="ServerSetting";
extern int MaxSpread = 20; // Âûøå ýòîãî ñïðåäà íå îòêðûâàåìñÿ
extern int Slippage = 0; // Äîïóñòèìîå ïðîñêàëüçîâàíèå öåíû
extern int Pause = 500; // ïàóçà ìåæäó çàïðîñàìè íà ñåðâåð
extern string Magic="MagicNumber";
extern int mn = 16384; // Ìàãè÷åñêèé íîìåð
//============== Ïåðåìåííûå ==========================================
string GetNameOP="FallingCat"; // êîìåíò â îòêðûòîì îðäåðå
int spread; // òåêóùèé ñïðåä
int Ticket; // òèêåò îðäåðà ïðè îòêðûòèè
int FullSell; // FullSignals
int FullBuy;
double MA_main; // ÌÀ îñíàâíàÿ
double MA_signal; // ÌÀ ñèãíàëüíàÿ
double HeikenAshi; // HeikenAshi
int Profit; // Ïðèáûëü
int NoLoss; // Áåçóáûòîê
double Lot; // Ðàáî÷èé ëîò
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (!IsTesting())
{
if (IsExpertEnabled())
{
Comment("Ñîâåòíèê áóäåò çàïóùåí ñëåäóþùèì òèêîì");
}
else
{
Comment("Îòæàòà êíîïêà \"Ðàçðåøèòü çàïóñê ñîâåòíèêîâ\"");
}
}
return (0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{//0
//-Start-
// ======== ïîëó÷åíèå äàííûõ ñ èíäèêàòîðîâ è òåêóùåé öåíû ============
{//1
MA_main = iMA(NULL,0,Period_MA_Main,0,Ma_method_Main,Applied_price_Main,1); // ÌÀ îñíàâíàÿ
MA_signal = iMA(NULL,0,Period_MA_Signal,0,Period_MA_Signal,Applied_price_Signal,1); // ÌÀ ñèãíàëüíàÿ
HeikenAshi = iOpen(NULL,0,0); // îòêðûòèå ñâå÷è
spread = MarketInfo(Symbol(),MODE_SPREAD); // ñïðåä
}//1
// ================= Îáðàáîòêà ñèãíàëîâ ==============================
{//2
if ((MA_signal < MA_main) && (HeikenAshi < MA_signal)) FullSell = 1; else FullSell = 0; // FullSignals
if ((MA_signal > MA_main) && (HeikenAshi > MA_signal)) FullBuy = 1; else FullBuy = 0; // FullSignals
if (AccountEquity() > AccountBalance()) Profit = 1; else Profit = 0; // Ïðèáûëü
if (AccountBalance() == AccountEquity()) NoLoss = 1; else NoLoss = 0; // Áåçóáûòîê
if (NumberOfPositions() == 0) Lot = StartLot; else Lot = (GetLotLastPos()*2);
}//2
// ================= Êîììåíòàðèè =====================================
{//3
}//3
// ================= Îòêðûòèå ñäåëêè =================================
{//4
// ïîëíûé ñèãíàë, îðäåðà íåò, òîðãîâëÿ ðàçðåøåíà è ïîñëåäíÿÿ çàêðûòàÿ ïîçèöèè íå òàêàÿ æå
if ((FullSell == 1) && (Profit == 0) && (GetTypeLastOpenPos() !=1))
{
Ticket = OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,0,0,GetNameOP,mn,0,OrangeRed);
Sleep (Pause);
OrderModify(Ticket,OrderOpenPrice(),(PriceOpenLastPos()+StopLoss*Point),(PriceOpenLastPos()-TakeProfit*Point),0,CLR_NONE);
}
if ((FullBuy == 1) && (Profit == 0) && (GetTypeLastOpenPos() !=0))
{
Ticket = OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,0,0,GetNameOP,mn,0,Blue);
Sleep (Pause);
OrderModify(Ticket,OrderOpenPrice(),(PriceOpenLastPos()-StopLoss*Point),(PriceOpenLastPos()+TakeProfit*Point),0,CLR_NONE);
}
}//4
// ================= Ìîäèôèêàöèÿ îðäåðà ==============================
{//5
}//5
// ================= Çàêðûòèå ñäåëêè =================================
{//6
if ((FullSell == 1) && (Profit == 1) && (GetTypeLastOpenPos() !=1))
{
ClossAllProfitBuy ();
ClossAllLossSell();
}
if ((FullBuy == 1) && (Profit == 1) && (GetTypeLastOpenPos() !=0))
{
ClossAllProfitSell ();
ClossAllLossBuy();
}
if (GetProfitOpenPosInCurrency() >= ProfitClose)
{
ClossAllProfitSell ();
ClossAllProfitBuy ();
ClossAllLossSell();
ClossAllLossBuy();
}
}//6
//-End-
return(0);
}//0
// ================= Ôóíêöèè =========================================
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 19.02.2008 |
//| Îïèñàíèå : Âîçâðàùàåò êîëè÷åñòâî ïîçèöèé. |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1) {
int i, k=OrdersTotal(), kp=0;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) kp++;
}
}
}
}
}
return(kp);
}
//End
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 19.02.2008 |
//| Îïèñàíèå : Âîçâðàùàåò òèï ïîñëåäíåé îòêðûòîé ïîçèöèè èëè -1 |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//+----------------------------------------------------------------------------+
int GetTypeLastOpenPos(string sy="") {
datetime t;
int i, k=OrdersTotal(), r=-1;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderType();
}
}
}
}
}
return(r);
}
//End
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 19.02.2008 |
//| Îïèñàíèå : Âîçâðàùàåò ñóììàðíûé ïðîôèò îòêðûòûõ ïîçèöèé â âàëþòå äåïîçèòà |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1) {
double p=0;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
return(p);
}
//End
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 19.02.2008 |
//| Îïèñàíèå : Âîçâðàùàåò ðàçìåð ëîòà ïîñëåäíåé îòêðûòîé ïîçèöèè èëè -1 |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//+----------------------------------------------------------------------------+
double GetLotLastPos(string sy="", int op=-1) {
datetime o;
double l=-1;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (o<OrderOpenTime()) {
o=OrderOpenTime();
l=OrderLots();
}
}
}
}
}
}
}
return(l);
}
//End
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 19.02.2008 |
//| Îïèñàíèå : Âîçâðàùàåò öåíó îòêðûòèÿ ïîñëåäíåé îòêðûòîé ïîçèöèé. |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//+----------------------------------------------------------------------------+
double PriceOpenLastPos(string sy="", int op=-1) {
datetime t;
double r=0;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}
return(r);
}
//End
//+------------------------------------------------------------------+
//| Çàêðûòü ïðèáûëüíûå îðäåðà |
//+------------------------------------------------------------------+
// ====================== Çàêðûòü BUY â ïðîôèòå ===============================
double ClossAllProfitBuy ()
{
int Profit1=MinTP;
int col1=Lime;
int ask1, bid1, open1;
double point1;
for (int i1=OrdersTotal()-1; i1>=0; i1--)
{
if (!OrderSelect(i1,SELECT_BY_POS,MODE_TRADES)) break;
if ((OrderType()==OP_BUY) && (OrderMagicNumber()==mn))
{
point1=MarketInfo(Symbol(),MODE_POINT);
if (point1==0) break;
bid1=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point1);
open1=MathRound(OrderOpenPrice()/point1);
if (bid1-open1<Profit1) continue;
OrderClose(OrderTicket(),OrderLots(),bid1*point1,Slippage,col1);
}
}
}
// End
// ====================== Çàêðûòü SELL â ïðîôèòå ===============================
double ClossAllProfitSell ()
{
int Profit2=MinTP;
int col2=Lime;
int ask2, bid2, open2;
double point2;
for (int i2=OrdersTotal()-1; i2>=0; i2--)
{
if (!OrderSelect(i2,SELECT_BY_POS,MODE_TRADES)) break;
if ((OrderType()==OP_SELL) && (OrderMagicNumber()==mn))
{
point2=MarketInfo(Symbol(),MODE_POINT);
if (point2==0) break;
ask2=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point2);
open2=MathRound(OrderOpenPrice()/point2);
if (open2-ask2<Profit2) continue;
OrderClose (OrderTicket(),OrderLots(),ask2*point2,Slippage,col2) ;
}
}
}
// End
//+------------------------------------------------------------------+
//| Çàêðûòü óáûòî÷íûå îðäåðà |
//+------------------------------------------------------------------+
// ====================== Çàêðûòü BUY â óáûòêå ===============================
double ClossAllLossBuy()
{
int Stop4=MinSL;
int ask4, bid4, open4;
double point4;
for (int i4=OrdersTotal()-1; i4>=0; i4--)
{
if (!OrderSelect(i4,SELECT_BY_POS,MODE_TRADES)) break;
if ((OrderType()==OP_BUY) && (OrderMagicNumber()==mn))
{
point4=MarketInfo(Symbol(),MODE_POINT);
if (point4==0) break;
bid4=MathRound(MarketInfo(Symbol(),MODE_BID)/point4);
open4=MathRound(OrderOpenPrice()/point4);
if (open4-bid4<Stop4) continue;
OrderClose(OrderTicket(),OrderLots(),bid4*point4,Slippage,Red);
}
}
}
// End
// ====================== Çàêðûòü SELL â óáûòêå ===============================
double ClossAllLossSell()
{
int Stop5=MinSL;
int ask5, bid5, open5;
double point5;
for (int i5=OrdersTotal()-1; i5>=0; i5--)
{
if (!OrderSelect(i5,SELECT_BY_POS,MODE_TRADES)) break;
if ((OrderType()==OP_SELL) && (OrderMagicNumber()==mn))
{
point5=MarketInfo(Symbol(),MODE_POINT);
if (point5==0) break;
ask5=MathRound(MarketInfo(Symbol(),MODE_ASK)/point5);
open5=MathRound(OrderOpenPrice()/point5);
if (ask5-open5<Stop5) continue;
OrderClose (OrderTicket(),OrderLots(),ask5*point5,Slippage,Red);
}
}
}
// End
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
---