Arctus:
Здравствуйте. В общем, написал скрипт копипастой(ибо как не шарю в MQL) для открытия трех сделок. При запуске он начал их непрерывно открывать. Открылось семь штук(наверное ограничение брокера), благо график пошел в нужную сторону и я закрылся в плюсе.(чет полез на реале тестить). Не подскажете что не так?) Скрипт как во вложении так и здесь.
Ужас...
Список замечаний получится длиннее вашего кода, лучше воздержусь.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте. В общем, написал скрипт копипастой(ибо как не шарю в MQL) для открытия трех сделок. При запуске он начал их непрерывно открывать. Открылось семь штук(наверное ограничение брокера), благо график пошел в нужную сторону и я закрылся в плюсе.(чет полез на реале тестить). Не подскажете что не так?) Скрипт как во вложении так и здесь.
extern int stoploss1 = 301, //уровень выставления SL, если 0, то SL не выставляется
takeprofit1 = 501, //уровень выставления TP, если 0, то TP не выставляется
Magic1 = 1,
stoploss2 = 501, //уровень выставления SL, если 0, то SL не выставляется
takeprofit2 = 1001, //уровень выставления TP, если 0, то TP не выставляется
Magic2 = 2,
stoploss3 = 501, //уровень выставления SL, если 0, то SL не выставляется
takeprofit3 = 0, //уровень выставления TP, если 0, то TP не выставляется
Magic3 = 3; //уникальный номер ордера
extern bool SELL = false, //открыть ордер SELL
BUY = false; //открыть ордер BUY
extern double Lot1 = 0.1; //объем ордера
extern int slippage = 20; //Максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL1,TP1,SL2,TP2,SL3,TP3;
double Lot = Lot1;
double Lot2 = Lot / 2;
double Lot3 = Lot / 2;
//--------------------------------------------------------------------
int start()
{
if (BUY)
{
if (takeprofit1!=0) TP1 = NormalizeDouble(Ask + takeprofit1*Point,Digits); else TP1=0;
if (stoploss1!=0) SL1 = NormalizeDouble(Ask - stoploss1*Point,Digits); else SL1=0;
OPENORDER ("Buy");
}
if (SELL)
{
if (takeprofit1!=0) TP1 = NormalizeDouble(Bid - takeprofit1*Point,Digits); else TP1=0;
if (stoploss1!=0) SL1 = NormalizeDouble(Bid + stoploss1*Point,Digits); else SL1=0;
OPENORDER ("Sell");
}
if (BUY)
{
if (takeprofit2!=0) TP2 = NormalizeDouble(Ask + takeprofit2*Point,Digits); else TP2=0;
if (stoploss2!=0) SL2 = NormalizeDouble(Ask - stoploss2*Point,Digits); else SL2=0;
OPENORDER ("Buy");
}
if (SELL)
{
if (takeprofit2!=0) TP2 = NormalizeDouble(Bid - takeprofit2*Point,Digits); else TP2=0;
if (stoploss2!=0) SL2 = NormalizeDouble(Bid + stoploss2*Point,Digits); else SL2=0;
OPENORDER ("Sell");
}
if (BUY)
{
if (takeprofit3!=0) TP3 = NormalizeDouble(Ask + takeprofit3*Point,Digits); else TP3=0;
if (stoploss3!=0) SL3 = NormalizeDouble(Ask - stoploss3*Point,Digits); else SL3=0;
OPENORDER ("Buy");
}
if (SELL)
{
if (takeprofit3!=0) TP3 = NormalizeDouble(Bid - takeprofit3*Point,Digits); else TP3=0;
if (stoploss3!=0) SL3 = NormalizeDouble(Bid + stoploss3*Point,Digits); else SL3=0;
OPENORDER ("Sell");
}
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int error,err;
while (true)
{ error=true;
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot1,NormalizeDouble(Ask,Digits),slippage,SL1,TP1,"BUY",Magic1,0,Blue);
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot2,NormalizeDouble(Ask,Digits),slippage,SL2,TP2,"BUY",Magic2,0,Blue);
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot3,NormalizeDouble(Ask,Digits),slippage,SL3,TP3,"BUY",Magic3,0,Blue);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot1,NormalizeDouble(Bid,Digits),slippage,SL1,TP1,"SELL",Magic1,0,Red);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot2,NormalizeDouble(Bid,Digits),slippage,SL2,TP2,"SELL",Magic2,0,Red);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot3,NormalizeDouble(Bid,Digits),slippage,SL3,TP3,"SELL",Magic3,0,Red);
if (error==-1) //неудачная покупка OK
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
if (error || err >10) return;
}
return;
}