dazamate: Да, просто перечитал ваш комментарий еще раз, и то, что я сделал, неправильно, не даст мне время открытия бара, нужно ли мне использовать Time[0]?
Приятель, ты мне очень помог, я наконец-то привел ea в состояние, в котором я могу начать настраивать стратегию. Большое спасибо, но я сомневаюсь, что вы слышали обо мне в последний раз, жаль говорить, хаха.
Я добавил некоторый код, который будет отслеживать стоплосс от значения скользящей средней. Код хорошо работает на сделках на покупку, но не работает на продажу. Я не могу ничего заметить, может вы, ребята, сможете.
// Trailing Stop Code if(Tradeopen()==true && emastoptrail==TRUE) // Trades are open and Trailing stop feature is turned on
{
for(int tnumber2 = OrdersTotal()-1; tnumber2 >= 0 ; tnumber2--) //scan through open orders
{
if (OrderSelect(tnumber2, SELECT_BY_POS) &&
OrderMagicNumber()==Mnumber3) // The orders magic number is the same as the magic number used the profit trade
{
if(OrderType()==OP_BUY && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) > OrderStopLoss() )) // The stop loss is less than the moving average value
{
OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0); // Modify Stop to MA value
}
if(OrderType()==OP_SELL && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) < OrderStopLoss() )) // The stop loss is more than the moving average value
{
OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0); // Modify Stop to MA value
}
}
}
}
Возможно, проблема не в коде трейлинг-стопа. Есть проблема с кодом, который удаляет отложенные ордера через определенное время...
// DELETE PENDING ORDERS THAT HAVE NOT BEEN TRIGGERED WITHIN ' int = pendinglimit'if((iBarShift(Symbol(),60 ,tradeopened)>pendinglimit) && Tradeopen()==true) // Check to see if pending orders have expired
{
for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--) //scan through open orders
{
if (OrderSelect(tnumber, SELECT_BY_POS) &&
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3))) // The orders magic number is the same as the magic number used in this ea
{
OrderDelete(OrderTicket( ) ); // Delete it
}
}
}
После открытия каждой сделки я также запускаю это...
tradeopened = TimeHour(TimeCurrent());
Я комментирую ...
(iBarShift(Symbol(),60 ,tradeopened)
и он начинает с 1000 и просто продолжает считать на каждом новом баре и не сбрасывается, когда я запускаю ...
tradeopened = TimeHour(TimeCurrent());
Это делает проверку на удаление отложенных ордеров всегда истинной, и если сделка не срабатывает в течение следующего бара, отложенный ордер сразу удаляется -__-.
Я изменил его так, что еще одной проверкой для удаления сделки было смещение времени назад на максимально допустимое время открытия отложенного ордера и посмотреть, совпадает ли оно со временем открытия сделки :)
for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--) //scan through open orders
{
if (OrderSelect(tnumber, SELECT_BY_POS) &&
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) && // The orders magic number is the same as the magic number used in this ea
(iTime( Symbol(), 60, pendinglimit) == tradeopened))
{
OrderDelete( OrderTicket() ); // Delete it
}
}
Я изменил его так, что еще одна проверка для удаления сделки заключалась в том, чтобы сдвинуть время назад на максимально допустимое время открытия отложенного ордера и посмотреть, совпадает ли оно со временем открытия сделки :)
У вас почти получилось что-то похожее на то, что я себе представлял....
Есть проблема с использованием вашей переменной tradeopened ... если есть открытые сделки и советник выключается, вы теряете информацию в этой переменной ... почему бы не заменить ее на OrderOpenTime( ) и сделать что-то вроде этого ....
for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--) //scan through open orders
{
if (OrderSelect(tnumber, SELECT_BY_POS) &&
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) && // The orders magic number is the same as the magic number used in this ea
(iBarShift(OrderSymbol(),PERIOD_H1 ,OrderOpenTime()) - pendinglimit) <= 0)); // <----------- this . . .
{
OrderDelete( OrderTicket() ); // Delete it
}
}
Также raptor мне нужно снова поковырять ваш мозг.... :)
Есть ли способ превратить значение скользящей средней в градусы? Я просто гуглю сейчас, чтобы посмотреть, смогу ли я найти какой-нибудь математический форум. Так было бы легче определять боковые рынки и четкие тренды вверх и вниз.
Да, просто перечитал ваш комментарий еще раз, и то, что я сделал, неправильно,
не даст мне время открытия бара, нужно ли мне использовать Time[0]?
Да, или...
Это исправил Раптор.
---------> http://clip2net.com/s/14aYs
Это исправил Раптор.
---------> http://clip2net.com/s/14aYs
Приятель, ты мне очень помог, я наконец-то привел ea в состояние, в котором я могу начать настраивать стратегию. Большое спасибо, но я сомневаюсь, что вы слышали обо мне в последний раз, жаль говорить, хаха.
Также большое спасибо WHRoederИтак... вы думали, что все кончено lol
Я добавил некоторый код, который будет отслеживать стоплосс от значения скользящей средней. Код хорошо работает на сделках на покупку, но не работает на продажу. Я не могу ничего заметить, может вы, ребята, сможете.
Возможно, проблема не в коде трейлинг-стопа. Есть проблема с кодом, который удаляет отложенные ордера через определенное время...
После открытия каждой сделки я также запускаю это...
Я комментирую ...
и он начинает с 1000 и просто продолжает считать на каждом новом баре и не сбрасывается, когда я запускаю ...
Это делает проверку на удаление отложенных ордеров всегда истинной, и если сделка не срабатывает в течение следующего бара, отложенный ордер сразу удаляется -__-.
Ааааа HELP lol
Я думаю, что я, возможно, исправил это ....
Я изменил его так, что еще одной проверкой для удаления сделки было смещение времени назад на максимально допустимое время открытия отложенного ордера и посмотреть, совпадает ли оно со временем открытия сделки :)
Я думаю, что, возможно, я исправил это ....
Я изменил его так, что еще одна проверка для удаления сделки заключалась в том, чтобы сдвинуть время назад на максимально допустимое время открытия отложенного ордера и посмотреть, совпадает ли оно со временем открытия сделки :)
У вас почти получилось что-то похожее на то, что я себе представлял....
Есть проблема с использованием вашей переменной tradeopened ... если есть открытые сделки и советник выключается, вы теряете информацию в этой переменной ... почему бы не заменить ее на OrderOpenTime( ) и сделать что-то вроде этого ....
Также raptor мне нужно снова поковырять ваш мозг.... :)
Есть ли способ превратить значение скользящей средней в градусы? Я просто гуглю сейчас, чтобы посмотреть, смогу ли я найти какой-нибудь математический форум. Так было бы легче определять боковые рынки и четкие тренды вверх и вниз.