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

 

Ваша система звучит немного безумно......

extern double Lots=0.1;

extern int TP=50;

extern int SL=50;

extern int timeframe=1;

extern bool close=false;

extern int Slippage=2;

extern int Magic=46151;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

datetime LastTradeTime = 0;

int start()

{

int time=60*timeframe;

if(LocalTime()-LastTradeTime > time) {

if(close==true) {

if(OrdersTotal()!=0) {

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

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderType()==OP_SELL && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }

if(OrderType()==OP_BUY && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, Red ); }

} } }

OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask - SL * Point, Ask + TP * Point, NULL, Magic, 0, Green);

OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Bid + SL * Point, Bid - TP * Point, NULL, Magic, 0, Red);

LastTradeTime = LocalTime(); }

return(0);

}

Если "close" - true, то она закроет открытые ордера в конце таймфрейма (в данном случае 1 минута). SL/TP=100 означает 10 пипсов у 5-значного брокера.

Кстати, я не уверен, что он откроет оба ордера немедленно.

Возможно ли закрыть и открыть (или открыть 2 позиции) в одно и то же время?

Конечно, это прекрасно работает в бэктестах, но я не знаю, работает ли это на демо/живом счете.

 

Я НИКОГДА не мог заставить это работать ни с одним брокером...

Я добавил задержки и код подтверждения, чтобы проверить, были ли ордера закрыты и открыты, если нет, попробуйте снова.

даже после этого, все еще не работает правильно последовательно

 

Похоже, что это проблема для многих стратегий. Есть ли кто-нибудь, кто нашел решение этой проблемы?

 

проблема с трейлинг-стопом

У меня есть йеновые пары, которые, когда я пытаюсь использовать трейлинг-стоп, перемещают мою цену в "ноль" после выхода в прибыль. Может ли кто-нибудь сказать мне, почему это происходит и как это исправить? Трейл-ордер отлично работает на пятизначных валютах.

void TrailOrder(int type)

{

if(TrailingStop>0)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Point*TrailingStop),OrderTakeProfit(),0,Green);

}

}

}

if(type==OP_SELL)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(Point*TrailingStop),OrderTakeProfit(),0,Red);

}

}

}

}

}

}

 
ajk:
У меня есть йеновые пары, которые, когда я пытаюсь использовать трейлинг-стоп, перемещают мою цену в "ноль" после выхода в прибыль. Может ли кто-нибудь сказать мне, почему это происходит и как это исправить? Трейл-ордер отлично работает на 5-значных валютах.

Я думаю (это только мое мнение), что это потому, что у вас есть функция, и эта функция ничего не знает о OrderOpenPrice(), OrderStopLoss() и т.д. Вам лучше поместить этот код внутрь цикла.

 
ajk:
У меня есть иеновые пары, которые, когда я пытаюсь использовать трейлинг-стоп, перемещают мою цену в "ноль" после выхода в прибыль. Может ли кто-нибудь сказать мне, почему это происходит и как это исправить? Трейл-ордер отлично работает на пятизначных валютах.

Возможно, усердное использование NormalizeDouble(...) изменит ситуацию?

 

как закодировать пересечение двух индикаторов с разными шкалами

как закодировать пересечение двух индикаторов с разными шкалами?

мне нужна помощь

 

Я попробую все. Это странно, потому что coder guru закодировал ea, а я модифицировал. Я просмотрел тонны ea и не могу ничего найти.

 

подскажите, как написать код после

void TrailOrder(int type)

вызывающей функцию?

Может быть, убрать функцию полностью и использовать внешнее e в трейлинге ea...argh>!

 
ajk:
есть предложения, как написать код после

void TrailOrder(int type)

вызывающая функция?

Может быть, убрать функцию полностью и использовать внешнее e в конце ea...argh>!

Если хотите, я могу исправить ваш советник. Пришлите мне его в PM.