#include <stdlib.mqh>
#include <WinUser32.mqh>
extern double BuyLots27 = 0.2;
extern int BuyStoploss27 = 100;
extern int BuyTakeprofit27 = 100;
extern double SellLots22 = 0.2;
extern int SellStoploss22 = 100;
extern int SellTakeprofit22 = 100;
double PipValue=1; // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n"; // use this in custom or utility blocks where you need line feeds
int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names
int current = 0;
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
void OnEveryTick5()
{
PipValue = 1;
if (NDigits == 3 || NDigits == 5) PipValue = 10;
IfOrderExists28();
IfOrderExists39();
CustomCode4();
}
void IfOrderExists28()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 38)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists)
{
TechnicalAnalysis2x31();
}
}
void TechnicalAnalysis2x31()
{
if ((Close[2] > Open[2]) && (Close[1] < Open[1]))
{
CloseOrder35();
}
}
void CloseOrder35()
{
int orderstotal = OrdersTotal();
int orders = 0;
int ordticket[90][2];
for (int i = 0; i < orderstotal; i++)
{
bool sel = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType() != OP_BUY || OrderSymbol() != Symbol() || OrderMagicNumber() != 38)
{
continue;
}
ordticket[orders][0] = OrderOpenTime();
ordticket[orders][1] = OrderTicket();
orders++;
}
if (orders > 1)
{
ArrayResize(ordticket,orders);
ArraySort(ordticket);
}
for (i = 0; i < orders; i++)
{
if (OrderSelect(ordticket[i][1], SELECT_BY_TICKET) == true)
{
bool ret = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 4, Yellow);
if (ret == false)
Print("OrderClose() error - ", ErrorDescription(GetLastError()));
}
}
}
void IfOrderExists39()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 39)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists)
{
TechnicalAnalysis2x34();
}
}
void TechnicalAnalysis2x34()
{
if ((Close[2] < Open[2]) && (Close[1] > Open[1]))
{
CloseOrder36();
}
}
void CloseOrder36()
{
int orderstotal = OrdersTotal();
int orders = 0;
int ordticket[90][2];
for (int i = 0; i < orderstotal; i++)
{
bool sel = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType() != OP_SELL || OrderSymbol() != Symbol() || OrderMagicNumber() != 39)
{
continue;
}
ordticket[orders][0] = OrderOpenTime();
ordticket[orders][1] = OrderTicket();
orders++;
}
if (orders > 1)
{
ArrayResize(ordticket,orders);
ArraySort(ordticket);
}
for (i = 0; i < orders; i++)
{
if (OrderSelect(ordticket[i][1], SELECT_BY_TICKET) == true)
{
bool ret = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 4, Yellow);
if (ret == false)
Print("OrderClose() error - ", ErrorDescription(GetLastError()));
}
}
}
void CustomCode4()
{
TechnicalAnalysis2x25();
TechnicalAnalysis2x19();
}
void TechnicalAnalysis2x25()
{
if ((iMA(NULL, NULL,21,0,MODE_EMA,PRICE_CLOSE,current) > iMA(NULL, NULL,50,0,MODE_EMA,PRICE_CLOSE,current)) && (Ask > iMA(NULL, NULL,21,0,MODE_EMA,PRICE_CLOSE,current)))
{
TechnicalAnalysis3x26();
}
}
void TechnicalAnalysis3x26()
{
if ((Close[3] > Open[3]) && (Close[2] > Open[2]) && (Close[1] > Open[1]))
{
IfOrderDoesNotExist16();
}
}
void IfOrderDoesNotExist16()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 38)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists == false)
{
BuyOrder27();
IfOrderExists17();
}
}
void BuyOrder27()
{
double SL = Ask - BuyStoploss27*PipValue*Point;
if (BuyStoploss27 == 0) SL = 0;
double TPПоказано первые 50% кода (символов: 7430)
Введите ваш email и нажмите кнопку, чтобы перейти к оплате.