Как кодировать? - страница 19

 

Спасибо за ваши усилия, Николишен. К сожалению, это не сработало. Он изменяет ордера, но в обе стороны. Я имею в виду, что в ситуации покупки он передвигает стоп вверх по точкам трейла, но он также передвигает его вниз. Мне нужно остановить движение вниз.

 

Я понимаю, что вы имеете в виду, но код правильный. Либо другой советник модифицирует эти ордера, либо в советнике есть другой код, который это делает, потому что это точно не этот код. Вам нужно остановить все другие советники и проверить код основного советника на наличие других вызовов OrderModify().

Удачи =)

Файлы:
 

Спасибо, что уделили время моему бестолковому "я".

единственная другая ордерная модификация в коде - это безубыток и блокировка пипсов. я прикреплю ее.

BEx=количество пунктов для блокировки.

Я проходил через это столько раз, что уверен, что это смотрит прямо на меня, но я не профессионал, в лучшем случае халтурщик.

Еще раз спасибо Николишен!

void DoBE(int byPips)

{

for (int i = 0; i < OrdersTotal(); i++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...

{

if (OrderType() == OP_BUY) if (Bid - OrderOpenPrice() > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) if (OrderStopLoss() != (OrderOpenPrice() + MarketInfo(OrderSymbol(), MODE_POINT))) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + MarketInfo(OrderSymbol(), MODE_POINT)*BEx, OrderTakeProfit(), Red);

if (OrderType() == OP_SELL) if (OrderOpenPrice() - Ask > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) if (OrderStopLoss() != (OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_POINT))) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_POINT)*BEx, OrderTakeProfit(), Red);

}

}

}

О, забыл добавить, это единственный советник. Просто в настоящее время бэктестирую.

 
C.E.O.:
Спасибо, что уделили время моему бестолковому "я"

единственная другая ордерная модификация в коде - это безубыток и блокировка пипсов. я прикреплю ее.

BEx=количество пипсов для фиксации.

Я проходил это столько раз, что уверен, что это смотрит прямо на меня, но я не профессионал, в лучшем случае халтурщик.

Еще раз спасибо Николишен!

void DoBE(int byPips)

{

for (int i = 0; i < OrdersTotal(); i++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...

{

if (OrderType() == OP_BUY) if (Bid - OrderOpenPrice() > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) if (OrderStopLoss() != (OrderOpenPrice() + MarketInfo(OrderSymbol(), MODE_POINT))) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + MarketInfo(OrderSymbol(), MODE_POINT)*BEx, OrderTakeProfit(), Red);

if (OrderType() == OP_SELL) if (OrderOpenPrice() - Ask > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) if (OrderStopLoss() != (OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_POINT))) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_POINT)*BEx, OrderTakeProfit(), Red);

}

}

}[/PHP]

Oh forgot to add, this is the only EA. Just currently backtesting.

Вероятно, происходит то, что одна фукция обнуляет другую. Вам нужно проверить логику так, чтобы только одна функция работала одновременно.

[PHP]void DoBE(int byPips)

{

for (int i = 0; i < OrdersTotal(); i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName))) ) // смотрим только если mygrid и symbol...

{

if (OrderType() == OP_BUY)

{

if (Bid - OrderOpenPrice() > byPips * MarketInfo(OrderSymbol(), MODE_POINT))

{

if (OrderStopLoss() != (OrderOpenPrice() + MarketInfo(OrderSymbol(), MODE_POINT))))

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + MarketInfo(OrderSymbol(), MODE_POINT)*BEx, OrderTakeProfit(), Red);

}

}

}

if (OrderType() == OP_SELL)

{

if (OrderOpenPrice() - Ask > byPips * MarketInfo(OrderSymbol(), MODE_POINT))

{

if (OrderStopLoss() != (OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_POINT))))

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_POINT)*BEx, OrderTakeProfit(), Red);

}

}

}

}

}

return;

}
 

Проверка команд/кода MQL4

Сообщение удалено. Извините за неудобства.

 

Код для 'Allow live trading'

Здравствуйте, для работы советника нам необходимо включить опцию "Разрешить торговлю в реальном времени", поэтому вместо того, чтобы постоянно отмечать ее при загрузке советника, какую строку кода я должен добавить, чтобы автоматически включить эту опцию в советнике?

Спасибо

 

Вам не нужен код для этого...

matrixebiz:
Здравствуйте, чтобы советник работал, мы должны включить опцию "Разрешить торговлю в реальном времени", поэтому вместо того, чтобы постоянно отмечать ее при загрузке советника, какую строку кода я должен добавить, чтобы эта опция автоматически включалась в советнике? Спасибо

Hallo Matrixebiz,

Вы можете сделать это легко, зайдя в меню MetaTrader. Перейдите в "Инструменты", затем "Опции" (или просто наберите CRTL-O). Затем, на вкладке "Советник", отметьте опцию "Разрешить торговлю в реальном времени". Вот так, все советники, которые вы подключите после этого, будут разрешены для торговли в реальном времени.

-RJ1-

 

О, хорошо, это было легко Спасибо.

 

Временной код эксперта

Мне нужен временной код советника. Например, чтобы он позволял торговать только с 18:00 до 1:00. Возможно ли это?

 

Нашел следующее

if (UseHourTrade){

if(!(Hour()>=FromHourTrade&&Hour()<=ToHourTrade)){

Comment("Неторговые часы!");

return(0);

Один вопрос:

Он использует время моего форекс брокера: Да или Нет?

Я думаю да, но я хочу быть уверен.

И как я могу поставить там минуты, например 15:30? Есть только часы?

Причина обращения: