Любые вопросы новичков по 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 sticket, bticket;
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(NULL, Timeframe_Moving_minutes, 5, 0, MODE_SMA, PRICE_CLOSE, 0) < iMA(NULL, Timeframe_Moving_minutes, 5, 0, MODE_SMA, PRICE_CLOSE, 1)&&iMA(NULL, Timeframe_Moving_minutes, 5, 0, MODE_SMA, PRICE_CLOSE, 1) > iMA(NULL, Timeframe_Moving_minutes, 5, 0, MODE_SMA, PRICE_CLOSE, 2))
{
isSellSignal = true;
isBuySignal = false;
}
else if (
iMA(NULL, Timeframe_Moving_minutes, 5, 0, MODE_SMA, PRICE_CLOSE, 0) > iMA(NULL, Timeframe_Moving_minutes, 5, 0, MODE_SMA, PRICE_CLOSE, 1)&&iMA(NULL, Timeframe_Moving_minutes, 5, 0, MODE_SMA, PRICE_CLOSE, 1) < iMA(NULL, Timeframe_Moving_minutes, 5, 0, MODE_SMA, PRICE_CLOSE, 2))
{
isBuySignal = true;
isSellSignal = false;
}
else
{
isBuySignal = false;
isSellSignal = false;
}

if (
lossCount < 4)
{
if (
isSellSignal)
{
Print(
"Нет открытых ордеров - открываем на продажу");
sticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 0, Bid + StopLoss * Point, Bid - Point * TakeProfit, ordcomment, 0, 0, Yellow);
if (
sticket == -1)
{
Print(
"Не могу открыть ордер: ошибка #", GetLastError());
}
else
{
if (
OrderSelect(0, SELECT_BY_POS, MODE_TRADES))
{
GlobalVariableSet("Lots", OrderLots());
bticket = OrderSend(Symbol(), OP_BUYSTOP, openlots(), OrderStopLoss(), 0, OrderStopLoss() + 2 * (OrderOpenPrice() - OrderStopLoss()), OrderStopLoss() - 2 * (OrderOpenPrice() - OrderStopLoss()), ordcomment, 0, 0, Magenta);
if (
bticket == -1)
{
Print(
"Не могу открыть отложенный ордер: ошибка #", GetLastError());
}
}
}
}
else if (
isBuySignal)
{
Print(
"Нет открытых ордеров - открываем на покупку");
bticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 0, Ask - StopLoss * Point, Ask + TakeProfit * Point, ordcomment, 0, 0, Yellow);
if (
bticket == -1)
{
Print(
"Не могу открыть ордер: ошибка #", GetLastError());
}
else
{
if (
OrderSelect(0, SELECT_BY_POS, MODE_TRADES))
{
GlobalVariableSet("Lots", OrderLots());
sticket = OrderSend(Symbol(), OP_SELLSTOP, openlots(), OrderStopLoss(), 0, OrderStopLoss() - 2 * (OrderStopLoss() - OrderOpenPrice()), OrderStopLoss() + 2 * (OrderStopLoss() - OrderOpenPrice()), ordcomment, 0, 0, Magenta);
if (
sticket == -1)
{
Print(
"Не могу открыть отложенный ордер: ошибка #", GetLastError());
}
}
}
}
}
else
{
if (
isSellSignal)
{
Print(
"Открываем ордер на продажу в том же направлении, что и до этого");
if (
isReversed)
{
sticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 0, Bid + StopLoss * Point, Bid - Point * TakeProfit, ordcomment, 0, 0, Yellow);
}
else
{
bticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 0, Ask - StopLoss * Point, Ask + TakeProfit * Point, ordcomment, 0, 0, Yellow);
}
}
else if (
isBuySignal)
{
Print(
"Открываем ордер на покупку в том же направлении, что и до этого");
if (
isReversed)
{
bticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 0, Ask - StopLoss * Point, Ask + TakeProfit * Point, ordcomment, 0, 0, Yellow);
}
else
{
sticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 0, Bid + StopLoss * Point, Bid - Point * TakeProfit, ordcomment, 0, 0, Yellow);
}
}
if (
sticket == -1 || bticket == -1)
{
Print(
"Не могу открыть ордер: ошибка #", GetLastError());
}
else
{
if (
OrderSelect(0, SELECT_BY_POS, MODE_TRADES))
{
GlobalVariableSet("Lots", OrderLots());
}
}
}
}

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

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

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

return(0);
}

double openlots()
{
return(
2 * Lots + 0 + NormalizeDouble(GlobalVariableGet("Lots"), 3));
}

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

darirunu1 #:

....

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

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

 

 
Vitaly Muzichenko #:

 

Извините это что Вы написали?

 
darirunu1 #:

Извините это что Вы написали?

Это чтобы вы научились причёсывать код

А вот ещё чтобы вы научились вставлять код


 

Добрый вечер!

Помогите, пожалуйста!

Впервые столкнулся с таким казусом.

Вносил изменения в индикаторы. Откомпилировал. Закрыл редактор. Закрыл терминал.

Открыл терминал.

В терминале открываю Навигатор, кликаю по папке «МА» (moving average) - она открывается. А там всего несколько папок и пару индикаторов. А куда делись все остальные индикаторы? А у меня их было, наверное, свыше сотни. Неприятно!

Открываю каталог данных – а там в папке «МА» все индикаторы в наличии, все на месте.

Опять закрыл терминал – открыл.

Ничего не изменилось.

Вопрос – почему индикаторы не отражаются в навигаторе? Хотя в каталоге данных они присутствуют.

Спасибо!

Файлы:
 

Добрый день!

И второй вопрос – почему в каталоге данных папки отображаются как папки, а в навигаторе, эти же папки, отображаются как значок индикатора?

См. в аттаче

Может быть здесь и кроется причина непонятки в моем посте выше

Спасибо!

Файлы:
 
Kedrov # :

Добрый день!

И второй вопрос – почему в каталоге данных папки отображаются как папки, а в навигаторе, эти же папки, отображаются как значок индикатора?

См. в аттаче

Может быть здесь и кроется причина непонятки в моем посте выше

Спасибо!

Точно не в этом проблема.

 
Alexey Viktorov #:

Точно не в этом проблема.

Хорошо, что есть такая уверенность.

Так в чем же проблема тогда?

Спасибо!

 
Kedrov #:

Хорошо, что есть такая уверенность.

Так в чем же проблема тогда?

Спасибо!

Уверенность потому, что это всего лишь картинка. Хотите поставьте вот такую