Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2459

 
extern double Lots 0.01;
extern int TakeProfit 20;
extern int StopLoss 20;
extern double P1 0.01;
extern int Timeframe_Moving_minutes 5;
extern bool Hand_Open_Order true;
extern double Kontrol 0.03;
int lossCount 0;
bool isReversed false;
string ordcomment "Auto Trade";
int sticketbticket;
double spread MarketInfo(Symbol(), MODE_SPREAD) * Point;
bool isBuySignal false;
bool isSellSignal false;

int init()
{
GlobalVariableSet("Lots"Lots);
return(
0);
}
Ошибок при компиляции не выдает, но ограничения не срабатываю. Открываются несколько сделок в одном направлении. Помогите пожалуйста исправит код.
int start()
{
// ... (остальной код)

if (!Hand_Open_Order)
{
if (
iMA(NULLTimeframe_Moving_minutes50MODE_SMAPRICE_CLOSE0) < iMA(NULLTimeframe_Moving_minutes50MODE_SMAPRICE_CLOSE1)&&iMA(NULLTimeframe_Moving_minutes50MODE_SMAPRICE_CLOSE1) > iMA(NULLTimeframe_Moving_minutes50MODE_SMAPRICE_CLOSE2))
{
isSellSignal true;
isBuySignal false;
}
else if (
iMA(NULLTimeframe_Moving_minutes50MODE_SMAPRICE_CLOSE0) > iMA(NULLTimeframe_Moving_minutes50MODE_SMAPRICE_CLOSE1)&&iMA(NULLTimeframe_Moving_minutes50MODE_SMAPRICE_CLOSE1) < iMA(NULLTimeframe_Moving_minutes50MODE_SMAPRICE_CLOSE2))
{
isBuySignal true;
isSellSignal false;
}
else
{
isBuySignal false;
isSellSignal false;
}

if (
lossCount 4)
{
if (
isSellSignal)
{
Print(
"Нет открытых ордеров - открываем на продажу");
sticket OrderSend(Symbol(), OP_SELLLotsBid0Bid StopLoss PointBid Point TakeProfitordcomment00Yellow);
if (
sticket == -1)
{
Print(
"Не могу открыть ордер: ошибка #"GetLastError());
}
else
{
if (
OrderSelect(0SELECT_BY_POSMODE_TRADES))
{
GlobalVariableSet("Lots"OrderLots());
bticket OrderSend(Symbol(), OP_BUYSTOPopenlots(), OrderStopLoss(), 0OrderStopLoss() + * (OrderOpenPrice() - OrderStopLoss()), OrderStopLoss() - * (OrderOpenPrice() - OrderStopLoss()), ordcomment00Magenta);
if (
bticket == -1)
{
Print(
"Не могу открыть отложенный ордер: ошибка #"GetLastError());
}
}
}
}
else if (
isBuySignal)
{
Print(
"Нет открытых ордеров - открываем на покупку");
bticket OrderSend(Symbol(), OP_BUYLotsAsk0Ask StopLoss PointAsk TakeProfit Pointordcomment00Yellow);
if (
bticket == -1)
{
Print(
"Не могу открыть ордер: ошибка #"GetLastError());
}
else
{
if (
OrderSelect(0SELECT_BY_POSMODE_TRADES))
{
GlobalVariableSet("Lots"OrderLots());
sticket OrderSend(Symbol(), OP_SELLSTOPopenlots(), OrderStopLoss(), 0OrderStopLoss() - * (OrderStopLoss() - OrderOpenPrice()), OrderStopLoss() + * (OrderStopLoss() - OrderOpenPrice()), ordcomment00Magenta);
if (
sticket == -1)
{
Print(
"Не могу открыть отложенный ордер: ошибка #"GetLastError());
}
}
}
}
}
else
{
if (
isSellSignal)
{
Print(
"Открываем ордер на продажу в том же направлении, что и до этого");
if (
isReversed)
{
sticket OrderSend(Symbol(), OP_SELLLotsBid0Bid StopLoss PointBid Point TakeProfitordcomment00Yellow);
}
else
{
bticket OrderSend(Symbol(), OP_BUYLotsAsk0Ask StopLoss PointAsk TakeProfit Pointordcomment00Yellow);
}
}
else if (
isBuySignal)
{
Print(
"Открываем ордер на покупку в том же направлении, что и до этого");
if (
isReversed)
{
bticket OrderSend(Symbol(), OP_BUYLotsAsk0Ask StopLoss PointAsk TakeProfit Pointordcomment00Yellow);
}
else
{
sticket OrderSend(Symbol(), OP_SELLLotsBid0Bid StopLoss PointBid Point TakeProfitordcomment00Yellow);
}
}
if (
sticket == -|| bticket == -1)
{
Print(
"Не могу открыть ордер: ошибка #"GetLastError());
}
else
{
if (
OrderSelect(0SELECT_BY_POSMODE_TRADES))
{
GlobalVariableSet("Lots"OrderLots());
}
}
}
}

// ... (остальной код)

if (OrderSelect(0SELECT_BY_POSMODE_TRADES))
{
if (
OrderProfit() >= 0.0)
{
lossCount 0;
isReversed false;
}
else
{
lossCount++;
isReversed true;
}
}

// ... (остальной код)

return(0);
}

double openlots()
{
return(
Lots NormalizeDouble(GlobalVariableGet("Lots"), 3));
}

int deinit()
{
Comment("");
return(
0);
}
 

darirunu1 #:

....

примерно так выглядит мат на MQL :-)

 
darirunu1 #:
extern double Lots 0.01;
extern int TakeProfit 20;
...
{
Comment("");
return(
0);
}